@hiro5409/attio-cli 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"cli-CLfvqLdQ.mjs","names":[],"sources":["../src/errors.ts","../src/types/attio/core/bodySerializer.gen.ts","../src/types/attio/core/params.gen.ts","../src/types/attio/core/serverSentEvents.gen.ts","../src/types/attio/core/pathSerializer.gen.ts","../src/types/attio/core/utils.gen.ts","../src/types/attio/core/auth.gen.ts","../src/types/attio/client/utils.gen.ts","../src/types/attio/client/client.gen.ts","../src/api/client.ts","../src/commands/operation.ts","../src/types/attio/client.gen.ts","../src/types/attio/sdk.gen.ts","../src/types/attio/commands.gen.ts","../src/cli.ts"],"sourcesContent":["import * as v from \"valibot\";\n\ntype CliErrorCode =\n | \"API_ERROR\"\n | \"AUTH_REQUIRED\"\n | \"BAD_REQUEST\"\n | \"FORBIDDEN\"\n | \"INVALID_ARGUMENT\"\n | \"NETWORK_ERROR\"\n | \"NOT_FOUND\"\n | \"RATE_LIMITED\"\n | \"UNAUTHORIZED\";\n\ntype CliErrorOptions = {\n /** The error type and code Attio reported, kept so callers can branch on Attio's own vocabulary. */\n attio?: { code?: string; type?: string };\n code: CliErrorCode;\n exitCode: number;\n hint?: string;\n status?: number;\n};\n\nexport class CliError extends Error {\n readonly options: CliErrorOptions;\n\n constructor(message: string, options: CliErrorOptions) {\n super(message);\n this.name = \"CliError\";\n this.options = options;\n }\n}\n\nconst AttioErrorBody = v.object({\n code: v.optional(v.string()),\n message: v.optional(v.string()),\n type: v.optional(v.string()),\n});\n\nconst HTTP_FAILURES: Record<number, Pick<CliErrorOptions, \"code\" | \"exitCode\" | \"hint\">> = {\n 400: {\n code: \"BAD_REQUEST\",\n exitCode: 2,\n hint: \"Correct the options or the body against the operation's page in Attio's API reference.\",\n },\n 401: {\n code: \"UNAUTHORIZED\",\n exitCode: 2,\n hint: \"Set ATTIO_ACCESS_TOKEN to a valid Attio access token.\",\n },\n 403: {\n code: \"FORBIDDEN\",\n exitCode: 3,\n hint: \"Attio's message names what is missing: a scope on the token, access to the resource, or a plan that allows the operation.\",\n },\n 404: { code: \"NOT_FOUND\", exitCode: 1 },\n 429: { code: \"RATE_LIMITED\", exitCode: 4, hint: \"Wait before running the command again.\" },\n};\n\n/** Turns an HTTP failure and the body Attio sent with it into a CLI error. */\nexport function httpError(status: number, body: unknown): CliError {\n const parsed = v.safeParse(AttioErrorBody, body);\n const { code, message, type } = parsed.success ? parsed.output : {};\n return new CliError(message || `Attio returned HTTP ${status}.`, {\n ...(HTTP_FAILURES[status] ?? { code: \"API_ERROR\", exitCode: 1 }),\n attio: { code, type },\n status,\n });\n}\n\n/** Describes a command line that the CLI cannot act on. */\nexport function usageError(message: string): CliError {\n return new CliError(message, { code: \"INVALID_ARGUMENT\", exitCode: 2 });\n}\n\n/** Describes a request that never produced a response from Attio. */\nexport function networkError(cause: unknown): CliError {\n const detail = cause instanceof Error && cause.message ? ` (${cause.message})` : \"\";\n return new CliError(`Could not reach Attio${detail}.`, {\n code: \"NETWORK_ERROR\",\n exitCode: 1,\n hint: \"Check the network connection. A write may have reached Attio, so check before retrying.\",\n });\n}\n\n/** Writes the failure to stderr as JSON and returns the process exit code. */\nexport function reportError(error: unknown): number {\n // Gunshi collects every problem with the command line into one AggregateError.\n if (error instanceof AggregateError) {\n const messages = error.errors.map((item) =>\n item instanceof Error ? item.message : String(item),\n );\n return reportError(\n usageError(messages.filter(Boolean).join(\"; \") || \"Invalid command arguments.\"),\n );\n }\n if (error instanceof CliError) {\n const { exitCode, ...details } = error.options;\n console.error(JSON.stringify({ error: { ...details, message: error.message } }, null, 2));\n return exitCode;\n }\n const message = error instanceof Error ? error.message : String(error);\n console.error(JSON.stringify({ error: { code: \"UNEXPECTED\", message } }, null, 2));\n return 1;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from \"./pathSerializer.gen\";\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: unknown) => unknown;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === \"string\" || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === \"string\") {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: (body: unknown): FormData => {\n const data = new FormData();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: (body: unknown): string =>\n JSON.stringify(body, (_key, value) => (typeof value === \"bigint\" ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body: unknown): string => {\n const data = new URLSearchParams();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\ntype Slot = \"body\" | \"headers\" | \"path\" | \"query\";\n\nexport type Field =\n | {\n in: Exclude<Slot, \"body\">;\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If omitted, we use the same value as `key`.\n */\n map?: string;\n }\n | {\n in: Extract<Slot, \"body\">;\n /**\n * Key isn't required for bodies.\n */\n key?: string;\n map?: string;\n }\n | {\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If `in` is omitted, `map` aliases `key` to the transport layer.\n */\n map: Slot;\n };\n\nexport interface Fields {\n allowExtra?: Partial<Record<Slot, boolean>>;\n args?: ReadonlyArray<Field>;\n}\n\nexport type FieldsConfig = ReadonlyArray<Field | Fields>;\n\nconst extraPrefixesMap: Record<string, Slot> = {\n $body_: \"body\",\n $headers_: \"headers\",\n $path_: \"path\",\n $query_: \"query\",\n};\nconst extraPrefixes = Object.entries(extraPrefixesMap);\n\ntype KeyMap = Map<\n string,\n | {\n in: Slot;\n map?: string;\n }\n | {\n in?: never;\n map: Slot;\n }\n>;\n\nfunction buildKeyMap(fields: FieldsConfig, map?: KeyMap): KeyMap {\n if (!map) {\n map = new Map();\n }\n\n for (const config of fields) {\n if (\"in\" in config) {\n if (config.key) {\n map.set(config.key, {\n in: config.in,\n map: config.map,\n });\n }\n } else if (\"key\" in config) {\n map.set(config.key, {\n map: config.map,\n });\n } else if (config.args) {\n buildKeyMap(config.args, map);\n }\n }\n\n return map;\n}\n\ninterface Params {\n body?: unknown;\n headers: Record<string, unknown>;\n path: Record<string, unknown>;\n query: Record<string, unknown>;\n}\n\nfunction stripEmptySlots(params: Params): void {\n for (const [slot, value] of Object.entries(params)) {\n if (slot === \"body\") continue;\n if (value && typeof value === \"object\" && !Array.isArray(value) && !Object.keys(value).length) {\n delete params[slot as Slot];\n }\n }\n}\n\nexport function buildClientParams(args: ReadonlyArray<unknown>, fields: FieldsConfig): Params {\n const params: Params = {\n headers: Object.create(null),\n path: Object.create(null),\n query: Object.create(null),\n };\n\n const map = buildKeyMap(fields);\n\n function writeSlot(slot: Slot, key: string, value: unknown): void {\n let record = params[slot] as Record<string, unknown> | undefined;\n if (record === undefined) {\n record = Object.create(null) as Record<string, unknown>;\n params[slot] = record;\n }\n record[key] = value;\n }\n\n let config: FieldsConfig[number] | undefined;\n\n for (const [index, arg] of args.entries()) {\n if (fields[index]) {\n config = fields[index];\n }\n\n if (!config) {\n continue;\n }\n\n if (\"in\" in config) {\n if (config.key) {\n const field = map.get(config.key)!;\n const name = field.map || config.key;\n if (field.in) {\n writeSlot(field.in, name, arg);\n }\n } else {\n params.body = arg;\n }\n } else {\n for (const [key, value] of Object.entries(arg ?? {})) {\n const field = map.get(key);\n\n if (field) {\n if (field.in) {\n const name = field.map || key;\n writeSlot(field.in, name, value);\n } else {\n params[field.map] = value;\n }\n } else {\n const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix));\n\n if (extra) {\n const [prefix, slot] = extra;\n writeSlot(slot, key.slice(prefix.length), value);\n } else if (\"allowExtra\" in config && config.allowExtra) {\n for (const [slot, allowed] of Object.entries(config.allowExtra)) {\n if (allowed) {\n writeSlot(slot as Slot, key, value);\n break;\n }\n }\n }\n }\n }\n }\n }\n\n stripEmptySlots(params);\n\n return params;\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","import ky, { isHTTPError, type RetryOptions } from \"ky\";\n\nimport { CliError, httpError, networkError } from \"../errors.ts\";\nimport { type Client, createClient } from \"../types/attio/client/index.ts\";\n\nexport type Environment = Record<string, string | undefined>;\n\n/** The methods Ky does not repeat by default, because repeating them is not safe in general. */\nconst WRITE_METHODS = new Set([\"PATCH\", \"POST\"]);\n\n/** Attio does not process a rate-limited request, so that is the one failure after which a write is repeated. */\nconst writeRetry: RetryOptions = {\n methods: [\"patch\", \"post\"],\n shouldRetry: ({ error }) => isHTTPError(error) && error.response.status === 429,\n};\n\n/** Sends a request through Ky for its timeout and its retries. */\nasync function transport(...input: Parameters<typeof fetch>): Promise<Response> {\n const request = new Request(...input);\n const pending = ky(request, WRITE_METHODS.has(request.method) ? { retry: writeRetry } : {});\n // Ky's timeout covers a body only when Ky reads it, so the body is read here and handed on whole.\n const [response, body] = await Promise.all([pending, pending.text()]);\n return new Response(body || null, response);\n}\n\nexport function attioClient(env: Environment): Client {\n const accessToken = env.ATTIO_ACCESS_TOKEN?.trim();\n if (!accessToken) {\n throw new CliError(\"No Attio access token is configured.\", {\n code: \"AUTH_REQUIRED\",\n exitCode: 2,\n hint: \"Set ATTIO_ACCESS_TOKEN to an Attio access token.\",\n });\n }\n\n const client = createClient({\n auth: accessToken,\n baseUrl: \"https://api.attio.com\",\n fetch: transport,\n throwOnError: true,\n });\n client.interceptors.error.use((error, response) => {\n // Ky raises HTTP failures itself once its retries run out, with Attio's body already parsed.\n if (isHTTPError(error)) return httpError(error.response.status, error.data);\n return response ? error : networkError(error);\n });\n return client;\n}\n","import { type Args, define } from \"gunshi\";\n\nimport { attioClient, type Environment } from \"../api/client.ts\";\nimport { usageError } from \"../errors.ts\";\nimport type { Client } from \"../types/attio/client/index.ts\";\n\ntype OperationOption = {\n description: string;\n in: \"path\" | \"query\";\n name: string;\n required: boolean;\n type: \"boolean\" | \"integer\" | \"string\";\n};\n\ntype OperationDetails = {\n body: \"none\" | \"optional\" | \"required\";\n description: string;\n options: readonly OperationOption[];\n};\n\ntype OperationInput = {\n body?: unknown;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n};\n\n/** One Attio API operation, ready to run against input taken from the command line. */\nexport type Operation = OperationDetails & {\n run: (client: Client, input: OperationInput) => Promise<unknown>;\n};\n\n/**\n * Wraps an SDK function so every operation runs the same way. Command-line input has no static\n * type, and Attio is what validates it.\n */\nexport function operation(\n definition: OperationDetails & {\n // `never` admits every SDK function, whatever options it declares.\n call: (options: never) => Promise<{ data: unknown }>;\n },\n): Operation {\n const { call, ...details } = definition;\n return {\n ...details,\n run: async (client, input) => {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- command-line input has no static type; Attio validates it\n const { data } = await call({ ...input, client } as never);\n return data;\n },\n };\n}\n\nconst ARGUMENT_TYPES = { boolean: \"boolean\", integer: \"number\", string: \"string\" } as const;\n\nfunction optionName(parameter: string): string {\n return parameter.replaceAll(\"_\", \"-\");\n}\n\nfunction parseBody(text: string): unknown {\n try {\n return JSON.parse(text);\n } catch {\n throw usageError(\"--body must be valid JSON.\");\n }\n}\n\n/** Builds the CLI command that runs one operation with the options given on the command line. */\nexport function operationCommand(name: string, source: Operation, env: Environment) {\n const args: Args = {};\n for (const option of source.options) {\n args[optionName(option.name)] = {\n description: option.description,\n required: option.required || undefined,\n type: ARGUMENT_TYPES[option.type],\n };\n }\n if (source.body !== \"none\") {\n args.body = {\n description: \"Request body as JSON\",\n required: source.body === \"required\" || undefined,\n type: \"string\",\n };\n }\n\n return define({\n name,\n description: source.description,\n args,\n run: async (ctx) => {\n const values: Record<string, unknown> = ctx.values;\n const input: OperationInput = {};\n for (const option of source.options) {\n const value = values[optionName(option.name)];\n if (value !== undefined) (input[option.in] ??= {})[option.name] = value;\n }\n if (typeof values.body === \"string\") input.body = parseBody(values.body);\n return JSON.stringify(await source.run(attioClient(env), input), null, 2);\n },\n });\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> = (\n override?: Config<ClientOptions & T>,\n) => Config<Required<ClientOptions> & T>;\n\nexport const client: Client = createClient(\n createConfig<ClientOptions2>({ baseUrl: \"https://api.attio.com\", throwOnError: true }),\n);\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport {\n type Client,\n type ClientMeta,\n formDataBodySerializer,\n type Options as Options2,\n type RequestResult,\n type TDataShape,\n} from \"./client\";\nimport { client } from \"./client.gen\";\nimport type {\n DeleteV2ActivitiesByActivityData,\n DeleteV2ActivitiesByActivityErrors,\n DeleteV2ActivitiesByActivityRecordsByRecordIdData,\n DeleteV2ActivitiesByActivityRecordsByRecordIdErrors,\n DeleteV2ActivitiesByActivityRecordsByRecordIdResponses,\n DeleteV2ActivitiesByActivityResponses,\n DeleteV2CommentsByCommentIdData,\n DeleteV2CommentsByCommentIdErrors,\n DeleteV2CommentsByCommentIdResponses,\n DeleteV2FilesByFileIdData,\n DeleteV2FilesByFileIdErrors,\n DeleteV2FilesByFileIdResponses,\n DeleteV2ListsByListEntriesByEntryIdData,\n DeleteV2ListsByListEntriesByEntryIdErrors,\n DeleteV2ListsByListEntriesByEntryIdResponses,\n DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdData,\n DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdErrors,\n DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdResponses,\n DeleteV2MeetingsByMeetingIdData,\n DeleteV2MeetingsByMeetingIdErrors,\n DeleteV2MeetingsByMeetingIdResponses,\n DeleteV2NotesByNoteIdData,\n DeleteV2NotesByNoteIdErrors,\n DeleteV2NotesByNoteIdResponses,\n DeleteV2ObjectsByObjectData,\n DeleteV2ObjectsByObjectErrors,\n DeleteV2ObjectsByObjectRecordsByRecordIdData,\n DeleteV2ObjectsByObjectRecordsByRecordIdErrors,\n DeleteV2ObjectsByObjectRecordsByRecordIdResponses,\n DeleteV2ObjectsByObjectResponses,\n DeleteV2TasksByTaskIdData,\n DeleteV2TasksByTaskIdErrors,\n DeleteV2TasksByTaskIdResponses,\n DeleteV2WebhooksByWebhookIdData,\n DeleteV2WebhooksByWebhookIdErrors,\n DeleteV2WebhooksByWebhookIdResponses,\n GetV2ActivitiesByActivityData,\n GetV2ActivitiesByActivityErrors,\n GetV2ActivitiesByActivityRecordsByRecordIdData,\n GetV2ActivitiesByActivityRecordsByRecordIdErrors,\n GetV2ActivitiesByActivityRecordsByRecordIdResponses,\n GetV2ActivitiesByActivityResponses,\n GetV2ActivitiesData,\n GetV2ActivitiesResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeData,\n GetV2ByTargetByIdentifierAttributesByAttributeErrors,\n GetV2ByTargetByIdentifierAttributesByAttributeOptionsData,\n GetV2ByTargetByIdentifierAttributesByAttributeOptionsErrors,\n GetV2ByTargetByIdentifierAttributesByAttributeOptionsResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeStatusesData,\n GetV2ByTargetByIdentifierAttributesByAttributeStatusesErrors,\n GetV2ByTargetByIdentifierAttributesByAttributeStatusesResponses,\n GetV2ByTargetByIdentifierAttributesData,\n GetV2ByTargetByIdentifierAttributesResponses,\n GetV2CommentsByCommentIdData,\n GetV2CommentsByCommentIdErrors,\n GetV2CommentsByCommentIdResponses,\n GetV2EmailsData,\n GetV2EmailsResponses,\n GetV2FilesByFileIdData,\n GetV2FilesByFileIdDownloadData,\n GetV2FilesByFileIdErrors,\n GetV2FilesByFileIdResponses,\n GetV2FilesData,\n GetV2FilesResponses,\n GetV2ListsByListData,\n GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesData,\n GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesErrors,\n GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesResponses,\n GetV2ListsByListEntriesByEntryIdData,\n GetV2ListsByListEntriesByEntryIdErrors,\n GetV2ListsByListEntriesByEntryIdResponses,\n GetV2ListsByListErrors,\n GetV2ListsByListResponses,\n GetV2ListsByListViewsData,\n GetV2ListsByListViewsErrors,\n GetV2ListsByListViewsResponses,\n GetV2ListsData,\n GetV2ListsResponses,\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdData,\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdErrors,\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdResponses,\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscriptData,\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscriptResponses,\n GetV2MeetingsByMeetingIdCallRecordingsData,\n GetV2MeetingsByMeetingIdCallRecordingsResponses,\n GetV2MeetingsByMeetingIdData,\n GetV2MeetingsByMeetingIdErrors,\n GetV2MeetingsByMeetingIdResponses,\n GetV2MeetingsData,\n GetV2MeetingsResponses,\n GetV2NotesByNoteIdData,\n GetV2NotesByNoteIdErrors,\n GetV2NotesByNoteIdResponses,\n GetV2NotesData,\n GetV2NotesErrors,\n GetV2NotesResponses,\n GetV2ObjectsByObjectData,\n GetV2ObjectsByObjectErrors,\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesData,\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesErrors,\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesResponses,\n GetV2ObjectsByObjectRecordsByRecordIdData,\n GetV2ObjectsByObjectRecordsByRecordIdEntriesData,\n GetV2ObjectsByObjectRecordsByRecordIdEntriesResponses,\n GetV2ObjectsByObjectRecordsByRecordIdErrors,\n GetV2ObjectsByObjectRecordsByRecordIdResponses,\n GetV2ObjectsByObjectResponses,\n GetV2ObjectsByObjectViewsData,\n GetV2ObjectsByObjectViewsErrors,\n GetV2ObjectsByObjectViewsResponses,\n GetV2ObjectsData,\n GetV2ObjectsResponses,\n GetV2SelfData,\n GetV2SelfResponses,\n GetV2TasksByTaskIdData,\n GetV2TasksByTaskIdErrors,\n GetV2TasksByTaskIdResponses,\n GetV2TasksData,\n GetV2TasksResponses,\n GetV2ThreadsByThreadIdData,\n GetV2ThreadsByThreadIdErrors,\n GetV2ThreadsByThreadIdResponses,\n GetV2ThreadsData,\n GetV2ThreadsResponses,\n GetV2WebhooksByWebhookIdData,\n GetV2WebhooksByWebhookIdErrors,\n GetV2WebhooksByWebhookIdResponses,\n GetV2WebhooksData,\n GetV2WebhooksResponses,\n GetV2WorkspaceMembersByWorkspaceMemberIdData,\n GetV2WorkspaceMembersByWorkspaceMemberIdErrors,\n GetV2WorkspaceMembersByWorkspaceMemberIdResponses,\n GetV2WorkspaceMembersData,\n GetV2WorkspaceMembersResponses,\n PatchV2ActivitiesByActivityData,\n PatchV2ActivitiesByActivityErrors,\n PatchV2ActivitiesByActivityRecordsByRecordIdData,\n PatchV2ActivitiesByActivityRecordsByRecordIdErrors,\n PatchV2ActivitiesByActivityRecordsByRecordIdResponses,\n PatchV2ActivitiesByActivityResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeData,\n PatchV2ByTargetByIdentifierAttributesByAttributeErrors,\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionData,\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionErrors,\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusData,\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusErrors,\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusResponses,\n PatchV2ListsByListData,\n PatchV2ListsByListEntriesByEntryIdData,\n PatchV2ListsByListEntriesByEntryIdErrors,\n PatchV2ListsByListEntriesByEntryIdResponses,\n PatchV2ListsByListErrors,\n PatchV2ListsByListResponses,\n PatchV2MeetingsByMeetingIdData,\n PatchV2MeetingsByMeetingIdErrors,\n PatchV2MeetingsByMeetingIdResponses,\n PatchV2NotesByNoteIdData,\n PatchV2NotesByNoteIdErrors,\n PatchV2NotesByNoteIdResponses,\n PatchV2ObjectsByObjectData,\n PatchV2ObjectsByObjectErrors,\n PatchV2ObjectsByObjectRecordsByRecordIdData,\n PatchV2ObjectsByObjectRecordsByRecordIdErrors,\n PatchV2ObjectsByObjectRecordsByRecordIdResponses,\n PatchV2ObjectsByObjectResponses,\n PatchV2TasksByTaskIdData,\n PatchV2TasksByTaskIdErrors,\n PatchV2TasksByTaskIdResponses,\n PatchV2WebhooksByWebhookIdData,\n PatchV2WebhooksByWebhookIdErrors,\n PatchV2WebhooksByWebhookIdResponses,\n PostV2ActivitiesByActivityRecordsData,\n PostV2ActivitiesByActivityRecordsErrors,\n PostV2ActivitiesByActivityRecordsQueryData,\n PostV2ActivitiesByActivityRecordsQueryErrors,\n PostV2ActivitiesByActivityRecordsQueryResponses,\n PostV2ActivitiesByActivityRecordsResponses,\n PostV2ActivitiesData,\n PostV2ActivitiesErrors,\n PostV2ActivitiesResponses,\n PostV2ByTargetByIdentifierAttributesByAttributeOptionsData,\n PostV2ByTargetByIdentifierAttributesByAttributeOptionsErrors,\n PostV2ByTargetByIdentifierAttributesByAttributeOptionsResponses,\n PostV2ByTargetByIdentifierAttributesByAttributeStatusesData,\n PostV2ByTargetByIdentifierAttributesByAttributeStatusesErrors,\n PostV2ByTargetByIdentifierAttributesByAttributeStatusesResponses,\n PostV2ByTargetByIdentifierAttributesData,\n PostV2ByTargetByIdentifierAttributesErrors,\n PostV2ByTargetByIdentifierAttributesResponses,\n PostV2CommentsData,\n PostV2CommentsErrors,\n PostV2CommentsResponses,\n PostV2FilesData,\n PostV2FilesResponses,\n PostV2FilesUploadData,\n PostV2FilesUploadErrors,\n PostV2FilesUploadResponses,\n PostV2ListsByListEntriesData,\n PostV2ListsByListEntriesErrors,\n PostV2ListsByListEntriesQueryData,\n PostV2ListsByListEntriesQueryErrors,\n PostV2ListsByListEntriesQueryResponses,\n PostV2ListsByListEntriesResponses,\n PostV2ListsData,\n PostV2ListsErrors,\n PostV2ListsResponses,\n PostV2MeetingsByMeetingIdCallRecordingsData,\n PostV2MeetingsByMeetingIdCallRecordingsErrors,\n PostV2MeetingsByMeetingIdCallRecordingsResponses,\n PostV2MeetingsData,\n PostV2MeetingsErrors,\n PostV2MeetingsResponses,\n PostV2NotesData,\n PostV2NotesErrors,\n PostV2NotesResponses,\n PostV2ObjectsByObjectRecordsData,\n PostV2ObjectsByObjectRecordsErrors,\n PostV2ObjectsByObjectRecordsMergeData,\n PostV2ObjectsByObjectRecordsMergeErrors,\n PostV2ObjectsByObjectRecordsMergeResponses,\n PostV2ObjectsByObjectRecordsQueryData,\n PostV2ObjectsByObjectRecordsQueryErrors,\n PostV2ObjectsByObjectRecordsQueryResponses,\n PostV2ObjectsByObjectRecordsResponses,\n PostV2ObjectsData,\n PostV2ObjectsErrors,\n PostV2ObjectsRecordsSearchData,\n PostV2ObjectsRecordsSearchErrors,\n PostV2ObjectsRecordsSearchResponses,\n PostV2ObjectsResponses,\n PostV2SequencesUnsubscribedEmailsData,\n PostV2SequencesUnsubscribedEmailsErrors,\n PostV2SequencesUnsubscribedEmailsResponses,\n PostV2SqlData,\n PostV2SqlErrors,\n PostV2SqlResponses,\n PostV2TasksData,\n PostV2TasksErrors,\n PostV2TasksResponses,\n PostV2WebhooksData,\n PostV2WebhooksErrors,\n PostV2WebhooksResponses,\n PutV2ActivitiesByActivityRecordsByRecordIdData,\n PutV2ActivitiesByActivityRecordsByRecordIdErrors,\n PutV2ActivitiesByActivityRecordsByRecordIdResponses,\n PutV2ActivitiesByActivityRecordsData,\n PutV2ActivitiesByActivityRecordsErrors,\n PutV2ActivitiesByActivityRecordsResponses,\n PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesData,\n PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesErrors,\n PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesResponses,\n PutV2ListsByListEntriesByEntryIdData,\n PutV2ListsByListEntriesByEntryIdErrors,\n PutV2ListsByListEntriesByEntryIdResponses,\n PutV2ListsByListEntriesData,\n PutV2ListsByListEntriesErrors,\n PutV2ListsByListEntriesResponses,\n PutV2MeetingsByMeetingIdData,\n PutV2MeetingsByMeetingIdErrors,\n PutV2MeetingsByMeetingIdResponses,\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesData,\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesErrors,\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesResponses,\n PutV2ObjectsByObjectRecordsByRecordIdData,\n PutV2ObjectsByObjectRecordsByRecordIdErrors,\n PutV2ObjectsByObjectRecordsByRecordIdResponses,\n PutV2ObjectsByObjectRecordsData,\n PutV2ObjectsByObjectRecordsErrors,\n PutV2ObjectsByObjectRecordsResponses,\n} from \"./types.gen\";\n\nexport type Options<\n TData extends TDataShape = TDataShape,\n ThrowOnError extends boolean = boolean,\n TResponse = unknown,\n> = 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 objects\n *\n * Lists all system-defined and user-defined objects in your workspace.\n *\n * Required scopes: `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2Objects = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2ObjectsData, ThrowOnError>,\n): RequestResult<GetV2ObjectsResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2ObjectsResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects\",\n ...options,\n });\n\n/**\n * Create an object\n *\n * Creates a new custom object in your workspace.\n *\n * Required scopes: `object_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Objects = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ObjectsData, ThrowOnError>,\n): RequestResult<PostV2ObjectsResponses, PostV2ObjectsErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2ObjectsResponses, PostV2ObjectsErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete an object\n *\n * Deletes a single object by its `object_id` or slug, along with all of its records. Only custom objects can be deleted; system objects, such as people and companies, cannot.\n *\n * This endpoint should be used with caution as it has the potential to remove a large amount of potentially valuable data.\n *\n * Required scopes: `object_configuration:read-write`, `record_permission:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2ObjectsByObject = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2ObjectsByObjectData, ThrowOnError>,\n): RequestResult<DeleteV2ObjectsByObjectResponses, DeleteV2ObjectsByObjectErrors, ThrowOnError> =>\n (options.client ?? client).delete<\n DeleteV2ObjectsByObjectResponses,\n DeleteV2ObjectsByObjectErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}\",\n ...options,\n });\n\n/**\n * Get an object\n *\n * Gets a single object by its `object_id` or slug.\n *\n * Required scopes: `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ObjectsByObject = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ObjectsByObjectData, ThrowOnError>,\n): RequestResult<GetV2ObjectsByObjectResponses, GetV2ObjectsByObjectErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2ObjectsByObjectResponses,\n GetV2ObjectsByObjectErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}\",\n ...options,\n });\n\n/**\n * Update an object\n *\n * Updates a single object. The object to be updated is identified by its `object_id`.\n *\n * Required scopes: `object_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ObjectsByObject = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2ObjectsByObjectData, ThrowOnError>,\n): RequestResult<PatchV2ObjectsByObjectResponses, PatchV2ObjectsByObjectErrors, ThrowOnError> =>\n (options.client ?? client).patch<\n PatchV2ObjectsByObjectResponses,\n PatchV2ObjectsByObjectErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List views for object\n *\n * Lists saved views for an object. Results are ordered by view ID (`id.view_id` ascending).\n *\n * Required scopes: `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ObjectsByObjectViews = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ObjectsByObjectViewsData, ThrowOnError>,\n): RequestResult<\n GetV2ObjectsByObjectViewsResponses,\n GetV2ObjectsByObjectViewsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ObjectsByObjectViewsResponses,\n GetV2ObjectsByObjectViewsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/views\",\n ...options,\n });\n\n/**\n * List activities\n *\n * Lists all system-defined and user-defined activities in your workspace.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2Activities = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2ActivitiesData, ThrowOnError>,\n): RequestResult<GetV2ActivitiesResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2ActivitiesResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities\",\n ...options,\n });\n\n/**\n * Create an activity\n *\n * Creates a new custom activity in your workspace. Your workspace must have the custom activities billing feature enabled. Public apps may instead create activities with the integration activities billing feature.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Activities = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ActivitiesData, ThrowOnError>,\n): RequestResult<PostV2ActivitiesResponses, PostV2ActivitiesErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2ActivitiesResponses, PostV2ActivitiesErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete an activity\n *\n * Deletes a single activity by its `activity_id` or slug, along with all of its records. Archived activities can also be deleted.\n *\n * This endpoint should be used with caution as it has the potential to remove a large amount of potentially valuable data.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_configuration:read-write`, `activity_record:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2ActivitiesByActivity = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2ActivitiesByActivityData, ThrowOnError>,\n): RequestResult<\n DeleteV2ActivitiesByActivityResponses,\n DeleteV2ActivitiesByActivityErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2ActivitiesByActivityResponses,\n DeleteV2ActivitiesByActivityErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}\",\n ...options,\n });\n\n/**\n * Get an activity\n *\n * Gets a single activity by its `activity_id` or slug.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ActivitiesByActivity = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ActivitiesByActivityData, ThrowOnError>,\n): RequestResult<\n GetV2ActivitiesByActivityResponses,\n GetV2ActivitiesByActivityErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ActivitiesByActivityResponses,\n GetV2ActivitiesByActivityErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}\",\n ...options,\n });\n\n/**\n * Update an activity\n *\n * Updates a single activity by its `activity_id` or slug. The schema an activity extends is fixed after creation, so `extends` cannot be changed.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ActivitiesByActivity = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2ActivitiesByActivityData, ThrowOnError>,\n): RequestResult<\n PatchV2ActivitiesByActivityResponses,\n PatchV2ActivitiesByActivityErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2ActivitiesByActivityResponses,\n PatchV2ActivitiesByActivityErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List activity records\n *\n * Lists activity records, with the option to filter and sort results.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_record:read`, `activity_configuration:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ActivitiesByActivityRecordsQuery = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ActivitiesByActivityRecordsQueryData, ThrowOnError>,\n): RequestResult<\n PostV2ActivitiesByActivityRecordsQueryResponses,\n PostV2ActivitiesByActivityRecordsQueryErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ActivitiesByActivityRecordsQueryResponses,\n PostV2ActivitiesByActivityRecordsQueryErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}/records/query\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Create an activity record\n *\n * Creates a new activity record, for example one specific phone call.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_record:read-write`, `activity_configuration:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ActivitiesByActivityRecords = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ActivitiesByActivityRecordsData, ThrowOnError>,\n): RequestResult<\n PostV2ActivitiesByActivityRecordsResponses,\n PostV2ActivitiesByActivityRecordsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ActivitiesByActivityRecordsResponses,\n PostV2ActivitiesByActivityRecordsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}/records\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Upsert an activity record\n *\n * Use this endpoint to create or update an activity record. A matching attribute is used to search for existing activity records. If a record is found with the same value for the matching attribute, that record will be updated. If no record with the same value for the matching attribute is found, a new record will be created instead. If you would like to avoid matching, please use the create activity record endpoint.\n *\n * If the matching attribute is a multiselect attribute, new values will be added and existing values will not be deleted. For any other multiselect attribute, all values will be either created or deleted as necessary to match the list of supplied values.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_record:read-write`, `activity_configuration:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ActivitiesByActivityRecords = <ThrowOnError extends boolean = true>(\n options: Options<PutV2ActivitiesByActivityRecordsData, ThrowOnError>,\n): RequestResult<\n PutV2ActivitiesByActivityRecordsResponses,\n PutV2ActivitiesByActivityRecordsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).put<\n PutV2ActivitiesByActivityRecordsResponses,\n PutV2ActivitiesByActivityRecordsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}/records\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete an activity record\n *\n * Deletes a single activity record by its `record_id`.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_record:read-write`, `activity_configuration:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2ActivitiesByActivityRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2ActivitiesByActivityRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n DeleteV2ActivitiesByActivityRecordsByRecordIdResponses,\n DeleteV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2ActivitiesByActivityRecordsByRecordIdResponses,\n DeleteV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}/records/{record_id}\",\n ...options,\n });\n\n/**\n * Get an activity record\n *\n * Gets a single activity record by its `record_id`.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_record:read`, `activity_configuration:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ActivitiesByActivityRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ActivitiesByActivityRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n GetV2ActivitiesByActivityRecordsByRecordIdResponses,\n GetV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ActivitiesByActivityRecordsByRecordIdResponses,\n GetV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}/records/{record_id}\",\n ...options,\n });\n\n/**\n * Update an activity record (append multiselect values)\n *\n * Use this endpoint to update activity records by `record_id`. If the update payload includes multiselect attributes, the values supplied will be created and prepended to the list of values that already exist (if any). Use the `PUT` endpoint to overwrite or remove multiselect attribute values.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_record:read-write`, `activity_configuration:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ActivitiesByActivityRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2ActivitiesByActivityRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n PatchV2ActivitiesByActivityRecordsByRecordIdResponses,\n PatchV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2ActivitiesByActivityRecordsByRecordIdResponses,\n PatchV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}/records/{record_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Update an activity record (overwrite multiselect values)\n *\n * Use this endpoint to update activity records by `record_id`. If the update payload includes multiselect attributes, the values supplied will overwrite/remove the list of values that already exist (if any). Use the `PATCH` endpoint to append multiselect values without removing those that already exist.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_record:read-write`, `activity_configuration:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ActivitiesByActivityRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<PutV2ActivitiesByActivityRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n PutV2ActivitiesByActivityRecordsByRecordIdResponses,\n PutV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).put<\n PutV2ActivitiesByActivityRecordsByRecordIdResponses,\n PutV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}/records/{record_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List attributes\n *\n * Lists all attributes defined on a specific object or list. Attributes are returned in the order that they are sorted by in the UI.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read`. When `target` is `lists`, the required scopes are `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ByTargetByIdentifierAttributes = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ByTargetByIdentifierAttributesData, ThrowOnError>,\n): RequestResult<GetV2ByTargetByIdentifierAttributesResponses, unknown, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2ByTargetByIdentifierAttributesResponses,\n unknown,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes\",\n ...options,\n });\n\n/**\n * Create an attribute\n *\n * Creates a new attribute on either an object or a list.\n *\n * For record-reference attributes, you can optionally create a bidirectional relationship by providing a `relationship` object. This will create two entangled attributes: one on the specified object and a reverse attribute on the related object.\n *\n * To create an attribute on an object, you must also have the `object_configuration:read-write` scope.\n *\n * To create an attribute on a list, you must also have the `list_configuration:read-write` scope.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ByTargetByIdentifierAttributes = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ByTargetByIdentifierAttributesData, ThrowOnError>,\n): RequestResult<\n PostV2ByTargetByIdentifierAttributesResponses,\n PostV2ByTargetByIdentifierAttributesErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ByTargetByIdentifierAttributesResponses,\n PostV2ByTargetByIdentifierAttributesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Get an attribute\n *\n * Gets information about a single attribute on either an object or a list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read`. When `target` is `lists`, the required scopes are `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ByTargetByIdentifierAttributesByAttribute = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ByTargetByIdentifierAttributesByAttributeData, ThrowOnError>,\n): RequestResult<\n GetV2ByTargetByIdentifierAttributesByAttributeResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ByTargetByIdentifierAttributesByAttributeResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}\",\n ...options,\n });\n\n/**\n * Update an attribute\n *\n * Updates a single attribute on a given object or list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read-write`. When `target` is `lists`, the required scopes are `list_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ByTargetByIdentifierAttributesByAttribute = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<PatchV2ByTargetByIdentifierAttributesByAttributeData, ThrowOnError>,\n): RequestResult<\n PatchV2ByTargetByIdentifierAttributesByAttributeResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2ByTargetByIdentifierAttributesByAttributeResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List select options\n *\n * Lists all select options for a particular attribute on either an object or a list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read`. When `target` is `lists`, the required scopes are `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ByTargetByIdentifierAttributesByAttributeOptions = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<GetV2ByTargetByIdentifierAttributesByAttributeOptionsData, ThrowOnError>,\n): RequestResult<\n GetV2ByTargetByIdentifierAttributesByAttributeOptionsResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeOptionsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ByTargetByIdentifierAttributesByAttributeOptionsResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeOptionsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}/options\",\n ...options,\n });\n\n/**\n * Create a select option\n *\n * Adds a select option to a select attribute on an object or a list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read-write`. When `target` is `lists`, the required scopes are `list_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ByTargetByIdentifierAttributesByAttributeOptions = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<PostV2ByTargetByIdentifierAttributesByAttributeOptionsData, ThrowOnError>,\n): RequestResult<\n PostV2ByTargetByIdentifierAttributesByAttributeOptionsResponses,\n PostV2ByTargetByIdentifierAttributesByAttributeOptionsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ByTargetByIdentifierAttributesByAttributeOptionsResponses,\n PostV2ByTargetByIdentifierAttributesByAttributeOptionsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}/options\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Update a select option\n *\n * Updates a select option on an attribute on either an object or a list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read-write`. When `target` is `lists`, the required scopes are `list_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ByTargetByIdentifierAttributesByAttributeOptionsByOption = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionData,\n ThrowOnError\n >,\n): RequestResult<\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}/options/{option}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List statuses\n *\n * Lists all statuses for a particular status attribute on either an object or a list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read`. When `target` is `lists`, the required scopes are `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ByTargetByIdentifierAttributesByAttributeStatuses = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<GetV2ByTargetByIdentifierAttributesByAttributeStatusesData, ThrowOnError>,\n): RequestResult<\n GetV2ByTargetByIdentifierAttributesByAttributeStatusesResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeStatusesErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ByTargetByIdentifierAttributesByAttributeStatusesResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeStatusesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}/statuses\",\n ...options,\n });\n\n/**\n * Create a status\n *\n * Add a new status to a status attribute on either an object or a list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read-write`. When `target` is `lists`, the required scopes are `list_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ByTargetByIdentifierAttributesByAttributeStatuses = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<PostV2ByTargetByIdentifierAttributesByAttributeStatusesData, ThrowOnError>,\n): RequestResult<\n PostV2ByTargetByIdentifierAttributesByAttributeStatusesResponses,\n PostV2ByTargetByIdentifierAttributesByAttributeStatusesErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ByTargetByIdentifierAttributesByAttributeStatusesResponses,\n PostV2ByTargetByIdentifierAttributesByAttributeStatusesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}/statuses\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Update a status\n *\n * Update a status on an status attribute on either an object or a list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read-write`. When `target` is `lists`, the required scopes are `list_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatus = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusData,\n ThrowOnError\n >,\n): RequestResult<\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}/statuses/{status}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List records\n *\n * Lists people, company or other records, with the option to filter and sort results.\n *\n * Required scopes: `record_permission:read`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ObjectsByObjectRecordsQuery = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ObjectsByObjectRecordsQueryData, ThrowOnError>,\n): RequestResult<\n PostV2ObjectsByObjectRecordsQueryResponses,\n PostV2ObjectsByObjectRecordsQueryErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ObjectsByObjectRecordsQueryResponses,\n PostV2ObjectsByObjectRecordsQueryErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/query\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Create a record\n *\n * Creates a new person, company or other record. This endpoint will throw on conflicts of unique attributes. If you would prefer to update records on conflicts, please use the [Upsert record endpoint](/rest-api/endpoint-reference/records/upsert-a-record) instead.\n *\n * Required scopes: `record_permission:read-write`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ObjectsByObjectRecords = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ObjectsByObjectRecordsData, ThrowOnError>,\n): RequestResult<\n PostV2ObjectsByObjectRecordsResponses,\n PostV2ObjectsByObjectRecordsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ObjectsByObjectRecordsResponses,\n PostV2ObjectsByObjectRecordsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Upsert a record\n *\n * Use this endpoint to create or update people, companies and other records. A matching attribute is used to search for existing records. If a record is found with the same value for the matching attribute, that record will be updated. If no record with the same value for the matching attribute is found, a new record will be created instead. If you would like to avoid matching, please use the [Create record endpoint](/rest-api/endpoint-reference/records/create-a-record).\n *\n * If the matching attribute is a multiselect attribute, new values will be added and existing values will not be deleted. For any other multiselect attribute, all values will be either created or deleted as necessary to match the list of supplied values.\n *\n * Required scopes: `record_permission:read-write`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ObjectsByObjectRecords = <ThrowOnError extends boolean = true>(\n options: Options<PutV2ObjectsByObjectRecordsData, ThrowOnError>,\n): RequestResult<\n PutV2ObjectsByObjectRecordsResponses,\n PutV2ObjectsByObjectRecordsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).put<\n PutV2ObjectsByObjectRecordsResponses,\n PutV2ObjectsByObjectRecordsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete a record\n *\n * Deletes a single record (e.g. a company or person) by ID.\n *\n * Required scopes: `object_configuration:read`, `record_permission:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2ObjectsByObjectRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2ObjectsByObjectRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n DeleteV2ObjectsByObjectRecordsByRecordIdResponses,\n DeleteV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2ObjectsByObjectRecordsByRecordIdResponses,\n DeleteV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/{record_id}\",\n ...options,\n });\n\n/**\n * Get a record\n *\n * Gets a single person, company or other record by its `record_id`.\n *\n * Required scopes: `record_permission:read`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ObjectsByObjectRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ObjectsByObjectRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n GetV2ObjectsByObjectRecordsByRecordIdResponses,\n GetV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ObjectsByObjectRecordsByRecordIdResponses,\n GetV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/{record_id}\",\n ...options,\n });\n\n/**\n * Update a record (append multiselect values)\n *\n * Use this endpoint to update people, companies, and other records by `record_id`. If the update payload includes multiselect attributes, the values supplied will be created and prepended to the list of values that already exist (if any). Use the `PUT` endpoint to overwrite or remove multiselect attribute values.\n *\n * Required scopes: `record_permission:read-write`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ObjectsByObjectRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2ObjectsByObjectRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n PatchV2ObjectsByObjectRecordsByRecordIdResponses,\n PatchV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2ObjectsByObjectRecordsByRecordIdResponses,\n PatchV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/{record_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Update a record (overwrite multiselect values)\n *\n * Use this endpoint to update people, companies, and other records by `record_id`. If the update payload includes multiselect attributes, the values supplied will overwrite/remove the list of values that already exist (if any). Use the `PATCH` endpoint to append multiselect values without removing those that already exist.\n *\n * Required scopes: `record_permission:read-write`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ObjectsByObjectRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<PutV2ObjectsByObjectRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n PutV2ObjectsByObjectRecordsByRecordIdResponses,\n PutV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).put<\n PutV2ObjectsByObjectRecordsByRecordIdResponses,\n PutV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/{record_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Merge two records\n *\n * Merges two records of the same object together. Where both records have a value for the same attribute, the primary record's value takes precedence.\n *\n * Merging produces a **new** record, so the `new_record_id` returned will match neither of the records supplied in the request. Both of the original records are marked as merged and can no longer be read or written.\n *\n * Large merges are completed asynchronously. A `200` response means the merged record is readable immediately. A `202` response means the merge has been accepted but is still being applied, and reading the merged record will return a `404` with the `merge_in_progress` error code until it completes.\n *\n * This endpoint is not idempotent. Because both original records are marked as merged, repeating the same request returns `404`.\n *\n * This endpoint is rate limited to 5 requests per second.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `record_permission:read-write`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ObjectsByObjectRecordsMerge = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ObjectsByObjectRecordsMergeData, ThrowOnError>,\n): RequestResult<\n PostV2ObjectsByObjectRecordsMergeResponses,\n PostV2ObjectsByObjectRecordsMergeErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ObjectsByObjectRecordsMergeResponses,\n PostV2ObjectsByObjectRecordsMergeErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/merge\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List record attribute values\n *\n * Gets all values for a given attribute on a record. Historic values can be queried using the `show_historic` query param. Historic values cannot be queried on COMINT (Communication Intelligence) or enriched attributes and the endpoint will return a 400 error if this is attempted. Historic values are sorted from oldest to newest (by `active_from`). Some attributes are subject to billing status and will return an empty array of values if theworkspace being queried does not have the required billing flag enabled.\n *\n * Required scopes: `record_permission:read`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValues = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesData,\n ThrowOnError\n >,\n): RequestResult<\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesResponses,\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesResponses,\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/{record_id}/attributes/{attribute}/values\",\n ...options,\n });\n\n/**\n * Write record attribute values\n *\n * Replaces the entire value history of a single attribute on a record, primarily to migrate historic data from an external source. Every value the attribute currently has is destroyed, including values not present in the request, and the supplied values are written with the `active_from` and `active_until` timestamps given.\n *\n * Values may be supplied in any order and gaps between intervals are allowed. For attributes that accept a single value, at most one value may be active at a time, so intervals may not overlap and at most one may have a `null` `active_until`. At least one value is required.\n *\n * Webhooks and workflow triggers do not fire for these writes, so migrating history does not replay automations. Search indexes and caches are still updated, and formula attributes that depend on this attribute are still recalculated.\n *\n * Value history cannot be written for relationship attributes, formula attributes, enriched attributes, or immutable system attributes such as the entry's parent record.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `record_permission:read-write`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValues = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesData,\n ThrowOnError\n >,\n): RequestResult<\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesResponses,\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesErrors,\n ThrowOnError\n> =>\n (options.client ?? client).put<\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesResponses,\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/{record_id}/attributes/{attribute}/values\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List record entries\n *\n * List all entries, across all lists, for which this record is the parent. The response includes metadata for each entry, including `entry_id`, `list_id`, and `created_at`, but does not include entry values. To retrieve the values, call [Get a list entry](/rest-api/endpoint-reference/entries/get-a-list-entry) separately for each entry.\n *\n * Required scopes: `record_permission:read`, `object_configuration:read`, `list_entry:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ObjectsByObjectRecordsByRecordIdEntries = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ObjectsByObjectRecordsByRecordIdEntriesData, ThrowOnError>,\n): RequestResult<GetV2ObjectsByObjectRecordsByRecordIdEntriesResponses, unknown, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2ObjectsByObjectRecordsByRecordIdEntriesResponses,\n unknown,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/{record_id}/entries\",\n ...options,\n });\n\n/**\n * Search records\n *\n * The search records endpoint provides a convenient way to fuzzy search for records across one or more objects.\n * The matching strategy employed in this endpoint follows the in-product strategy and will match names, domains, emails, phone numbers and social handles on people and companies, and labels on all other objects.\n * Please note, results returned from this endpoint are eventually consistent. For results which are guaranteed to be up to date, please use the record query endpoint instead.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `record_permission:read`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ObjectsRecordsSearch = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ObjectsRecordsSearchData, ThrowOnError>,\n): RequestResult<\n PostV2ObjectsRecordsSearchResponses,\n PostV2ObjectsRecordsSearchErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ObjectsRecordsSearchResponses,\n PostV2ObjectsRecordsSearchErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/records/search\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Query SQL\n *\n * Query records and lists with SQL. Your workspace must be on the Enterprise plan in order to access this endpoint.\n *\n * This endpoint is rate limited to 2 requests per second.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `record_permission:read`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Sql = <ThrowOnError extends boolean = true>(\n options: Options<PostV2SqlData, ThrowOnError>,\n): RequestResult<PostV2SqlResponses, PostV2SqlErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2SqlResponses, PostV2SqlErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/sql\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List all lists\n *\n * List all lists that your access token has access to. lists are returned in the order that they are sorted in the sidebar.\n *\n * Required scopes: `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2Lists = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2ListsData, ThrowOnError>,\n): RequestResult<GetV2ListsResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2ListsResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists\",\n ...options,\n });\n\n/**\n * Create a list\n *\n * Creates a new list.\n *\n * Once you have your list, add attributes to it using the [Create attribute](/rest-api/endpoint-reference/attributes/create-an-attribute) API, and add records to it using the [Add records to list](/rest-api/endpoint-reference/entries/create-an-entry-add-record-to-list) API.\n *\n * New lists must specify which records can be added with the `parent_object` parameter which accepts either an object slug or an object ID. Permissions for the list are controlled with the `workspace_access` and `workspace_member_access` parameters.\n *\n * Please note that new lists must have either `workspace_access` set to `\"full-access\"` or one or more element of `workspace_member_access` with a `\"full-access\"` level. It is also possible to receive a `403` billing error if your workspace is not on a plan that supports either advanced workspace or workspace member-level access for lists.\n *\n * Required scopes: `list_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Lists = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ListsData, ThrowOnError>,\n): RequestResult<PostV2ListsResponses, PostV2ListsErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2ListsResponses, PostV2ListsErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Get a list\n *\n * Gets a single list in your workspace that your access token has access to.\n *\n * Required scopes: `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ListsByList = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ListsByListData, ThrowOnError>,\n): RequestResult<GetV2ListsByListResponses, GetV2ListsByListErrors, ThrowOnError> =>\n (options.client ?? client).get<GetV2ListsByListResponses, GetV2ListsByListErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}\",\n ...options,\n });\n\n/**\n * Update a list\n *\n * Updates an existing list. Permissions for the list are controlled with the `workspace_access` and `workspace_member_access` parameters. Please note that lists must have either `workspace_access` set to `\"full-access\"` or one or more element of `workspace_member_access` with a `\"full-access\"` level. It is also possible to receive a `403` billing error if your workspace is not on a plan that supports either advanced workspace or workspace member level access for lists. Changing the parent object of a list is not possible through the API as it can have unintended side-effects that should be considered carefully. If you wish to carry out a parent object change you should do so through the UI.\n *\n * Required scopes: `list_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ListsByList = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2ListsByListData, ThrowOnError>,\n): RequestResult<PatchV2ListsByListResponses, PatchV2ListsByListErrors, ThrowOnError> =>\n (options.client ?? client).patch<\n PatchV2ListsByListResponses,\n PatchV2ListsByListErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List views for list\n *\n * Lists saved views for a list. Results are ordered by view ID (`id.view_id` ascending).\n *\n * Required scopes: `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ListsByListViews = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ListsByListViewsData, ThrowOnError>,\n): RequestResult<GetV2ListsByListViewsResponses, GetV2ListsByListViewsErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2ListsByListViewsResponses,\n GetV2ListsByListViewsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/views\",\n ...options,\n });\n\n/**\n * List entries\n *\n * Lists entries in a given list, with the option to filter and sort results.\n *\n * Required scopes: `list_entry:read`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ListsByListEntriesQuery = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ListsByListEntriesQueryData, ThrowOnError>,\n): RequestResult<\n PostV2ListsByListEntriesQueryResponses,\n PostV2ListsByListEntriesQueryErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ListsByListEntriesQueryResponses,\n PostV2ListsByListEntriesQueryErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries/query\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Create an entry (add record to list)\n *\n * Adds a record to a list as a new list entry. This endpoint will throw on conflicts of unique attributes. Multiple list entries are allowed for the same parent record\n *\n * Required scopes: `list_entry:read-write`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ListsByListEntries = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ListsByListEntriesData, ThrowOnError>,\n): RequestResult<PostV2ListsByListEntriesResponses, PostV2ListsByListEntriesErrors, ThrowOnError> =>\n (options.client ?? client).post<\n PostV2ListsByListEntriesResponses,\n PostV2ListsByListEntriesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Upsert a list entry by parent\n *\n * Use this endpoint to create or update a list entry for a given parent record. If an entry with the specified parent record is found, that entry will be updated. If no such entry is found, a new entry will be created instead. If there are multiple entries with the same parent record, this endpoint with return the \"MULTIPLE_MATCH_RESULTS\" error. When writing to multi-select attributes, all values will be either created or deleted as necessary to match the list of values supplied in the request body.\n *\n * Required scopes: `list_entry:read-write`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ListsByListEntries = <ThrowOnError extends boolean = true>(\n options: Options<PutV2ListsByListEntriesData, ThrowOnError>,\n): RequestResult<PutV2ListsByListEntriesResponses, PutV2ListsByListEntriesErrors, ThrowOnError> =>\n (options.client ?? client).put<\n PutV2ListsByListEntriesResponses,\n PutV2ListsByListEntriesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete a list entry\n *\n * Deletes a single list entry by its `entry_id`.\n *\n * Required scopes: `list_entry:read-write`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2ListsByListEntriesByEntryId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2ListsByListEntriesByEntryIdData, ThrowOnError>,\n): RequestResult<\n DeleteV2ListsByListEntriesByEntryIdResponses,\n DeleteV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2ListsByListEntriesByEntryIdResponses,\n DeleteV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries/{entry_id}\",\n ...options,\n });\n\n/**\n * Get a list entry\n *\n * Gets a single list entry by its `entry_id`.\n *\n * Required scopes: `list_entry:read`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ListsByListEntriesByEntryId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ListsByListEntriesByEntryIdData, ThrowOnError>,\n): RequestResult<\n GetV2ListsByListEntriesByEntryIdResponses,\n GetV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ListsByListEntriesByEntryIdResponses,\n GetV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries/{entry_id}\",\n ...options,\n });\n\n/**\n * Update a list entry (append multiselect values)\n *\n * Use this endpoint to update list entries by `entry_id`. If the update payload includes multiselect attributes, the values supplied will be created and prepended to the list of values that already exist (if any). Use the `PUT` endpoint to overwrite or remove multiselect attribute values.\n *\n * Required scopes: `list_entry:read-write`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ListsByListEntriesByEntryId = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2ListsByListEntriesByEntryIdData, ThrowOnError>,\n): RequestResult<\n PatchV2ListsByListEntriesByEntryIdResponses,\n PatchV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2ListsByListEntriesByEntryIdResponses,\n PatchV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries/{entry_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Update a list entry (overwrite multiselect values)\n *\n * Use this endpoint to update list entries by `entry_id`. If the update payload includes multiselect attributes, the values supplied will overwrite/remove the list of values that already exist (if any). Use the `PATCH` endpoint to add multiselect attribute values without removing those value that already exist.\n *\n * Required scopes: `list_entry:read-write`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ListsByListEntriesByEntryId = <ThrowOnError extends boolean = true>(\n options: Options<PutV2ListsByListEntriesByEntryIdData, ThrowOnError>,\n): RequestResult<\n PutV2ListsByListEntriesByEntryIdResponses,\n PutV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).put<\n PutV2ListsByListEntriesByEntryIdResponses,\n PutV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries/{entry_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List attribute values for a list entry\n *\n * Gets all values for a given attribute on a list entry. This endpoint has the ability to return all historic values using the `show_historic` query param. Historic values are sorted from oldest to newest (by `active_from`).\n *\n * Required scopes: `list_entry:read`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ListsByListEntriesByEntryIdAttributesByAttributeValues = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesData, ThrowOnError>,\n): RequestResult<\n GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesResponses,\n GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesResponses,\n GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries/{entry_id}/attributes/{attribute}/values\",\n ...options,\n });\n\n/**\n * Write list entry attribute values\n *\n * Replaces the entire value history of a single attribute on a list entry, primarily to migrate historic data from an external source. Every value the attribute currently has is destroyed, including values not present in the request, and the supplied values are written with the `active_from` and `active_until` timestamps given.\n *\n * Values may be supplied in any order and gaps between intervals are allowed. For attributes that accept a single value, at most one value may be active at a time, so intervals may not overlap and at most one may have a `null` `active_until`. At least one value is required.\n *\n * Webhooks and workflow triggers do not fire for these writes, so migrating history does not replay automations. Search indexes and caches are still updated, and formula attributes that depend on this attribute are still recalculated.\n *\n * Value history cannot be written for relationship attributes, formula attributes, enriched attributes, or immutable system attributes such as the entry's parent record.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `list_entry:read-write`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ListsByListEntriesByEntryIdAttributesByAttributeValues = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesData, ThrowOnError>,\n): RequestResult<\n PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesResponses,\n PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesErrors,\n ThrowOnError\n> =>\n (options.client ?? client).put<\n PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesResponses,\n PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries/{entry_id}/attributes/{attribute}/values\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List workspace members\n *\n * Lists all workspace members in the workspace.\n *\n * Required scopes: `user_management:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2WorkspaceMembers = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2WorkspaceMembersData, ThrowOnError>,\n): RequestResult<GetV2WorkspaceMembersResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2WorkspaceMembersResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/workspace_members\",\n ...options,\n });\n\n/**\n * Get a workspace member\n *\n * Gets a single workspace member by ID.\n *\n * Required scopes: `user_management:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2WorkspaceMembersByWorkspaceMemberId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2WorkspaceMembersByWorkspaceMemberIdData, ThrowOnError>,\n): RequestResult<\n GetV2WorkspaceMembersByWorkspaceMemberIdResponses,\n GetV2WorkspaceMembersByWorkspaceMemberIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2WorkspaceMembersByWorkspaceMemberIdResponses,\n GetV2WorkspaceMembersByWorkspaceMemberIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/workspace_members/{workspace_member_id}\",\n ...options,\n });\n\n/**\n * List notes\n *\n * List notes for all records or for a specific record.\n *\n * This endpoint is temporarily rate limited to 10 requests per second.\n *\n * Required scopes: `note:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2Notes = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2NotesData, ThrowOnError>,\n): RequestResult<GetV2NotesResponses, GetV2NotesErrors, ThrowOnError> =>\n (options?.client ?? client).get<GetV2NotesResponses, GetV2NotesErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/notes\",\n ...options,\n });\n\n/**\n * Create a note\n *\n * Creates a new note for a given record.\n *\n * Required scopes: `note:read-write`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Notes = <ThrowOnError extends boolean = true>(\n options: Options<PostV2NotesData, ThrowOnError>,\n): RequestResult<PostV2NotesResponses, PostV2NotesErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2NotesResponses, PostV2NotesErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/notes\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete a note\n *\n * Delete a single note by ID.\n *\n * Required scopes: `note:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2NotesByNoteId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2NotesByNoteIdData, ThrowOnError>,\n): RequestResult<DeleteV2NotesByNoteIdResponses, DeleteV2NotesByNoteIdErrors, ThrowOnError> =>\n (options.client ?? client).delete<\n DeleteV2NotesByNoteIdResponses,\n DeleteV2NotesByNoteIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/notes/{note_id}\",\n ...options,\n });\n\n/**\n * Get a note\n *\n * Get a single note by ID.\n *\n * Required scopes: `note:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2NotesByNoteId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2NotesByNoteIdData, ThrowOnError>,\n): RequestResult<GetV2NotesByNoteIdResponses, GetV2NotesByNoteIdErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2NotesByNoteIdResponses,\n GetV2NotesByNoteIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/notes/{note_id}\",\n ...options,\n });\n\n/**\n * Update a note\n *\n * Updates an existing note's title and/or content. Only the fields you provide are changed, and any field you omit is left untouched. Providing `content` replaces the note's entire content. A note's parent record cannot be changed.\n *\n * Required scopes: `note:read-write`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2NotesByNoteId = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2NotesByNoteIdData, ThrowOnError>,\n): RequestResult<PatchV2NotesByNoteIdResponses, PatchV2NotesByNoteIdErrors, ThrowOnError> =>\n (options.client ?? client).patch<\n PatchV2NotesByNoteIdResponses,\n PatchV2NotesByNoteIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/notes/{note_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List tasks\n *\n * List all tasks. Results are sorted by creation date, from oldest to newest.\n *\n * Required scopes: `task:read`, `object_configuration:read`, `record_permission:read`, `user_management:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2Tasks = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2TasksData, ThrowOnError>,\n): RequestResult<GetV2TasksResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2TasksResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/tasks\",\n ...options,\n });\n\n/**\n * Create a task\n *\n * Creates a new task.\n *\n * At present, tasks can only be created from plaintext without record reference formatting.\n *\n * Required scopes: `task:read-write`, `object_configuration:read`, `record_permission:read`, `user_management:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Tasks = <ThrowOnError extends boolean = true>(\n options: Options<PostV2TasksData, ThrowOnError>,\n): RequestResult<PostV2TasksResponses, PostV2TasksErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2TasksResponses, PostV2TasksErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/tasks\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete a task\n *\n * Delete a task by ID.\n *\n * Required scopes: `task:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2TasksByTaskId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2TasksByTaskIdData, ThrowOnError>,\n): RequestResult<DeleteV2TasksByTaskIdResponses, DeleteV2TasksByTaskIdErrors, ThrowOnError> =>\n (options.client ?? client).delete<\n DeleteV2TasksByTaskIdResponses,\n DeleteV2TasksByTaskIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/tasks/{task_id}\",\n ...options,\n });\n\n/**\n * Get a task\n *\n * Get a single task by ID.\n *\n * Required scopes: `task:read`, `object_configuration:read`, `record_permission:read`, `user_management:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2TasksByTaskId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2TasksByTaskIdData, ThrowOnError>,\n): RequestResult<GetV2TasksByTaskIdResponses, GetV2TasksByTaskIdErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2TasksByTaskIdResponses,\n GetV2TasksByTaskIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/tasks/{task_id}\",\n ...options,\n });\n\n/**\n * Update a task\n *\n * Updates an existing task by `task_id`. At present, only the `deadline_at`, `is_completed`, `linked_records`, and `assignees` fields can be updated.\n *\n * Required scopes: `task:read-write`, `object_configuration:read`, `record_permission:read`, `user_management:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2TasksByTaskId = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2TasksByTaskIdData, ThrowOnError>,\n): RequestResult<PatchV2TasksByTaskIdResponses, PatchV2TasksByTaskIdErrors, ThrowOnError> =>\n (options.client ?? client).patch<\n PatchV2TasksByTaskIdResponses,\n PatchV2TasksByTaskIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/tasks/{task_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List threads\n *\n * List threads of comments on a record or list entry.\n *\n * Each thread in the response includes at most `80` replies, starting with the oldest. When a thread holds more, its `has_more_comments` is `true`; use [Get a thread and its comments](/rest-api/endpoint-reference/threads/get-a-thread-and-its-comments) to page through every comment in that thread.\n *\n * To view threads on records, you will need the `object_configuration:read` and `record_permission:read` scopes.\n *\n * To view threads on list entries, you will need the `list_configuration:read` and `list_entry:read` scopes.\n *\n * Required scopes: `comment:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2Threads = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2ThreadsData, ThrowOnError>,\n): RequestResult<GetV2ThreadsResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2ThreadsResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/threads\",\n ...options,\n });\n\n/**\n * Get a thread and its comments\n *\n * Get a thread and page through its comments, oldest first, starting with the comment that opened it.\n *\n * Comments are paginated: at most `250` are returned per request. Keep paginating for as long as a `next_cursor` is returned.\n *\n * Supply `created_after` to return only the comments created after a timestamp, which is useful when polling a thread for new replies. The comment that opened the thread is returned only when it also satisfies the filter.\n *\n * To view threads on records, you will need the `object_configuration:read` and `record_permission:read` scopes.\n *\n * To view threads on list entries, you will need the `list_configuration:read` and `list_entry:read` scopes.\n *\n * Required scopes: `comment:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ThreadsByThreadId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ThreadsByThreadIdData, ThrowOnError>,\n): RequestResult<GetV2ThreadsByThreadIdResponses, GetV2ThreadsByThreadIdErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2ThreadsByThreadIdResponses,\n GetV2ThreadsByThreadIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/threads/{thread_id}\",\n ...options,\n });\n\n/**\n * Create a comment\n *\n * Creates a new comment related to an existing thread, record or entry.\n *\n * To create comments on records, you will need the `object_configuration:read` and `record_permission:read` scopes.\n *\n * To create comments on list entries, you will need the `list_configuration:read` and `list_entry:read` scopes.\n *\n * Required scopes: `comment:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Comments = <ThrowOnError extends boolean = true>(\n options: Options<PostV2CommentsData, ThrowOnError>,\n): RequestResult<PostV2CommentsResponses, PostV2CommentsErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2CommentsResponses, PostV2CommentsErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/comments\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete a comment\n *\n * Deletes a comment by ID. If deleting a comment at the head of a thread, all messages in the thread are also deleted.\n *\n * A workspace-level access token may delete any comment. A user-level access token may only delete comments authored by the member it acts for.\n *\n * Required scopes: `comment:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2CommentsByCommentId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2CommentsByCommentIdData, ThrowOnError>,\n): RequestResult<\n DeleteV2CommentsByCommentIdResponses,\n DeleteV2CommentsByCommentIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2CommentsByCommentIdResponses,\n DeleteV2CommentsByCommentIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/comments/{comment_id}\",\n ...options,\n });\n\n/**\n * Get a comment\n *\n * Get a single comment by ID.\n *\n * To view comments on records, you will need the `object_configuration:read` and `record_permission:read` scopes.\n *\n * To view comments on list entries, you will need the `list_configuration:read` and `list_entry:read` scopes.\n *\n * Required scopes: `comment:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2CommentsByCommentId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2CommentsByCommentIdData, ThrowOnError>,\n): RequestResult<GetV2CommentsByCommentIdResponses, GetV2CommentsByCommentIdErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2CommentsByCommentIdResponses,\n GetV2CommentsByCommentIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/comments/{comment_id}\",\n ...options,\n });\n\n/**\n * List emails\n *\n * Lists email metadata from your workspace's connected mailboxes. Email content is never returned.\n *\n * At least one of `linked_object` with `linked_record_ids`, `participants`, or `domain` must be supplied; there is no way to list every email. When several are supplied they are combined with OR: emails matching any of the filters are returned.\n *\n * > **Requesting access:** this endpoint is enabled per workspace and per app while it is in alpha. Contact [support@attio.com](mailto:support@attio.com) to request access.\n *\n * **Things to know**\n *\n * - Filters that identify your own workspace are ignored. This covers a member's or invited member's address, one of your mailboxes, and any of their domains. If every filter you supply is ignored, an empty page is returned.\n * - A filter that names a protected recipient in your workspace is rejected rather than ignored. This covers an address or a domain you supply directly. A record whose address or domain is a protected recipient is ignored instead, in the same way as the filters above.\n * - Emails from a mailbox shared with your workspace as metadata only are returned without a subject line. An email is left out entirely when it has no participant you may see — that is, when every participant outside your workspace is a protected recipient.\n * - An email that reached more than one of your mailboxes is returned once, and `id.mailbox_id` identifies whichever copy was readable.\n * - `linked_records` is derived when you make the request rather than stored, so it reflects your records as they are now.\n * - Emails are returned newest first, ordered by when they were sent. Each request scans a bounded number of emails, so a page can hold fewer emails than `limit`, or none at all, while more are still available. Keep paginating for as long as a `next_cursor` is returned, rather than stopping on a short page.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `email:read`, `record_permission:read`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`.\n */\nexport const getV2Emails = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2EmailsData, ThrowOnError>,\n): RequestResult<GetV2EmailsResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2EmailsResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/emails\",\n ...options,\n });\n\n/**\n * Add emails to the unsubscribe list\n *\n * Adds email addresses to the workspace's sequence unsubscribe list. Email addresses on the unsubscribe list cannot be enrolled in any sequence, and any of their active sequence runs are exited. Email addresses that are already on the unsubscribe list are ignored, so this endpoint is safe to retry.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `sequence_unsubscribe:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2SequencesUnsubscribedEmails = <ThrowOnError extends boolean = true>(\n options: Options<PostV2SequencesUnsubscribedEmailsData, ThrowOnError>,\n): RequestResult<\n PostV2SequencesUnsubscribedEmailsResponses,\n PostV2SequencesUnsubscribedEmailsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2SequencesUnsubscribedEmailsResponses,\n PostV2SequencesUnsubscribedEmailsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/sequences/unsubscribed_emails\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List meetings\n *\n * Lists all meetings in the workspace using a deterministic sort order. When both the `participants` and `linked_record_id` filters are supplied, they are combined with OR: meetings that match either filter are returned.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`.\n */\nexport const getV2Meetings = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2MeetingsData, ThrowOnError>,\n): RequestResult<GetV2MeetingsResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2MeetingsResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings\",\n ...options,\n });\n\n/**\n * Create a meeting\n *\n * Creates a new meeting. [See here](/rest-api/guides/syncing-meetings) for guidance on avoiding duplicate meetings.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read-write`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Meetings = <ThrowOnError extends boolean = true>(\n options: Options<PostV2MeetingsData, ThrowOnError>,\n): RequestResult<PostV2MeetingsResponses, PostV2MeetingsErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2MeetingsResponses, PostV2MeetingsErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete a meeting\n *\n * Deletes a single meeting by ID.\n *\n * Meetings created by calendar sync cannot be deleted through the API. Delete the underlying calendar event, or disconnect the calendar, instead.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2MeetingsByMeetingId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2MeetingsByMeetingIdData, ThrowOnError>,\n): RequestResult<\n DeleteV2MeetingsByMeetingIdResponses,\n DeleteV2MeetingsByMeetingIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2MeetingsByMeetingIdResponses,\n DeleteV2MeetingsByMeetingIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}\",\n ...options,\n });\n\n/**\n * Get a meeting\n *\n * Get a single meeting by ID.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2MeetingsByMeetingId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2MeetingsByMeetingIdData, ThrowOnError>,\n): RequestResult<GetV2MeetingsByMeetingIdResponses, GetV2MeetingsByMeetingIdErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2MeetingsByMeetingIdResponses,\n GetV2MeetingsByMeetingIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}\",\n ...options,\n });\n\n/**\n * Update a meeting (append linked records)\n *\n * Links records to a meeting. The records supplied are added to the meeting's existing linked records, and records which are already linked are ignored. Use the `PUT` endpoint to replace or remove linked records.\n *\n * No other meeting fields can be updated. Attio automatically links the meeting participants' companies to the meeting; this behavior is asynchronous.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read-write`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2MeetingsByMeetingId = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2MeetingsByMeetingIdData, ThrowOnError>,\n): RequestResult<\n PatchV2MeetingsByMeetingIdResponses,\n PatchV2MeetingsByMeetingIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2MeetingsByMeetingIdResponses,\n PatchV2MeetingsByMeetingIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Update a meeting (overwrite linked records)\n *\n * Replaces a meeting's linked records with the records supplied. Any record which is currently linked and is not in the request is unlinked, including records which Attio linked automatically from the meeting's participants. Passing an empty array unlinks every record. Use the `PATCH` endpoint to add linked records without removing the records which already exist.\n *\n * No other meeting fields can be updated. Attio automatically links the meeting participants' companies to the meeting; this behavior is asynchronous, so a company which is linked after this request completes is not removed by it.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read-write`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2MeetingsByMeetingId = <ThrowOnError extends boolean = true>(\n options: Options<PutV2MeetingsByMeetingIdData, ThrowOnError>,\n): RequestResult<PutV2MeetingsByMeetingIdResponses, PutV2MeetingsByMeetingIdErrors, ThrowOnError> =>\n (options.client ?? client).put<\n PutV2MeetingsByMeetingIdResponses,\n PutV2MeetingsByMeetingIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List call recordings\n *\n * List all call recordings for a meeting.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read`, `call_recording:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2MeetingsByMeetingIdCallRecordings = <ThrowOnError extends boolean = true>(\n options: Options<GetV2MeetingsByMeetingIdCallRecordingsData, ThrowOnError>,\n): RequestResult<GetV2MeetingsByMeetingIdCallRecordingsResponses, unknown, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2MeetingsByMeetingIdCallRecordingsResponses,\n unknown,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}/call_recordings\",\n ...options,\n });\n\n/**\n * Create call recording\n *\n * Create a call recording for a meeting. This endpoint is rate limited to 1 request per second.\n *\n * A `transcript` should always be provided — it is technically optional for backwards compatibility, but a call recording created without one will be missing summaries and other transcript-derived features. `video_url` is optional, and a transcript-only call recording (with no video) is fully supported.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read`, `call_recording:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2MeetingsByMeetingIdCallRecordings = <ThrowOnError extends boolean = true>(\n options: Options<PostV2MeetingsByMeetingIdCallRecordingsData, ThrowOnError>,\n): RequestResult<\n PostV2MeetingsByMeetingIdCallRecordingsResponses,\n PostV2MeetingsByMeetingIdCallRecordingsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2MeetingsByMeetingIdCallRecordingsResponses,\n PostV2MeetingsByMeetingIdCallRecordingsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}/call_recordings\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete call recording\n *\n * Deletes the specified call recording. This will remove the call recording and all associated data.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read`, `call_recording:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingId = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdData, ThrowOnError>,\n): RequestResult<\n DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdResponses,\n DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdResponses,\n DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}/call_recordings/{call_recording_id}\",\n ...options,\n });\n\n/**\n * Get call recording\n *\n * Get a single call recording by ID.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read`, `call_recording:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2MeetingsByMeetingIdCallRecordingsByCallRecordingId = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdData, ThrowOnError>,\n): RequestResult<\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdResponses,\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdResponses,\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}/call_recordings/{call_recording_id}\",\n ...options,\n });\n\n/**\n * Deprecated: Get call transcript\n *\n * Deprecated: prefer using `GET /v2/meetings/:meeting_id/call_recordings/:call_recording_id` to get the transcript for a call recording.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read`, `call_recording:read`.\n *\n * Supported token levels: `workspace`.\n */\nexport const getV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscript = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscriptData,\n ThrowOnError\n >,\n): RequestResult<\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscriptResponses,\n unknown,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscriptResponses,\n unknown,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}/call_recordings/{call_recording_id}/transcript\",\n ...options,\n });\n\n/**\n * List files\n *\n * Lists internal files, externally connected files and folders for a specific record. Use the `object` and `record_id` query parameters to specify the record. Optional query parameters may be provided to filter results by storage provider or parent folder.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `object_configuration:read`, `record_permission:read`, `file:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2Files = <ThrowOnError extends boolean = true>(\n options: Options<GetV2FilesData, ThrowOnError>,\n): RequestResult<GetV2FilesResponses, unknown, ThrowOnError> =>\n (options.client ?? client).get<GetV2FilesResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/files\",\n ...options,\n });\n\n/**\n * Create a folder\n *\n * Creates a native folder entry or a connected file/folder entry on an object record.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `file:read-write`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Files = <ThrowOnError extends boolean = true>(\n options: Options<PostV2FilesData, ThrowOnError>,\n): RequestResult<PostV2FilesResponses, unknown, ThrowOnError> =>\n (options.client ?? client).post<PostV2FilesResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/files\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Upload a file\n *\n * Uploads a file to native Attio storage for a record. Send multipart/form-data with a single binary field named `file` together with the body fields `object`, `record_id`, and optional `parent_folder_id`. Maximum file size is 50 MB.\n *\n * This endpoint is rate limited to 1 request per second.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `file:read-write`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2FilesUpload = <ThrowOnError extends boolean = true>(\n options: Options<PostV2FilesUploadData, ThrowOnError>,\n): RequestResult<PostV2FilesUploadResponses, PostV2FilesUploadErrors, ThrowOnError> =>\n (options.client ?? client).post<\n PostV2FilesUploadResponses,\n PostV2FilesUploadErrors,\n ThrowOnError\n >({\n ...formDataBodySerializer,\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/files/upload\",\n ...options,\n headers: {\n \"Content-Type\": null,\n ...options.headers,\n },\n });\n\n/**\n * Delete a file\n *\n * Delete a single file by ID. Deleting a folder will delete all of its descendants.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `file:read-write`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2FilesByFileId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2FilesByFileIdData, ThrowOnError>,\n): RequestResult<DeleteV2FilesByFileIdResponses, DeleteV2FilesByFileIdErrors, ThrowOnError> =>\n (options.client ?? client).delete<\n DeleteV2FilesByFileIdResponses,\n DeleteV2FilesByFileIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/files/{file_id}\",\n ...options,\n });\n\n/**\n * Get a file\n *\n * Get a single file entry by ID.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `file:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2FilesByFileId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2FilesByFileIdData, ThrowOnError>,\n): RequestResult<GetV2FilesByFileIdResponses, GetV2FilesByFileIdErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2FilesByFileIdResponses,\n GetV2FilesByFileIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/files/{file_id}\",\n ...options,\n });\n\n/**\n * Download a file\n *\n * Downloads a file by redirecting to a signed URL.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `object_configuration:read`, `record_permission:read`, `file:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2FilesByFileIdDownload = <ThrowOnError extends boolean = true>(\n options: Options<GetV2FilesByFileIdDownloadData, ThrowOnError>,\n): RequestResult<unknown, unknown, ThrowOnError> =>\n (options.client ?? client).get<unknown, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/files/{file_id}/download\",\n ...options,\n });\n\n/**\n * List webhooks\n *\n * Get all of the webhooks in your workspace.\n *\n * Required scopes: `webhook:read`.\n *\n * Supported token levels: `workspace`.\n */\nexport const getV2Webhooks = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2WebhooksData, ThrowOnError>,\n): RequestResult<GetV2WebhooksResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2WebhooksResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/webhooks\",\n ...options,\n });\n\n/**\n * Create a webhook\n *\n * Create a webhook and associated subscriptions.\n *\n * Each combination of target URL, event type and filter must be unique within your workspace; duplicates are rejected with a 409.\n *\n * Required scopes: `webhook:read-write`.\n *\n * Supported token levels: `workspace`.\n */\nexport const postV2Webhooks = <ThrowOnError extends boolean = true>(\n options: Options<PostV2WebhooksData, ThrowOnError>,\n): RequestResult<PostV2WebhooksResponses, PostV2WebhooksErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2WebhooksResponses, PostV2WebhooksErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/webhooks\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete a webhook\n *\n * Delete a webhook by ID.\n *\n * Required scopes: `webhook:read-write`.\n *\n * Supported token levels: `workspace`.\n */\nexport const deleteV2WebhooksByWebhookId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2WebhooksByWebhookIdData, ThrowOnError>,\n): RequestResult<\n DeleteV2WebhooksByWebhookIdResponses,\n DeleteV2WebhooksByWebhookIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2WebhooksByWebhookIdResponses,\n DeleteV2WebhooksByWebhookIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/webhooks/{webhook_id}\",\n ...options,\n });\n\n/**\n * Get a webhook\n *\n * Get a single webhook.\n *\n * Required scopes: `webhook:read`.\n *\n * Supported token levels: `workspace`.\n */\nexport const getV2WebhooksByWebhookId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2WebhooksByWebhookIdData, ThrowOnError>,\n): RequestResult<GetV2WebhooksByWebhookIdResponses, GetV2WebhooksByWebhookIdErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2WebhooksByWebhookIdResponses,\n GetV2WebhooksByWebhookIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/webhooks/{webhook_id}\",\n ...options,\n });\n\n/**\n * Update a webhook\n *\n * Update a webhook and associated subscriptions.\n *\n * Each combination of target URL, event type and filter must be unique within your workspace; duplicates are rejected with a 409. Changing the target URL re-checks the webhook's existing subscriptions against the new URL.\n *\n * Required scopes: `webhook:read-write`.\n *\n * Supported token levels: `workspace`.\n */\nexport const patchV2WebhooksByWebhookId = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2WebhooksByWebhookIdData, ThrowOnError>,\n): RequestResult<\n PatchV2WebhooksByWebhookIdResponses,\n PatchV2WebhooksByWebhookIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2WebhooksByWebhookIdResponses,\n PatchV2WebhooksByWebhookIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/webhooks/{webhook_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Identify\n *\n * Identify the current access token, the workspace it is linked to, and any permissions it has.\n *\n * Every kind of Attio access token can be introspected:\n *\n * - **Workspace access tokens**, created from a workspace's settings. These have no OAuth client, so `client_id` and `aud` contain the workspace access token's own ID.\n * - **OAuth access tokens**, granted to an app through the OAuth 2.0 authorization code flow. `client_id` and `aud` contain the app ID.\n * - **App access tokens**, issued to an app installation and exposed to that app's server functions as `ATTIO_API_TOKEN`. `client_id` and `aud` contain the app ID.\n *\n * Per [RFC 7662](https://www.rfc-editor.org/rfc/rfc7662), `active` is the only member guaranteed to be present. `exp` is always `null`, because Attio access tokens do not currently expire.\n * All other members are optional, and are omitted rather than returned as `null` when they are not present.\n *\n * Unknown, revoked, and deleted tokens are not treated as an error. They return `200` with `{\"active\": false}` and no other members.\n */\nexport const getV2Self = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2SelfData, ThrowOnError>,\n): RequestResult<GetV2SelfResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2SelfResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/self\",\n ...options,\n });\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { operation } from \"../../commands/operation.ts\";\nimport {\n deleteV2ActivitiesByActivity,\n deleteV2ActivitiesByActivityRecordsByRecordId,\n deleteV2CommentsByCommentId,\n deleteV2FilesByFileId,\n deleteV2ListsByListEntriesByEntryId,\n deleteV2MeetingsByMeetingId,\n deleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingId,\n deleteV2NotesByNoteId,\n deleteV2ObjectsByObject,\n deleteV2ObjectsByObjectRecordsByRecordId,\n deleteV2TasksByTaskId,\n deleteV2WebhooksByWebhookId,\n getV2Activities,\n getV2ActivitiesByActivity,\n getV2ActivitiesByActivityRecordsByRecordId,\n getV2ByTargetByIdentifierAttributes,\n getV2ByTargetByIdentifierAttributesByAttribute,\n getV2ByTargetByIdentifierAttributesByAttributeOptions,\n getV2ByTargetByIdentifierAttributesByAttributeStatuses,\n getV2CommentsByCommentId,\n getV2Emails,\n getV2Files,\n getV2FilesByFileId,\n getV2Lists,\n getV2ListsByList,\n getV2ListsByListEntriesByEntryId,\n getV2ListsByListEntriesByEntryIdAttributesByAttributeValues,\n getV2ListsByListViews,\n getV2Meetings,\n getV2MeetingsByMeetingId,\n getV2MeetingsByMeetingIdCallRecordings,\n getV2MeetingsByMeetingIdCallRecordingsByCallRecordingId,\n getV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscript,\n getV2Notes,\n getV2NotesByNoteId,\n getV2Objects,\n getV2ObjectsByObject,\n getV2ObjectsByObjectRecordsByRecordId,\n getV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValues,\n getV2ObjectsByObjectRecordsByRecordIdEntries,\n getV2ObjectsByObjectViews,\n getV2Self,\n getV2Tasks,\n getV2TasksByTaskId,\n getV2Threads,\n getV2ThreadsByThreadId,\n getV2Webhooks,\n getV2WebhooksByWebhookId,\n getV2WorkspaceMembers,\n getV2WorkspaceMembersByWorkspaceMemberId,\n patchV2ActivitiesByActivity,\n patchV2ActivitiesByActivityRecordsByRecordId,\n patchV2ByTargetByIdentifierAttributesByAttribute,\n patchV2ByTargetByIdentifierAttributesByAttributeOptionsByOption,\n patchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatus,\n patchV2ListsByList,\n patchV2ListsByListEntriesByEntryId,\n patchV2MeetingsByMeetingId,\n patchV2NotesByNoteId,\n patchV2ObjectsByObject,\n patchV2ObjectsByObjectRecordsByRecordId,\n patchV2TasksByTaskId,\n patchV2WebhooksByWebhookId,\n postV2Activities,\n postV2ActivitiesByActivityRecords,\n postV2ActivitiesByActivityRecordsQuery,\n postV2ByTargetByIdentifierAttributes,\n postV2ByTargetByIdentifierAttributesByAttributeOptions,\n postV2ByTargetByIdentifierAttributesByAttributeStatuses,\n postV2Comments,\n postV2Files,\n postV2Lists,\n postV2ListsByListEntries,\n postV2ListsByListEntriesQuery,\n postV2Meetings,\n postV2MeetingsByMeetingIdCallRecordings,\n postV2Notes,\n postV2Objects,\n postV2ObjectsByObjectRecords,\n postV2ObjectsByObjectRecordsMerge,\n postV2ObjectsByObjectRecordsQuery,\n postV2ObjectsRecordsSearch,\n postV2SequencesUnsubscribedEmails,\n postV2Sql,\n postV2Tasks,\n postV2Webhooks,\n putV2ActivitiesByActivityRecords,\n putV2ActivitiesByActivityRecordsByRecordId,\n putV2ListsByListEntries,\n putV2ListsByListEntriesByEntryId,\n putV2ListsByListEntriesByEntryIdAttributesByAttributeValues,\n putV2MeetingsByMeetingId,\n putV2ObjectsByObjectRecords,\n putV2ObjectsByObjectRecordsByRecordId,\n putV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValues,\n} from \"./sdk.gen\";\n\nexport const groups = {\n objects: {\n commands: {\n \"list-objects\": operation({\n body: \"none\",\n call: getV2Objects,\n description: \"List objects\",\n options: [],\n }),\n \"create-an-object\": operation({\n body: \"required\",\n call: postV2Objects,\n description: \"Create an object\",\n options: [],\n }),\n \"delete-an-object\": operation({\n body: \"none\",\n call: deleteV2ObjectsByObject,\n description: \"Delete an object\",\n options: [\n {\n description: \"A UUID or slug to identify the object.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-an-object\": operation({\n body: \"none\",\n call: getV2ObjectsByObject,\n description: \"Get an object\",\n options: [\n {\n description: \"A UUID or slug to identify the object.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-an-object\": operation({\n body: \"required\",\n call: patchV2ObjectsByObject,\n description: \"Update an object\",\n options: [\n {\n description: \"A UUID or slug to identify the object.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"list-views-for-object\": operation({\n body: \"none\",\n call: getV2ObjectsByObjectViews,\n description: \"List views for object\",\n options: [\n {\n description: \"A UUID or slug to identify the object.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"`true` to include archived views. See our [archiving guide](/docs/archiving-vs-deleting) for more information on archiving.\",\n in: \"query\",\n name: \"show_archived\",\n required: false,\n type: \"boolean\",\n },\n {\n description:\n \"The maximum number of views to return. Must be between 1 and 1000. Defaults to 500.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A pagination cursor from a previous response's `pagination.next_cursor`. Omit for the first page.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Objects are the core data models inside of Attio.\",\n },\n activities: {\n commands: {\n \"list-activities\": operation({\n body: \"none\",\n call: getV2Activities,\n description: \"List activities\",\n options: [\n {\n description:\n \"The maximum number of activities to return. Must be between 1 and 1000. Defaults to 100.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A pagination cursor used to fetch the next page of activities. Responses with more activities will include a cursor for you to use here. If not provided, the first page will be returned.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n \"create-an-activity\": operation({\n body: \"required\",\n call: postV2Activities,\n description: \"Create an activity\",\n options: [],\n }),\n \"delete-an-activity\": operation({\n body: \"none\",\n call: deleteV2ActivitiesByActivity,\n description: \"Delete an activity\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-an-activity\": operation({\n body: \"none\",\n call: getV2ActivitiesByActivity,\n description: \"Get an activity\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-an-activity\": operation({\n body: \"required\",\n call: patchV2ActivitiesByActivity,\n description: \"Update an activity\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"\",\n },\n \"activity-records\": {\n commands: {\n \"list-activity-records\": operation({\n body: \"required\",\n call: postV2ActivitiesByActivityRecordsQuery,\n description: \"List activity records\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"create-an-activity-record\": operation({\n body: \"required\",\n call: postV2ActivitiesByActivityRecords,\n description: \"Create an activity record\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"upsert-an-activity-record\": operation({\n body: \"required\",\n call: putV2ActivitiesByActivityRecords,\n description: \"Upsert an activity record\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"The ID or slug of the attribute to use to check if an activity record already exists. The attribute must be unique.\",\n in: \"query\",\n name: \"matching_attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"delete-an-activity-record\": operation({\n body: \"none\",\n call: deleteV2ActivitiesByActivityRecordsByRecordId,\n description: \"Delete an activity record\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the activity record to delete.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-an-activity-record\": operation({\n body: \"none\",\n call: getV2ActivitiesByActivityRecordsByRecordId,\n description: \"Get an activity record\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the activity record.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-an-activity-record-append-multiselect-values\": operation({\n body: \"required\",\n call: patchV2ActivitiesByActivityRecordsByRecordId,\n description: \"Update an activity record (append multiselect values)\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the activity record to update.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-an-activity-record-overwrite-multiselect-values\": operation({\n body: \"required\",\n call: putV2ActivitiesByActivityRecordsByRecordId,\n description: \"Update an activity record (overwrite multiselect values)\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the activity record to update.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"\",\n },\n attributes: {\n commands: {\n \"list-attributes\": operation({\n body: \"none\",\n call: getV2ByTargetByIdentifierAttributes,\n description: \"List attributes\",\n options: [\n {\n description: \"Whether the attributes are on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the object or list the attributes belong to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"The maximum number of results to return. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"Whether archived attributes should be included in the results. See the [full guide to archiving here](/docs/archiving-vs-deleting).\",\n in: \"query\",\n name: \"show_archived\",\n required: false,\n type: \"boolean\",\n },\n ],\n }),\n \"create-an-attribute\": operation({\n body: \"required\",\n call: postV2ByTargetByIdentifierAttributes,\n description: \"Create an attribute\",\n options: [\n {\n description: \"Whether the attribute is to be created on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the object or list the attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-an-attribute\": operation({\n body: \"none\",\n call: getV2ByTargetByIdentifierAttributesByAttribute,\n description: \"Get an attribute\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the object or list the attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-an-attribute\": operation({\n body: \"required\",\n call: patchV2ByTargetByIdentifierAttributesByAttribute,\n description: \"Update an attribute\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the object or list the attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"list-select-options\": operation({\n body: \"none\",\n call: getV2ByTargetByIdentifierAttributesByAttributeOptions,\n description: \"List select options\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or slug to identify the object or list the select attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or slug to identify the attribute you want to list select options on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n {\n description: \"`true` if you want the results to include archived select options.\",\n in: \"query\",\n name: \"show_archived\",\n required: false,\n type: \"boolean\",\n },\n ],\n }),\n \"create-a-select-option\": operation({\n body: \"required\",\n call: postV2ByTargetByIdentifierAttributesByAttributeOptions,\n description: \"Create a select option\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or slug to identify the object or list the select attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute to create a select option on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-select-option\": operation({\n body: \"required\",\n call: patchV2ByTargetByIdentifierAttributesByAttributeOptionsByOption,\n description: \"Update a select option\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or slug to identify the object or list the select attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the select attribute.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or select option title to identify the select option you would like to update.\",\n in: \"path\",\n name: \"option\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"list-statuses\": operation({\n body: \"none\",\n call: getV2ByTargetByIdentifierAttributesByAttributeStatuses,\n description: \"List statuses\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or slug to identify the object or list the status attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute you want to list statuses on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"`true` if you want the results to include archived statuses. See our [archiving guide](/docs/archiving-vs-deleting) for more information on archiving.\",\n in: \"query\",\n name: \"show_archived\",\n required: false,\n type: \"boolean\",\n },\n ],\n }),\n \"create-a-status\": operation({\n body: \"required\",\n call: postV2ByTargetByIdentifierAttributesByAttributeStatuses,\n description: \"Create a status\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or slug to identify the object or list the status attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute the status will belong to.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-status\": operation({\n body: \"required\",\n call: patchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatus,\n description: \"Update a status\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or slug to identify the object or list the status attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute to update the status on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or status title to identify the status to update.\",\n in: \"path\",\n name: \"status\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Attributes model properties of objects and lists.\",\n },\n records: {\n commands: {\n \"list-records\": operation({\n body: \"required\",\n call: postV2ObjectsByObjectRecordsQuery,\n description: \"List records\",\n options: [\n {\n description: \"A UUID or slug to identify the object to list records for.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"create-a-record\": operation({\n body: \"required\",\n call: postV2ObjectsByObjectRecords,\n description: \"Create a record\",\n options: [\n {\n description:\n \"The UUID or slug identifying the object the created record should belong to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"upsert-a-record\": operation({\n body: \"required\",\n call: putV2ObjectsByObjectRecords,\n description: \"Upsert a record\",\n options: [\n {\n description: \"A UUID or slug to identify the object the record should belong to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"The ID or slug of the attribute to use to check if a record already exists. The attribute must be unique.\",\n in: \"query\",\n name: \"matching_attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"delete-a-record\": operation({\n body: \"none\",\n call: deleteV2ObjectsByObjectRecordsByRecordId,\n description: \"Delete a record\",\n options: [\n {\n description: \"The UUID or slug of the object the record belongs to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"The UUID of the record to delete.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-record\": operation({\n body: \"none\",\n call: getV2ObjectsByObjectRecordsByRecordId,\n description: \"Get a record\",\n options: [\n {\n description: \"A UUID or slug identifying the object that the record belongs to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the record.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-record-append-multiselect-values\": operation({\n body: \"required\",\n call: patchV2ObjectsByObjectRecordsByRecordId,\n description: \"Update a record (append multiselect values)\",\n options: [\n {\n description: \"A UUID or slug of the object the record belongs to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID of the record to update.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-record-overwrite-multiselect-values\": operation({\n body: \"required\",\n call: putV2ObjectsByObjectRecordsByRecordId,\n description: \"Update a record (overwrite multiselect values)\",\n options: [\n {\n description: \"A UUID or slug of the object the record belongs to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID of the record to update.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"merge-two-records\": operation({\n body: \"required\",\n call: postV2ObjectsByObjectRecordsMerge,\n description: \"Merge two records\",\n options: [\n {\n description: \"A UUID or slug of the object both records belong to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"list-record-attribute-values\": operation({\n body: \"none\",\n call: getV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValues,\n description: \"List record attribute values\",\n options: [\n {\n description: \"A UUID or slug to identify the object the record belongs to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID to identify the record you want to query values on.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute you want to query values on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"If `true`, the endpoint will return all historic values for the attribute. If `false`, the endpoint will only return the currently active value(s). Defaults to `false`. Cannot be set to `true` for COMINT attributes or enriched attributes on people/company objects.\",\n in: \"query\",\n name: \"show_historic\",\n required: false,\n type: \"boolean\",\n },\n {\n description:\n \"The maximum number of results to return. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n ],\n }),\n \"write-record-attribute-values\": operation({\n body: \"required\",\n call: putV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValues,\n description: \"Write record attribute values\",\n options: [\n {\n description: \"A UUID or slug to identify the object the record belongs to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID to identify the record you want to query values on.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute you want to query values on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"list-record-entries\": operation({\n body: \"none\",\n call: getV2ObjectsByObjectRecordsByRecordIdEntries,\n description: \"List record entries\",\n options: [\n {\n description: \"A UUID or slug identifying the object that the record belongs to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the record.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"The maximum number of results to return. The default is `100` and the maximum is `1000`. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning. The default is `0`. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n ],\n }),\n \"search-records\": operation({\n body: \"required\",\n call: postV2ObjectsRecordsSearch,\n description: \"Search records\",\n options: [],\n }),\n },\n description: \"Records are individual instances of objects e.g. a specific person or company.\",\n },\n sql: {\n commands: {\n \"query-sql\": operation({\n body: \"required\",\n call: postV2Sql,\n description: \"Query SQL\",\n options: [],\n }),\n },\n description: \"Query records and list entries across your workspace using SQL.\",\n },\n lists: {\n commands: {\n \"list-all-lists\": operation({\n body: \"none\",\n call: getV2Lists,\n description: \"List all lists\",\n options: [],\n }),\n \"create-a-list\": operation({\n body: \"required\",\n call: postV2Lists,\n description: \"Create a list\",\n options: [],\n }),\n \"get-a-list\": operation({\n body: \"none\",\n call: getV2ListsByList,\n description: \"Get a list\",\n options: [\n {\n description: \"A UUID or slug to identify the list.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-list\": operation({\n body: \"required\",\n call: patchV2ListsByList,\n description: \"Update a list\",\n options: [\n {\n description: \"A UUID or slug to identify the list to update.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"list-views-for-list\": operation({\n body: \"none\",\n call: getV2ListsByListViews,\n description: \"List views for list\",\n options: [\n {\n description: \"A UUID or slug to identify the list.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"`true` to include archived views. See our [archiving guide](/docs/archiving-vs-deleting) for more information on archiving.\",\n in: \"query\",\n name: \"show_archived\",\n required: false,\n type: \"boolean\",\n },\n {\n description:\n \"The maximum number of views to return. Must be between 1 and 1000. Defaults to 500.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A pagination cursor from a previous response's `pagination.next_cursor`. Omit for the first page.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Lists are used to model a particular process.\",\n },\n entries: {\n commands: {\n \"list-entries\": operation({\n body: \"required\",\n call: postV2ListsByListEntriesQuery,\n description: \"List entries\",\n options: [\n {\n description: \"A UUID or slug to identify the list to retrieve entries from.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"create-an-entry-add-record-to-list\": operation({\n body: \"required\",\n call: postV2ListsByListEntries,\n description: \"Create an entry (add record to list)\",\n options: [\n {\n description:\n \"The UUID or slug identifying the list that the created list entry should belong to.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"upsert-a-list-entry-by-parent\": operation({\n body: \"required\",\n call: putV2ListsByListEntries,\n description: \"Upsert a list entry by parent\",\n options: [\n {\n description: \"A UUID or slug of the list the list entry belongs to.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"delete-a-list-entry\": operation({\n body: \"none\",\n call: deleteV2ListsByListEntriesByEntryId,\n description: \"Delete a list entry\",\n options: [\n {\n description: \"A UUID or slug identifying the list the entry is in.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the entry to delete.\",\n in: \"path\",\n name: \"entry_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-list-entry\": operation({\n body: \"none\",\n call: getV2ListsByListEntriesByEntryId,\n description: \"Get a list entry\",\n options: [\n {\n description: \"A UUID or slug identifying the list the entry is in.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the entry.\",\n in: \"path\",\n name: \"entry_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-list-entry-append-multiselect-values\": operation({\n body: \"required\",\n call: patchV2ListsByListEntriesByEntryId,\n description: \"Update a list entry (append multiselect values)\",\n options: [\n {\n description: \"A UUID or slug of the list the list entry belongs to.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID of the list entry to update.\",\n in: \"path\",\n name: \"entry_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-list-entry-overwrite-multiselect-values\": operation({\n body: \"required\",\n call: putV2ListsByListEntriesByEntryId,\n description: \"Update a list entry (overwrite multiselect values)\",\n options: [\n {\n description: \"A UUID or slug of the list the list entry belongs to.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID of the list entry to update.\",\n in: \"path\",\n name: \"entry_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"list-attribute-values-for-a-list-entry\": operation({\n body: \"none\",\n call: getV2ListsByListEntriesByEntryIdAttributesByAttributeValues,\n description: \"List attribute values for a list entry\",\n options: [\n {\n description: \"A UUID or slug identifying the list the entry is in.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the entry.\",\n in: \"path\",\n name: \"entry_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute you want to query values on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"If `true`, the endpoint will return all historic values for the attribute. If `false`, the endpoint will only return the currently active value(s). Defaults to `false`. Can only be set to `true` for attributes which support historic data; the endpoint will throw if set to `true` for non-historic attributes.\",\n in: \"query\",\n name: \"show_historic\",\n required: false,\n type: \"boolean\",\n },\n {\n description:\n \"The maximum number of results to return. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n ],\n }),\n \"write-list-entry-attribute-values\": operation({\n body: \"required\",\n call: putV2ListsByListEntriesByEntryIdAttributesByAttributeValues,\n description: \"Write list entry attribute values\",\n options: [\n {\n description: \"A UUID or slug identifying the list the entry is in.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the entry.\",\n in: \"path\",\n name: \"entry_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute you want to query values on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Entries are elements in a list that reference a single parent record.\",\n },\n \"workspace-members\": {\n commands: {\n \"list-workspace-members\": operation({\n body: \"none\",\n call: getV2WorkspaceMembers,\n description: \"List workspace members\",\n options: [],\n }),\n \"get-a-workspace-member\": operation({\n body: \"none\",\n call: getV2WorkspaceMembersByWorkspaceMemberId,\n description: \"Get a workspace member\",\n options: [\n {\n description: \"A UUID to identify the workspace member.\",\n in: \"path\",\n name: \"workspace_member_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Workspace members represent a user with access to a workspace.\",\n },\n notes: {\n commands: {\n \"list-notes\": operation({\n body: \"none\",\n call: getV2Notes,\n description: \"List notes\",\n options: [\n {\n description:\n \"The maximum number of results to return. The default is `10` and the maximum is `50`. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning. The default is `0`. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n {\n description: \"The slug or ID of the parent object the notes belong to.\",\n in: \"query\",\n name: \"parent_object\",\n required: false,\n type: \"string\",\n },\n {\n description: \"The ID of the parent record the notes belong to.\",\n in: \"query\",\n name: \"parent_record_id\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n \"create-a-note\": operation({\n body: \"required\",\n call: postV2Notes,\n description: \"Create a note\",\n options: [],\n }),\n \"delete-a-note\": operation({\n body: \"none\",\n call: deleteV2NotesByNoteId,\n description: \"Delete a note\",\n options: [\n {\n description: \"A UUID which identifies the note to delete.\",\n in: \"path\",\n name: \"note_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-note\": operation({\n body: \"none\",\n call: getV2NotesByNoteId,\n description: \"Get a note\",\n options: [\n {\n description: \"A UUID which identifies the note.\",\n in: \"path\",\n name: \"note_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-note\": operation({\n body: \"required\",\n call: patchV2NotesByNoteId,\n description: \"Update a note\",\n options: [\n {\n description: \"A UUID which identifies the note to update.\",\n in: \"path\",\n name: \"note_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Notes are rich text documents that reference a single parent record.\",\n },\n tasks: {\n commands: {\n \"list-tasks\": operation({\n body: \"none\",\n call: getV2Tasks,\n description: \"List tasks\",\n options: [\n {\n description:\n \"The maximum number of results to return. Defaults to 500. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning. Defaults to 0. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n 'Optionally sort the results. \"created_at:asc\" returns oldest results first, \"created_at:desc\" returns the newest results first. \"completed_at:asc\" and \"completed_at:desc\" sort by completion time. With \"completed_at:asc\", incomplete tasks (no completion date) appear first, followed by completed tasks oldest-first. With \"completed_at:desc\", completed tasks appear first (newest-first), followed by incomplete tasks. To exclude incomplete tasks, filter by is_completed. If unspecified, defaults to \"created_at:asc\" (oldest results first).',\n in: \"query\",\n name: \"sort\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Pass a value to this parameter to filter results to only those tasks that contain the specified record in the `linked_records` property of the task. This parameter should identify the object that the linked record belongs to. For example, if filtering to tasks that link to a specific person record, this parameter should be `people`. If provided, `linked_record_id` must also be provided.\",\n in: \"query\",\n name: \"linked_object\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Pass a value to this parameter to filter results to only those tasks that contain the specified record in the `linked_records` property of the task. This parameter should contain the record ID of the linked record. If provided, `linked_object` must also be provided.\",\n in: \"query\",\n name: \"linked_record_id\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Filter tasks by workspace member assignees. Workspace members can be referenced by either their email address or ID. Pass an empty value or the string `null` to find tasks with no assignee.\",\n in: \"query\",\n name: \"assignee\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Filter tasks by whether they have been completed. By default, both completed and non-completed tasks are returned. Specify `true` to only return completed tasks, or `false` to only return non-completed tasks.\",\n in: \"query\",\n name: \"is_completed\",\n required: false,\n type: \"boolean\",\n },\n ],\n }),\n \"create-a-task\": operation({\n body: \"required\",\n call: postV2Tasks,\n description: \"Create a task\",\n options: [],\n }),\n \"delete-a-task\": operation({\n body: \"none\",\n call: deleteV2TasksByTaskId,\n description: \"Delete a task\",\n options: [\n {\n description: \"The ID of the task to delete.\",\n in: \"path\",\n name: \"task_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-task\": operation({\n body: \"none\",\n call: getV2TasksByTaskId,\n description: \"Get a task\",\n options: [\n {\n description: \"The ID of the task.\",\n in: \"path\",\n name: \"task_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-task\": operation({\n body: \"required\",\n call: patchV2TasksByTaskId,\n description: \"Update a task\",\n options: [\n {\n description: \"The ID of the task to update.\",\n in: \"path\",\n name: \"task_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description:\n \"A task is a defined, actionable item with references to linked records and assigned workspace members.\",\n },\n threads: {\n commands: {\n \"list-threads\": operation({\n body: \"none\",\n call: getV2Threads,\n description: \"List threads\",\n options: [\n {\n description:\n \"Use this parameter to filter to threads on a specific record. Must be passed with `object`.\",\n in: \"query\",\n name: \"record_id\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Use this parameter to filter to threads on a specific record. Must be passed with `record_id`. Accepts either a slug or an ID.\",\n in: \"query\",\n name: \"object\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Use this parameter to filter to threads on a specific entry. Must be passed with `list`.\",\n in: \"query\",\n name: \"entry_id\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Use this parameter to filter to threads on a specific entry. Must be passed with `entry_id`. Accepts either a slug or an ID.\",\n in: \"query\",\n name: \"list\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"The maximum number of results to return. The default is `10` and the maximum is `50`. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning. The default is `0`. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n ],\n }),\n \"get-a-thread-and-its-comments\": operation({\n body: \"none\",\n call: getV2ThreadsByThreadId,\n description: \"Get a thread and its comments\",\n options: [\n {\n description: \"A UUID which identifies the thread.\",\n in: \"path\",\n name: \"thread_id\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"The maximum number of comments to return. Defaults to `250`, which is also the maximum.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A cursor for pagination. Use the `next_cursor` from the previous response to get the next page of comments.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n {\n description: \"Only return comments created after this timestamp.\",\n in: \"query\",\n name: \"created_after\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Threads are groups of comments on either a record or entry.\",\n },\n comments: {\n commands: {\n \"create-a-comment\": operation({\n body: \"required\",\n call: postV2Comments,\n description: \"Create a comment\",\n options: [],\n }),\n \"delete-a-comment\": operation({\n body: \"none\",\n call: deleteV2CommentsByCommentId,\n description: \"Delete a comment\",\n options: [\n {\n description: \"The ID of the comment to delete.\",\n in: \"path\",\n name: \"comment_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-comment\": operation({\n body: \"none\",\n call: getV2CommentsByCommentId,\n description: \"Get a comment\",\n options: [\n {\n description: \"A UUID which identifies the comment.\",\n in: \"path\",\n name: \"comment_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Comments are messages on a thread.\",\n },\n emails: {\n commands: {\n \"list-emails\": operation({\n body: \"none\",\n call: getV2Emails,\n description: \"List emails\",\n options: [\n {\n description:\n \"The maximum number of emails to return. Must be between 1 and 50. Defaults to 25.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A pagination cursor used to fetch the next page of emails. Responses with more emails will include a cursor for you to use here. If not provided, the first page will be returned.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"The object to filter emails by. Must be the slug or ID of either the people or companies object. If provided, linked_record_ids must also be provided.\",\n in: \"query\",\n name: \"linked_object\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"A comma-separated list of up to 10 record IDs to filter emails by. All IDs must belong to the object given in `linked_object`, so filtering by both people and companies requires two requests. If provided, linked_object must also be provided.\",\n in: \"query\",\n name: \"linked_record_ids\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"A comma-separated list of up to 10 email addresses. Emails that include at least one of them as a participant are returned.\",\n in: \"query\",\n name: \"participants\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"A domain to filter emails by. Emails with at least one participant at this domain are returned.\",\n in: \"query\",\n name: \"domain\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Only return emails sent after this timestamp. `sent_after` is exclusive, so an email sent at exactly this timestamp is not returned.\",\n in: \"query\",\n name: \"sent_after\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Only return emails sent before this timestamp. `sent_before` is exclusive, so an email sent at exactly this timestamp is not returned.\",\n in: \"query\",\n name: \"sent_before\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"If `true`, an email is only returned when at least one participant outside your workspace looks like a person rather than an automated sender (`notifications@`, `no-reply@`, meeting notetakers, …). Defaults to `false`, which returns every email regardless of who sent it.\",\n in: \"query\",\n name: \"exclude_automated_participants\",\n required: false,\n type: \"boolean\",\n },\n ],\n }),\n },\n description: \"Emails are messages synced from connected mailboxes.\",\n },\n sequences: {\n commands: {\n \"add-emails-to-the-unsubscribe-list\": operation({\n body: \"required\",\n call: postV2SequencesUnsubscribedEmails,\n description: \"Add emails to the unsubscribe list\",\n options: [],\n }),\n },\n description: \"Sequences are automated email campaigns sent from Attio.\",\n },\n meetings: {\n commands: {\n \"list-meetings\": operation({\n body: \"none\",\n call: getV2Meetings,\n description: \"List meetings\",\n options: [\n {\n description:\n \"The maximum number of meetings to return. Must be between 1 and 200. Defaults to 50.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A pagination cursor used to fetch the next page of meetings. Responses with more meetings will include a cursor for you to use here. If not provided, the first page will be returned.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"The object to filter meetings by. Must be a valid object slug or ID. If provided, linked_record_id must also be provided.\",\n in: \"query\",\n name: \"linked_object\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Used to filter meetings to only those values that include a specific linked record. Must be a valid record ID. If provided, linked_object must also be provided. When combined with `participants`, the filters are combined with OR: meetings matching either filter are returned.\",\n in: \"query\",\n name: \"linked_record_id\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"A comma-separated list of emails to filter meetings by. If provided, meetings will be filtered to only include meetings that include at least one of the provided emails as participants. When combined with `linked_record_id`, the filters are combined with OR: meetings matching either filter are returned.\",\n in: \"query\",\n name: \"participants\",\n required: false,\n type: \"string\",\n },\n {\n description: \"The order in which to sort the meetings. Defaults to start_asc.\",\n in: \"query\",\n name: \"sort\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Use `ends_from` to filter meetings to only those that end after the specified timestamp. `ends_from` is inclusive, meaning that meetings that end at the exact timestamp will be included in results. When evaluating all-day meetings, we filter results from the perspective of a specific timezone (see `timezone` for more information).\",\n in: \"query\",\n name: \"ends_from\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Use `starts_before` to filter meetings to only those that start before the specified timestamp. `starts_before` is exclusive, meaning that meetings that start at the exact timestamp will not be included in results. When evaluating all-day meetings, we filter results from the perspective of a specific timezone (see `timezone` for more information).\",\n in: \"query\",\n name: \"starts_before\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"The timezone to use when filtering meetings using `ends_from` and `starts_before`. Defaults to UTC. This property has no effect for non-all-day meetings.\",\n in: \"query\",\n name: \"timezone\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n \"create-a-meeting\": operation({\n body: \"required\",\n call: postV2Meetings,\n description: \"Create a meeting\",\n options: [],\n }),\n \"delete-a-meeting\": operation({\n body: \"none\",\n call: deleteV2MeetingsByMeetingId,\n description: \"Delete a meeting\",\n options: [\n {\n description: \"A UUID which identifies the meeting to delete.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-meeting\": operation({\n body: \"none\",\n call: getV2MeetingsByMeetingId,\n description: \"Get a meeting\",\n options: [\n {\n description: \"A UUID which identifies the meeting.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-meeting-append-linked-records\": operation({\n body: \"required\",\n call: patchV2MeetingsByMeetingId,\n description: \"Update a meeting (append linked records)\",\n options: [\n {\n description: \"A UUID which identifies the meeting to update.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-meeting-overwrite-linked-records\": operation({\n body: \"required\",\n call: putV2MeetingsByMeetingId,\n description: \"Update a meeting (overwrite linked records)\",\n options: [\n {\n description: \"A UUID which identifies the meeting to update.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description:\n \"Meetings are events synced from your calendar, added manually or added from third-party integrations.\",\n },\n \"call-recordings\": {\n commands: {\n \"list-call-recordings\": operation({\n body: \"none\",\n call: getV2MeetingsByMeetingIdCallRecordings,\n description: \"List call recordings\",\n options: [\n {\n description: \"The ID of the meeting to list call recordings for.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"The maximum number of results to return. Defaults to 50 with a maximum of 200.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A cursor for pagination. Use the `next_cursor` from the previous response to get the next page of results.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n \"create-call-recording\": operation({\n body: \"required\",\n call: postV2MeetingsByMeetingIdCallRecordings,\n description: \"Create call recording\",\n options: [\n {\n description: \"The ID of the meeting this recording belongs to.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"delete-call-recording\": operation({\n body: \"none\",\n call: deleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingId,\n description: \"Delete call recording\",\n options: [\n {\n description: \"The ID of the meeting this call recording belongs to.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"The ID of the call recording to delete.\",\n in: \"path\",\n name: \"call_recording_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-call-recording\": operation({\n body: \"none\",\n call: getV2MeetingsByMeetingIdCallRecordingsByCallRecordingId,\n description: \"Get call recording\",\n options: [\n {\n description: \"The ID of the meeting this recording belongs to.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"The ID of the call recording to retrieve.\",\n in: \"path\",\n name: \"call_recording_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description:\n \"Call recordings store video, audio, transcript and speaker information for calls.\",\n },\n transcripts: {\n commands: {\n \"deprecated-get-call-transcript\": operation({\n body: \"none\",\n call: getV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscript,\n description: \"Deprecated: Get call transcript\",\n options: [\n {\n description: \"The ID of the meeting.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"The ID of the call recording to get the transcript for.\",\n in: \"path\",\n name: \"call_recording_id\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A cursor for pagination through transcript segments. Use the `next_cursor` from the previous response to get the next page of speech segments within this transcript.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n },\n description:\n \"Transcripts contain the speech segments and speaker information for a call recording.\",\n },\n files: {\n commands: {\n \"list-files\": operation({\n body: \"none\",\n call: getV2Files,\n description: \"List files\",\n options: [\n {\n description: \"The object slug or ID.\",\n in: \"query\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"The record ID for the specific record whose files you want to list.\",\n in: \"query\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"Filter results by storage provider.\",\n in: \"query\",\n name: \"storage_provider\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Filter by parent folder ID. Each file entry has provided optioanl parent_folder_id that can be used to filter results by folder. When omitted, entries at all nesting levels are returned.\",\n in: \"query\",\n name: \"parent_folder_id\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"The maximum number of files to return. Must be between 1 and 200. Defaults to 50.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A pagination cursor used to fetch the next page of files. Responses with more files will include a cursor for you to use here. If not provided, the first page will be returned.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n \"create-a-folder\": operation({\n body: \"required\",\n call: postV2Files,\n description: \"Create a folder\",\n options: [],\n }),\n \"delete-a-file\": operation({\n body: \"none\",\n call: deleteV2FilesByFileId,\n description: \"Delete a file\",\n options: [\n {\n description: \"A UUID which identifies the file to delete.\",\n in: \"path\",\n name: \"file_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-file\": operation({\n body: \"none\",\n call: getV2FilesByFileId,\n description: \"Get a file\",\n options: [\n {\n description: \"A UUID which identifies the file entry.\",\n in: \"path\",\n name: \"file_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description:\n \"Files are documents and folders linked to records, stored either in Attio or connected via external storage providers.\",\n },\n webhooks: {\n commands: {\n \"list-webhooks\": operation({\n body: \"none\",\n call: getV2Webhooks,\n description: \"List webhooks\",\n options: [\n {\n description:\n \"The maximum number of results to return, between 10 and 100, defaults to 10. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning, defaults to 0. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n ],\n }),\n \"create-a-webhook\": operation({\n body: \"required\",\n call: postV2Webhooks,\n description: \"Create a webhook\",\n options: [],\n }),\n \"delete-a-webhook\": operation({\n body: \"none\",\n call: deleteV2WebhooksByWebhookId,\n description: \"Delete a webhook\",\n options: [\n {\n description: \"A UUID identifying the webhook to delete.\",\n in: \"path\",\n name: \"webhook_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-webhook\": operation({\n body: \"none\",\n call: getV2WebhooksByWebhookId,\n description: \"Get a webhook\",\n options: [\n {\n description: \"A UUID which identifies the webhook.\",\n in: \"path\",\n name: \"webhook_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-webhook\": operation({\n body: \"required\",\n call: patchV2WebhooksByWebhookId,\n description: \"Update a webhook\",\n options: [\n {\n description: \"A UUID which identifies the webhook.\",\n in: \"path\",\n name: \"webhook_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description:\n \"Webhooks allow you to listen for changes to data in Attio, for example when a record is updated.\",\n },\n meta: {\n commands: {\n identify: operation({\n body: \"none\",\n call: getV2Self,\n description: \"Identify\",\n options: [],\n }),\n },\n description: \"Meta endpoints are used to get information about the API token.\",\n },\n};\n","import { cli, define } from \"gunshi\";\nimport { renderHeader } from \"gunshi/renderer\";\n\nimport type { Environment } from \"./api/client.ts\";\nimport { type Operation, operationCommand } from \"./commands/operation.ts\";\nimport { reportError, usageError } from \"./errors.ts\";\nimport { groups } from \"./types/attio/commands.gen.ts\";\n\ntype Command = ReturnType<typeof define>;\n\nconst rootCommand = define({\n name: \"attio-api\",\n description: \"Agent-friendly access to the Attio API\",\n run: () => 'Run \"attio --help\" for usage information.',\n});\n\ntype Group = { commands: Record<string, Operation>; description: string };\n\n/** One command per group of operations, with the group's operations beneath it. */\nfunction commandTree(env: Environment): Record<string, Command> {\n const tree: Record<string, Command> = {};\n for (const [group, { commands, description }] of Object.entries<Group>(groups)) {\n const subCommands: Record<string, Command> = {};\n for (const [name, source] of Object.entries(commands)) {\n subCommands[name] = operationCommand(name, source, env);\n }\n tree[group] = define({\n name: group,\n description,\n run: () => `Run \"attio-api ${group} --help\" for usage information.`,\n subCommands,\n });\n }\n return tree;\n}\n\nexport async function main(\n argv: string[] = process.argv.slice(2),\n env: Environment = process.env,\n): Promise<number> {\n try {\n const pkg = await import(\"../package.json\", { with: { type: \"json\" } });\n\n await cli(argv, rootCommand, {\n name: \"attio-api\",\n version: pkg.default.version,\n strict: true,\n subCommands: commandTree(env),\n // A header on every run would precede the JSON that scripts and agents parse.\n renderHeader: (ctx) => (ctx.values.help ? renderHeader(ctx) : Promise.resolve(\"\")),\n // Usage problems go to stderr as JSON, like every other failure.\n renderValidationErrors: null,\n onBeforeCommand: (ctx) => {\n // Strict mode rejects unknown options only; no command takes positional arguments.\n if (ctx.validationError || ctx.values.help || ctx.values.version) return;\n const unexpected = [...ctx.positionals.slice(ctx.commandPath.length), ...ctx.rest];\n if (unexpected.length > 0) throw usageError(`Unexpected argument: ${unexpected.join(\" \")}`);\n },\n onAfterCommand: (ctx, result) => {\n if (ctx.values.help || ctx.values.version) return;\n if (result) console.log(result);\n },\n });\n return 0;\n } catch (error) {\n return reportError(error);\n }\n}\n"],"mappings":"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M;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,YAAY;EACV,UAAU;GACR,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,sBAAsB,UAAU;IAC9B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,sBAAsB,UAAU;IAC9B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,sBAAsB,UAAU;IAC9B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,oBAAoB;EAClB,UAAU;GACR,yBAAyB,UAAU;IACjC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,6BAA6B,UAAU;IACrC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,6BAA6B,UAAU;IACrC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,6BAA6B,UAAU;IACrC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,0BAA0B,UAAU;IAClC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,uDAAuD,UAAU;IAC/D,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,0DAA0D,UAAU;IAClE,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,YAAY;EACV,UAAU;GACR,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,uBAAuB,UAAU;IAC/B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,uBAAuB,UAAU;IAC/B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,uBAAuB,UAAU;IAC/B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,0BAA0B,UAAU;IAClC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,0BAA0B,UAAU;IAClC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,SAAS;EACP,UAAU;GACR,gBAAgB,UAAU;IACxB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,gBAAgB,UAAU;IACxB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,6CAA6C,UAAU;IACrD,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,gDAAgD,UAAU;IACxD,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,qBAAqB,UAAU;IAC7B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,gCAAgC,UAAU;IACxC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,iCAAiC,UAAU;IACzC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,uBAAuB,UAAU;IAC/B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,kBAAkB,UAAU;IAC1B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;EACH;EACA,aAAa;CACf;CACA,KAAK;EACH,UAAU,EACR,aAAa,UAAU;GACrB,MAAM;GACN,MAAM;GACN,aAAa;GACb,SAAS,CAAC;EACZ,CAAC,EACH;EACA,aAAa;CACf;CACA,OAAO;EACL,UAAU;GACR,kBAAkB,UAAU;IAC1B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,cAAc,UAAU;IACtB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,uBAAuB,UAAU;IAC/B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,SAAS;EACP,UAAU;GACR,gBAAgB,UAAU;IACxB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,sCAAsC,UAAU;IAC9C,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iCAAiC,UAAU;IACzC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,uBAAuB,UAAU;IAC/B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iDAAiD,UAAU;IACzD,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,oDAAoD,UAAU;IAC5D,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,0CAA0C,UAAU;IAClD,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,qCAAqC,UAAU;IAC7C,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,qBAAqB;EACnB,UAAU;GACR,0BAA0B,UAAU;IAClC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,0BAA0B,UAAU;IAClC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,OAAO;EACL,UAAU;GACR,cAAc,UAAU;IACtB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,cAAc,UAAU;IACtB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,OAAO;EACL,UAAU;GACR,cAAc,UAAU;IACtB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,cAAc,UAAU;IACtB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aACE;CACJ;CACA,SAAS;EACP,UAAU;GACR,gBAAgB,UAAU;IACxB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,iCAAiC,UAAU;IACzC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,UAAU;EACR,UAAU;GACR,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,QAAQ;EACN,UAAU,EACR,eAAe,UAAU;GACvB,MAAM;GACN,MAAM;GACN,aAAa;GACb,SAAS;IACP;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;GACF;EACF,CAAC,EACH;EACA,aAAa;CACf;CACA,WAAW;EACT,UAAU,EACR,sCAAsC,UAAU;GAC9C,MAAM;GACN,MAAM;GACN,aAAa;GACb,SAAS,CAAC;EACZ,CAAC,EACH;EACA,aAAa;CACf;CACA,UAAU;EACR,UAAU;GACR,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,0CAA0C,UAAU;IAClD,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,6CAA6C,UAAU;IACrD,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aACE;CACJ;CACA,mBAAmB;EACjB,UAAU;GACR,wBAAwB,UAAU;IAChC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,yBAAyB,UAAU;IACjC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,yBAAyB,UAAU;IACjC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,sBAAsB,UAAU;IAC9B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aACE;CACJ;CACA,aAAa;EACX,UAAU,EACR,kCAAkC,UAAU;GAC1C,MAAM;GACN,MAAM;GACN,aAAa;GACb,SAAS;IACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;GACF;EACF,CAAC,EACH;EACA,aACE;CACJ;CACA,OAAO;EACL,UAAU;GACR,cAAc,UAAU;IACtB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,cAAc,UAAU;IACtB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aACE;CACJ;CACA,UAAU;EACR,UAAU;GACR,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aACE;CACJ;CACA,MAAM;EACJ,UAAU,EACR,UAAU,UAAU;GAClB,MAAM;GACN,MAAM;GACN,aAAa;GACb,SAAS,CAAC;EACZ,CAAC,EACH;EACA,aAAa;CACf;AACF;;;AC3rEA,MAAM,cAAc,OAAO;CACzB,MAAM;CACN,aAAa;CACb,WAAW;AACb,CAAC;;AAKD,SAAS,YAAY,KAA2C;CAC9D,MAAM,OAAgC,CAAC;CACvC,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,kBAAkB,OAAO,QAAe,MAAM,GAAG;EAC9E,MAAM,cAAuC,CAAC;EAC9C,KAAK,MAAM,CAAC,MAAM,WAAW,OAAO,QAAQ,QAAQ,GAClD,YAAY,QAAQ,iBAAiB,MAAM,QAAQ,GAAG;EAExD,KAAK,SAAS,OAAO;GACnB,MAAM;GACN;GACA,WAAW,kBAAkB,MAAM;GACnC;EACF,CAAC;CACH;CACA,OAAO;AACT;AAEA,eAAsB,KACpB,OAAiB,QAAQ,KAAK,MAAM,CAAC,GACrC,MAAmB,QAAQ,KACV;CACjB,IAAI;EACF,MAAM,MAAM,MAAM,OAAO;EAEzB,MAAM,IAAI,MAAM,aAAa;GAC3B,MAAM;GACN,SAAS,IAAI,QAAQ;GACrB,QAAQ;GACR,aAAa,YAAY,GAAG;GAE5B,eAAe,QAAS,IAAI,OAAO,OAAO,aAAa,GAAG,IAAI,QAAQ,QAAQ,EAAE;GAEhF,wBAAwB;GACxB,kBAAkB,QAAQ;IAExB,IAAI,IAAI,mBAAmB,IAAI,OAAO,QAAQ,IAAI,OAAO,SAAS;IAClE,MAAM,aAAa,CAAC,GAAG,IAAI,YAAY,MAAM,IAAI,YAAY,MAAM,GAAG,GAAG,IAAI,IAAI;IACjF,IAAI,WAAW,SAAS,GAAG,MAAM,WAAW,wBAAwB,WAAW,KAAK,GAAG,GAAG;GAC5F;GACA,iBAAiB,KAAK,WAAW;IAC/B,IAAI,IAAI,OAAO,QAAQ,IAAI,OAAO,SAAS;IAC3C,IAAI,QAAQ,QAAQ,IAAI,MAAM;GAChC;EACF,CAAC;EACD,OAAO;CACT,SAAS,OAAO;EACd,OAAO,YAAY,KAAK;CAC1B;AACF"}
1
+ {"version":3,"file":"cli-cTGHeWUi.mjs","names":[],"sources":["../src/errors.ts","../src/types/attio/core/bodySerializer.gen.ts","../src/types/attio/core/params.gen.ts","../src/types/attio/core/serverSentEvents.gen.ts","../src/types/attio/core/pathSerializer.gen.ts","../src/types/attio/core/utils.gen.ts","../src/types/attio/core/auth.gen.ts","../src/types/attio/client/utils.gen.ts","../src/types/attio/client/client.gen.ts","../src/api/client.ts","../src/commands/operation.ts","../src/types/attio/client.gen.ts","../src/types/attio/sdk.gen.ts","../src/types/attio/commands.gen.ts","../src/cli.ts"],"sourcesContent":["import * as v from \"valibot\";\n\ntype CliErrorCode =\n | \"API_ERROR\"\n | \"AUTH_REQUIRED\"\n | \"BAD_REQUEST\"\n | \"FORBIDDEN\"\n | \"INVALID_ARGUMENT\"\n | \"NETWORK_ERROR\"\n | \"NOT_FOUND\"\n | \"RATE_LIMITED\"\n | \"UNAUTHORIZED\";\n\ntype CliErrorOptions = {\n /** The error type and code Attio reported, kept so callers can branch on Attio's own vocabulary. */\n attio?: { code?: string; type?: string };\n code: CliErrorCode;\n exitCode: number;\n hint?: string;\n status?: number;\n};\n\nexport class CliError extends Error {\n readonly options: CliErrorOptions;\n\n constructor(message: string, options: CliErrorOptions) {\n super(message);\n this.name = \"CliError\";\n this.options = options;\n }\n}\n\nconst AttioErrorBody = v.object({\n code: v.optional(v.string()),\n message: v.optional(v.string()),\n type: v.optional(v.string()),\n});\n\nconst HTTP_FAILURES: Record<number, Pick<CliErrorOptions, \"code\" | \"exitCode\" | \"hint\">> = {\n 400: {\n code: \"BAD_REQUEST\",\n exitCode: 2,\n hint: \"Correct the options or the body against the operation's page in Attio's API reference.\",\n },\n 401: {\n code: \"UNAUTHORIZED\",\n exitCode: 2,\n hint: \"Set ATTIO_ACCESS_TOKEN to a valid Attio access token.\",\n },\n 403: {\n code: \"FORBIDDEN\",\n exitCode: 3,\n hint: \"Attio's message names what is missing: a scope on the token, access to the resource, or a plan that allows the operation.\",\n },\n 404: { code: \"NOT_FOUND\", exitCode: 1 },\n 429: { code: \"RATE_LIMITED\", exitCode: 4, hint: \"Wait before running the command again.\" },\n};\n\n/** Turns an HTTP failure and the body Attio sent with it into a CLI error. */\nexport function httpError(status: number, body: unknown): CliError {\n const parsed = v.safeParse(AttioErrorBody, body);\n const { code, message, type } = parsed.success ? parsed.output : {};\n return new CliError(message || `Attio returned HTTP ${status}.`, {\n ...(HTTP_FAILURES[status] ?? { code: \"API_ERROR\", exitCode: 1 }),\n attio: { code, type },\n status,\n });\n}\n\n/** Describes a command line that the CLI cannot act on. */\nexport function usageError(message: string): CliError {\n return new CliError(message, { code: \"INVALID_ARGUMENT\", exitCode: 2 });\n}\n\n/** Describes a request that never produced a response from Attio. */\nexport function networkError(cause: unknown): CliError {\n const detail = cause instanceof Error && cause.message ? ` (${cause.message})` : \"\";\n return new CliError(`Could not reach Attio${detail}.`, {\n code: \"NETWORK_ERROR\",\n exitCode: 1,\n hint: \"Check the network connection. A write may have reached Attio, so check before retrying.\",\n });\n}\n\n/** Writes the failure to stderr as JSON and returns the process exit code. */\nexport function reportError(error: unknown): number {\n // Gunshi collects every problem with the command line into one AggregateError.\n if (error instanceof AggregateError) {\n const messages = error.errors.map((item) =>\n item instanceof Error ? item.message : String(item),\n );\n return reportError(\n usageError(messages.filter(Boolean).join(\"; \") || \"Invalid command arguments.\"),\n );\n }\n if (error instanceof CliError) {\n const { exitCode, ...details } = error.options;\n console.error(JSON.stringify({ error: { ...details, message: error.message } }, null, 2));\n return exitCode;\n }\n const message = error instanceof Error ? error.message : String(error);\n console.error(JSON.stringify({ error: { code: \"UNEXPECTED\", message } }, null, 2));\n return 1;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from \"./pathSerializer.gen\";\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: unknown) => unknown;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === \"string\" || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === \"string\") {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: (body: unknown): FormData => {\n const data = new FormData();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: (body: unknown): string =>\n JSON.stringify(body, (_key, value) => (typeof value === \"bigint\" ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body: unknown): string => {\n const data = new URLSearchParams();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\ntype Slot = \"body\" | \"headers\" | \"path\" | \"query\";\n\nexport type Field =\n | {\n in: Exclude<Slot, \"body\">;\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If omitted, we use the same value as `key`.\n */\n map?: string;\n }\n | {\n in: Extract<Slot, \"body\">;\n /**\n * Key isn't required for bodies.\n */\n key?: string;\n map?: string;\n }\n | {\n /**\n * Field name. This is the name we want the user to see and use.\n */\n key: string;\n /**\n * Field mapped name. This is the name we want to use in the request.\n * If `in` is omitted, `map` aliases `key` to the transport layer.\n */\n map: Slot;\n };\n\nexport interface Fields {\n allowExtra?: Partial<Record<Slot, boolean>>;\n args?: ReadonlyArray<Field>;\n}\n\nexport type FieldsConfig = ReadonlyArray<Field | Fields>;\n\nconst extraPrefixesMap: Record<string, Slot> = {\n $body_: \"body\",\n $headers_: \"headers\",\n $path_: \"path\",\n $query_: \"query\",\n};\nconst extraPrefixes = Object.entries(extraPrefixesMap);\n\ntype KeyMap = Map<\n string,\n | {\n in: Slot;\n map?: string;\n }\n | {\n in?: never;\n map: Slot;\n }\n>;\n\nfunction buildKeyMap(fields: FieldsConfig, map?: KeyMap): KeyMap {\n if (!map) {\n map = new Map();\n }\n\n for (const config of fields) {\n if (\"in\" in config) {\n if (config.key) {\n map.set(config.key, {\n in: config.in,\n map: config.map,\n });\n }\n } else if (\"key\" in config) {\n map.set(config.key, {\n map: config.map,\n });\n } else if (config.args) {\n buildKeyMap(config.args, map);\n }\n }\n\n return map;\n}\n\ninterface Params {\n body?: unknown;\n headers: Record<string, unknown>;\n path: Record<string, unknown>;\n query: Record<string, unknown>;\n}\n\nfunction stripEmptySlots(params: Params): void {\n for (const [slot, value] of Object.entries(params)) {\n if (slot === \"body\") continue;\n if (value && typeof value === \"object\" && !Array.isArray(value) && !Object.keys(value).length) {\n delete params[slot as Slot];\n }\n }\n}\n\nexport function buildClientParams(args: ReadonlyArray<unknown>, fields: FieldsConfig): Params {\n const params: Params = {\n headers: Object.create(null),\n path: Object.create(null),\n query: Object.create(null),\n };\n\n const map = buildKeyMap(fields);\n\n function writeSlot(slot: Slot, key: string, value: unknown): void {\n let record = params[slot] as Record<string, unknown> | undefined;\n if (record === undefined) {\n record = Object.create(null) as Record<string, unknown>;\n params[slot] = record;\n }\n record[key] = value;\n }\n\n let config: FieldsConfig[number] | undefined;\n\n for (const [index, arg] of args.entries()) {\n if (fields[index]) {\n config = fields[index];\n }\n\n if (!config) {\n continue;\n }\n\n if (\"in\" in config) {\n if (config.key) {\n const field = map.get(config.key)!;\n const name = field.map || config.key;\n if (field.in) {\n writeSlot(field.in, name, arg);\n }\n } else {\n params.body = arg;\n }\n } else {\n for (const [key, value] of Object.entries(arg ?? {})) {\n const field = map.get(key);\n\n if (field) {\n if (field.in) {\n const name = field.map || key;\n writeSlot(field.in, name, value);\n } else {\n params[field.map] = value;\n }\n } else {\n const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix));\n\n if (extra) {\n const [prefix, slot] = extra;\n writeSlot(slot, key.slice(prefix.length), value);\n } else if (\"allowExtra\" in config && config.allowExtra) {\n for (const [slot, allowed] of Object.entries(config.allowExtra)) {\n if (allowed) {\n writeSlot(slot as Slot, key, value);\n break;\n }\n }\n }\n }\n }\n }\n }\n\n stripEmptySlots(params);\n\n return params;\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","import ky, { isHTTPError, type RetryOptions } from \"ky\";\n\nimport { CliError, httpError, networkError } from \"../errors.ts\";\nimport { type Client, createClient } from \"../types/attio/client/index.ts\";\n\nexport type Environment = Record<string, string | undefined>;\n\n/** The methods Ky does not repeat by default, because repeating them is not safe in general. */\nconst WRITE_METHODS = new Set([\"PATCH\", \"POST\"]);\n\n/** Attio does not process a rate-limited request, so that is the one failure after which a write is repeated. */\nconst writeRetry: RetryOptions = {\n methods: [\"patch\", \"post\"],\n shouldRetry: ({ error }) => isHTTPError(error) && error.response.status === 429,\n};\n\n/** Sends a request through Ky for its timeout and its retries. */\nasync function transport(...input: Parameters<typeof fetch>): Promise<Response> {\n const request = new Request(...input);\n const pending = ky(request, WRITE_METHODS.has(request.method) ? { retry: writeRetry } : {});\n // Ky's timeout covers a body only when Ky reads it, so the body is read here and handed on whole.\n const [response, body] = await Promise.all([pending, pending.text()]);\n return new Response(body || null, response);\n}\n\nexport function attioClient(env: Environment): Client {\n const accessToken = env.ATTIO_ACCESS_TOKEN?.trim();\n if (!accessToken) {\n throw new CliError(\"No Attio access token is configured.\", {\n code: \"AUTH_REQUIRED\",\n exitCode: 2,\n hint: \"Set ATTIO_ACCESS_TOKEN to an Attio access token.\",\n });\n }\n\n const client = createClient({\n auth: accessToken,\n baseUrl: \"https://api.attio.com\",\n fetch: transport,\n throwOnError: true,\n });\n client.interceptors.error.use((error, response) => {\n // Ky raises HTTP failures itself once its retries run out, with Attio's body already parsed.\n if (isHTTPError(error)) return httpError(error.response.status, error.data);\n return response ? error : networkError(error);\n });\n return client;\n}\n","import { type Args, define } from \"gunshi\";\n\nimport { attioClient, type Environment } from \"../api/client.ts\";\nimport { usageError } from \"../errors.ts\";\nimport type { Client } from \"../types/attio/client/index.ts\";\n\ntype OperationOption = {\n description: string;\n in: \"path\" | \"query\";\n name: string;\n required: boolean;\n type: \"boolean\" | \"integer\" | \"string\";\n};\n\ntype OperationDetails = {\n body: \"none\" | \"optional\" | \"required\";\n description: string;\n options: readonly OperationOption[];\n};\n\ntype OperationInput = {\n body?: unknown;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n};\n\n/** One Attio API operation, ready to run against input taken from the command line. */\nexport type Operation = OperationDetails & {\n run: (client: Client, input: OperationInput) => Promise<unknown>;\n};\n\n/**\n * Wraps an SDK function so every operation runs the same way. Command-line input has no static\n * type, and Attio is what validates it.\n */\nexport function operation(\n definition: OperationDetails & {\n // `never` admits every SDK function, whatever options it declares.\n call: (options: never) => Promise<{ data: unknown }>;\n },\n): Operation {\n const { call, ...details } = definition;\n return {\n ...details,\n run: async (client, input) => {\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- command-line input has no static type; Attio validates it\n const { data } = await call({ ...input, client } as never);\n return data;\n },\n };\n}\n\nconst ARGUMENT_TYPES = { boolean: \"boolean\", integer: \"number\", string: \"string\" } as const;\n\nfunction optionName(parameter: string): string {\n return parameter.replaceAll(\"_\", \"-\");\n}\n\nfunction parseBody(text: string): unknown {\n try {\n return JSON.parse(text);\n } catch {\n throw usageError(\"--body must be valid JSON.\");\n }\n}\n\n/** Builds the CLI command that runs one operation with the options given on the command line. */\nexport function operationCommand(name: string, source: Operation, env: Environment) {\n const args: Args = {};\n for (const option of source.options) {\n args[optionName(option.name)] = {\n description: option.description,\n required: option.required || undefined,\n type: ARGUMENT_TYPES[option.type],\n };\n }\n if (source.body !== \"none\") {\n args.body = {\n description: \"Request body as JSON\",\n required: source.body === \"required\" || undefined,\n type: \"string\",\n };\n }\n\n return define({\n name,\n description: source.description,\n args,\n run: async (ctx) => {\n const values: Record<string, unknown> = ctx.values;\n const input: OperationInput = {};\n for (const option of source.options) {\n const value = values[optionName(option.name)];\n if (value !== undefined) (input[option.in] ??= {})[option.name] = value;\n }\n if (typeof values.body === \"string\") input.body = parseBody(values.body);\n return JSON.stringify(await source.run(attioClient(env), input), null, 2);\n },\n });\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> = (\n override?: Config<ClientOptions & T>,\n) => Config<Required<ClientOptions> & T>;\n\nexport const client: Client = createClient(\n createConfig<ClientOptions2>({ baseUrl: \"https://api.attio.com\", throwOnError: true }),\n);\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport {\n type Client,\n type ClientMeta,\n formDataBodySerializer,\n type Options as Options2,\n type RequestResult,\n type TDataShape,\n} from \"./client\";\nimport { client } from \"./client.gen\";\nimport type {\n DeleteV2ActivitiesByActivityData,\n DeleteV2ActivitiesByActivityErrors,\n DeleteV2ActivitiesByActivityRecordsByRecordIdData,\n DeleteV2ActivitiesByActivityRecordsByRecordIdErrors,\n DeleteV2ActivitiesByActivityRecordsByRecordIdResponses,\n DeleteV2ActivitiesByActivityResponses,\n DeleteV2CommentsByCommentIdData,\n DeleteV2CommentsByCommentIdErrors,\n DeleteV2CommentsByCommentIdResponses,\n DeleteV2FilesByFileIdData,\n DeleteV2FilesByFileIdErrors,\n DeleteV2FilesByFileIdResponses,\n DeleteV2ListsByListEntriesByEntryIdData,\n DeleteV2ListsByListEntriesByEntryIdErrors,\n DeleteV2ListsByListEntriesByEntryIdResponses,\n DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdData,\n DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdErrors,\n DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdResponses,\n DeleteV2MeetingsByMeetingIdData,\n DeleteV2MeetingsByMeetingIdErrors,\n DeleteV2MeetingsByMeetingIdResponses,\n DeleteV2NotesByNoteIdData,\n DeleteV2NotesByNoteIdErrors,\n DeleteV2NotesByNoteIdResponses,\n DeleteV2ObjectsByObjectData,\n DeleteV2ObjectsByObjectErrors,\n DeleteV2ObjectsByObjectRecordsByRecordIdData,\n DeleteV2ObjectsByObjectRecordsByRecordIdErrors,\n DeleteV2ObjectsByObjectRecordsByRecordIdResponses,\n DeleteV2ObjectsByObjectResponses,\n DeleteV2TasksByTaskIdData,\n DeleteV2TasksByTaskIdErrors,\n DeleteV2TasksByTaskIdResponses,\n DeleteV2WebhooksByWebhookIdData,\n DeleteV2WebhooksByWebhookIdErrors,\n DeleteV2WebhooksByWebhookIdResponses,\n GetV2ActivitiesByActivityData,\n GetV2ActivitiesByActivityErrors,\n GetV2ActivitiesByActivityRecordsByRecordIdData,\n GetV2ActivitiesByActivityRecordsByRecordIdErrors,\n GetV2ActivitiesByActivityRecordsByRecordIdResponses,\n GetV2ActivitiesByActivityResponses,\n GetV2ActivitiesData,\n GetV2ActivitiesResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeData,\n GetV2ByTargetByIdentifierAttributesByAttributeErrors,\n GetV2ByTargetByIdentifierAttributesByAttributeOptionsData,\n GetV2ByTargetByIdentifierAttributesByAttributeOptionsErrors,\n GetV2ByTargetByIdentifierAttributesByAttributeOptionsResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeStatusesData,\n GetV2ByTargetByIdentifierAttributesByAttributeStatusesErrors,\n GetV2ByTargetByIdentifierAttributesByAttributeStatusesResponses,\n GetV2ByTargetByIdentifierAttributesData,\n GetV2ByTargetByIdentifierAttributesResponses,\n GetV2CommentsByCommentIdData,\n GetV2CommentsByCommentIdErrors,\n GetV2CommentsByCommentIdResponses,\n GetV2EmailsData,\n GetV2EmailsResponses,\n GetV2FilesByFileIdData,\n GetV2FilesByFileIdDownloadData,\n GetV2FilesByFileIdErrors,\n GetV2FilesByFileIdResponses,\n GetV2FilesData,\n GetV2FilesResponses,\n GetV2ListsByListData,\n GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesData,\n GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesErrors,\n GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesResponses,\n GetV2ListsByListEntriesByEntryIdData,\n GetV2ListsByListEntriesByEntryIdErrors,\n GetV2ListsByListEntriesByEntryIdResponses,\n GetV2ListsByListErrors,\n GetV2ListsByListResponses,\n GetV2ListsByListViewsData,\n GetV2ListsByListViewsErrors,\n GetV2ListsByListViewsResponses,\n GetV2ListsData,\n GetV2ListsResponses,\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdData,\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdErrors,\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdResponses,\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscriptData,\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscriptResponses,\n GetV2MeetingsByMeetingIdCallRecordingsData,\n GetV2MeetingsByMeetingIdCallRecordingsResponses,\n GetV2MeetingsByMeetingIdData,\n GetV2MeetingsByMeetingIdErrors,\n GetV2MeetingsByMeetingIdResponses,\n GetV2MeetingsData,\n GetV2MeetingsResponses,\n GetV2NotesByNoteIdData,\n GetV2NotesByNoteIdErrors,\n GetV2NotesByNoteIdResponses,\n GetV2NotesData,\n GetV2NotesErrors,\n GetV2NotesResponses,\n GetV2ObjectsByObjectData,\n GetV2ObjectsByObjectErrors,\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesData,\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesErrors,\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesResponses,\n GetV2ObjectsByObjectRecordsByRecordIdData,\n GetV2ObjectsByObjectRecordsByRecordIdEntriesData,\n GetV2ObjectsByObjectRecordsByRecordIdEntriesResponses,\n GetV2ObjectsByObjectRecordsByRecordIdErrors,\n GetV2ObjectsByObjectRecordsByRecordIdResponses,\n GetV2ObjectsByObjectResponses,\n GetV2ObjectsByObjectViewsData,\n GetV2ObjectsByObjectViewsErrors,\n GetV2ObjectsByObjectViewsResponses,\n GetV2ObjectsData,\n GetV2ObjectsResponses,\n GetV2SelfData,\n GetV2SelfResponses,\n GetV2TasksByTaskIdData,\n GetV2TasksByTaskIdErrors,\n GetV2TasksByTaskIdResponses,\n GetV2TasksData,\n GetV2TasksResponses,\n GetV2ThreadsByThreadIdData,\n GetV2ThreadsByThreadIdErrors,\n GetV2ThreadsByThreadIdResponses,\n GetV2ThreadsData,\n GetV2ThreadsResponses,\n GetV2WebhooksByWebhookIdData,\n GetV2WebhooksByWebhookIdErrors,\n GetV2WebhooksByWebhookIdResponses,\n GetV2WebhooksData,\n GetV2WebhooksResponses,\n GetV2WorkspaceMembersByWorkspaceMemberIdData,\n GetV2WorkspaceMembersByWorkspaceMemberIdErrors,\n GetV2WorkspaceMembersByWorkspaceMemberIdResponses,\n GetV2WorkspaceMembersData,\n GetV2WorkspaceMembersResponses,\n PatchV2ActivitiesByActivityData,\n PatchV2ActivitiesByActivityErrors,\n PatchV2ActivitiesByActivityRecordsByRecordIdData,\n PatchV2ActivitiesByActivityRecordsByRecordIdErrors,\n PatchV2ActivitiesByActivityRecordsByRecordIdResponses,\n PatchV2ActivitiesByActivityResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeData,\n PatchV2ByTargetByIdentifierAttributesByAttributeErrors,\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionData,\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionErrors,\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusData,\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusErrors,\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusResponses,\n PatchV2ListsByListData,\n PatchV2ListsByListEntriesByEntryIdData,\n PatchV2ListsByListEntriesByEntryIdErrors,\n PatchV2ListsByListEntriesByEntryIdResponses,\n PatchV2ListsByListErrors,\n PatchV2ListsByListResponses,\n PatchV2MeetingsByMeetingIdData,\n PatchV2MeetingsByMeetingIdErrors,\n PatchV2MeetingsByMeetingIdResponses,\n PatchV2NotesByNoteIdData,\n PatchV2NotesByNoteIdErrors,\n PatchV2NotesByNoteIdResponses,\n PatchV2ObjectsByObjectData,\n PatchV2ObjectsByObjectErrors,\n PatchV2ObjectsByObjectRecordsByRecordIdData,\n PatchV2ObjectsByObjectRecordsByRecordIdErrors,\n PatchV2ObjectsByObjectRecordsByRecordIdResponses,\n PatchV2ObjectsByObjectResponses,\n PatchV2TasksByTaskIdData,\n PatchV2TasksByTaskIdErrors,\n PatchV2TasksByTaskIdResponses,\n PatchV2WebhooksByWebhookIdData,\n PatchV2WebhooksByWebhookIdErrors,\n PatchV2WebhooksByWebhookIdResponses,\n PostV2ActivitiesByActivityRecordsData,\n PostV2ActivitiesByActivityRecordsErrors,\n PostV2ActivitiesByActivityRecordsQueryData,\n PostV2ActivitiesByActivityRecordsQueryErrors,\n PostV2ActivitiesByActivityRecordsQueryResponses,\n PostV2ActivitiesByActivityRecordsResponses,\n PostV2ActivitiesData,\n PostV2ActivitiesErrors,\n PostV2ActivitiesResponses,\n PostV2ByTargetByIdentifierAttributesByAttributeOptionsData,\n PostV2ByTargetByIdentifierAttributesByAttributeOptionsErrors,\n PostV2ByTargetByIdentifierAttributesByAttributeOptionsResponses,\n PostV2ByTargetByIdentifierAttributesByAttributeStatusesData,\n PostV2ByTargetByIdentifierAttributesByAttributeStatusesErrors,\n PostV2ByTargetByIdentifierAttributesByAttributeStatusesResponses,\n PostV2ByTargetByIdentifierAttributesData,\n PostV2ByTargetByIdentifierAttributesErrors,\n PostV2ByTargetByIdentifierAttributesResponses,\n PostV2CommentsData,\n PostV2CommentsErrors,\n PostV2CommentsResponses,\n PostV2FilesData,\n PostV2FilesResponses,\n PostV2FilesUploadData,\n PostV2FilesUploadErrors,\n PostV2FilesUploadResponses,\n PostV2ListsByListEntriesData,\n PostV2ListsByListEntriesErrors,\n PostV2ListsByListEntriesQueryData,\n PostV2ListsByListEntriesQueryErrors,\n PostV2ListsByListEntriesQueryResponses,\n PostV2ListsByListEntriesResponses,\n PostV2ListsData,\n PostV2ListsErrors,\n PostV2ListsResponses,\n PostV2MeetingsByMeetingIdCallRecordingsData,\n PostV2MeetingsByMeetingIdCallRecordingsErrors,\n PostV2MeetingsByMeetingIdCallRecordingsResponses,\n PostV2MeetingsData,\n PostV2MeetingsErrors,\n PostV2MeetingsResponses,\n PostV2NotesData,\n PostV2NotesErrors,\n PostV2NotesResponses,\n PostV2ObjectsByObjectRecordsData,\n PostV2ObjectsByObjectRecordsErrors,\n PostV2ObjectsByObjectRecordsMergeData,\n PostV2ObjectsByObjectRecordsMergeErrors,\n PostV2ObjectsByObjectRecordsMergeResponses,\n PostV2ObjectsByObjectRecordsQueryData,\n PostV2ObjectsByObjectRecordsQueryErrors,\n PostV2ObjectsByObjectRecordsQueryResponses,\n PostV2ObjectsByObjectRecordsResponses,\n PostV2ObjectsData,\n PostV2ObjectsErrors,\n PostV2ObjectsRecordsSearchData,\n PostV2ObjectsRecordsSearchErrors,\n PostV2ObjectsRecordsSearchResponses,\n PostV2ObjectsResponses,\n PostV2SequencesUnsubscribedEmailsData,\n PostV2SequencesUnsubscribedEmailsErrors,\n PostV2SequencesUnsubscribedEmailsResponses,\n PostV2SqlData,\n PostV2SqlErrors,\n PostV2SqlResponses,\n PostV2TasksData,\n PostV2TasksErrors,\n PostV2TasksResponses,\n PostV2WebhooksData,\n PostV2WebhooksErrors,\n PostV2WebhooksResponses,\n PutV2ActivitiesByActivityRecordsByRecordIdData,\n PutV2ActivitiesByActivityRecordsByRecordIdErrors,\n PutV2ActivitiesByActivityRecordsByRecordIdResponses,\n PutV2ActivitiesByActivityRecordsData,\n PutV2ActivitiesByActivityRecordsErrors,\n PutV2ActivitiesByActivityRecordsResponses,\n PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesData,\n PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesErrors,\n PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesResponses,\n PutV2ListsByListEntriesByEntryIdData,\n PutV2ListsByListEntriesByEntryIdErrors,\n PutV2ListsByListEntriesByEntryIdResponses,\n PutV2ListsByListEntriesData,\n PutV2ListsByListEntriesErrors,\n PutV2ListsByListEntriesResponses,\n PutV2MeetingsByMeetingIdData,\n PutV2MeetingsByMeetingIdErrors,\n PutV2MeetingsByMeetingIdResponses,\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesData,\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesErrors,\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesResponses,\n PutV2ObjectsByObjectRecordsByRecordIdData,\n PutV2ObjectsByObjectRecordsByRecordIdErrors,\n PutV2ObjectsByObjectRecordsByRecordIdResponses,\n PutV2ObjectsByObjectRecordsData,\n PutV2ObjectsByObjectRecordsErrors,\n PutV2ObjectsByObjectRecordsResponses,\n} from \"./types.gen\";\n\nexport type Options<\n TData extends TDataShape = TDataShape,\n ThrowOnError extends boolean = boolean,\n TResponse = unknown,\n> = 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 objects\n *\n * Lists all system-defined and user-defined objects in your workspace.\n *\n * Required scopes: `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2Objects = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2ObjectsData, ThrowOnError>,\n): RequestResult<GetV2ObjectsResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2ObjectsResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects\",\n ...options,\n });\n\n/**\n * Create an object\n *\n * Creates a new custom object in your workspace.\n *\n * Required scopes: `object_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Objects = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ObjectsData, ThrowOnError>,\n): RequestResult<PostV2ObjectsResponses, PostV2ObjectsErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2ObjectsResponses, PostV2ObjectsErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete an object\n *\n * Deletes a single object by its `object_id` or slug, along with all of its records. Only custom objects can be deleted; system objects, such as people and companies, cannot.\n *\n * This endpoint should be used with caution as it has the potential to remove a large amount of potentially valuable data.\n *\n * Required scopes: `object_configuration:read-write`, `record_permission:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2ObjectsByObject = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2ObjectsByObjectData, ThrowOnError>,\n): RequestResult<DeleteV2ObjectsByObjectResponses, DeleteV2ObjectsByObjectErrors, ThrowOnError> =>\n (options.client ?? client).delete<\n DeleteV2ObjectsByObjectResponses,\n DeleteV2ObjectsByObjectErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}\",\n ...options,\n });\n\n/**\n * Get an object\n *\n * Gets a single object by its `object_id` or slug.\n *\n * Required scopes: `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ObjectsByObject = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ObjectsByObjectData, ThrowOnError>,\n): RequestResult<GetV2ObjectsByObjectResponses, GetV2ObjectsByObjectErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2ObjectsByObjectResponses,\n GetV2ObjectsByObjectErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}\",\n ...options,\n });\n\n/**\n * Update an object\n *\n * Updates a single object. The object to be updated is identified by its `object_id`.\n *\n * Required scopes: `object_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ObjectsByObject = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2ObjectsByObjectData, ThrowOnError>,\n): RequestResult<PatchV2ObjectsByObjectResponses, PatchV2ObjectsByObjectErrors, ThrowOnError> =>\n (options.client ?? client).patch<\n PatchV2ObjectsByObjectResponses,\n PatchV2ObjectsByObjectErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List views for object\n *\n * Lists saved views for an object. Results are ordered by view ID (`id.view_id` ascending).\n *\n * Required scopes: `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ObjectsByObjectViews = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ObjectsByObjectViewsData, ThrowOnError>,\n): RequestResult<\n GetV2ObjectsByObjectViewsResponses,\n GetV2ObjectsByObjectViewsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ObjectsByObjectViewsResponses,\n GetV2ObjectsByObjectViewsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/views\",\n ...options,\n });\n\n/**\n * List activities\n *\n * Lists all system-defined and user-defined activities in your workspace.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2Activities = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2ActivitiesData, ThrowOnError>,\n): RequestResult<GetV2ActivitiesResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2ActivitiesResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities\",\n ...options,\n });\n\n/**\n * Create an activity\n *\n * Creates a new custom activity in your workspace. Your workspace must have the custom activities billing feature enabled. Public apps may instead create activities with the integration activities billing feature.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Activities = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ActivitiesData, ThrowOnError>,\n): RequestResult<PostV2ActivitiesResponses, PostV2ActivitiesErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2ActivitiesResponses, PostV2ActivitiesErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete an activity\n *\n * Deletes a single activity by its `activity_id` or slug, along with all of its records. Archived activities can also be deleted.\n *\n * This endpoint should be used with caution as it has the potential to remove a large amount of potentially valuable data.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_configuration:read-write`, `activity_record:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2ActivitiesByActivity = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2ActivitiesByActivityData, ThrowOnError>,\n): RequestResult<\n DeleteV2ActivitiesByActivityResponses,\n DeleteV2ActivitiesByActivityErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2ActivitiesByActivityResponses,\n DeleteV2ActivitiesByActivityErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}\",\n ...options,\n });\n\n/**\n * Get an activity\n *\n * Gets a single activity by its `activity_id` or slug.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ActivitiesByActivity = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ActivitiesByActivityData, ThrowOnError>,\n): RequestResult<\n GetV2ActivitiesByActivityResponses,\n GetV2ActivitiesByActivityErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ActivitiesByActivityResponses,\n GetV2ActivitiesByActivityErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}\",\n ...options,\n });\n\n/**\n * Update an activity\n *\n * Updates a single activity by its `activity_id` or slug. The schema an activity extends is fixed after creation, so `extends` cannot be changed.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ActivitiesByActivity = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2ActivitiesByActivityData, ThrowOnError>,\n): RequestResult<\n PatchV2ActivitiesByActivityResponses,\n PatchV2ActivitiesByActivityErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2ActivitiesByActivityResponses,\n PatchV2ActivitiesByActivityErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List activity records\n *\n * Lists activity records, with the option to filter and sort results.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_record:read`, `activity_configuration:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ActivitiesByActivityRecordsQuery = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ActivitiesByActivityRecordsQueryData, ThrowOnError>,\n): RequestResult<\n PostV2ActivitiesByActivityRecordsQueryResponses,\n PostV2ActivitiesByActivityRecordsQueryErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ActivitiesByActivityRecordsQueryResponses,\n PostV2ActivitiesByActivityRecordsQueryErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}/records/query\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Create an activity record\n *\n * Creates a new activity record, for example one specific phone call.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_record:read-write`, `activity_configuration:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ActivitiesByActivityRecords = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ActivitiesByActivityRecordsData, ThrowOnError>,\n): RequestResult<\n PostV2ActivitiesByActivityRecordsResponses,\n PostV2ActivitiesByActivityRecordsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ActivitiesByActivityRecordsResponses,\n PostV2ActivitiesByActivityRecordsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}/records\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Upsert an activity record\n *\n * Use this endpoint to create or update an activity record. A matching attribute is used to search for existing activity records. If a record is found with the same value for the matching attribute, that record will be updated. If no record with the same value for the matching attribute is found, a new record will be created instead. If you would like to avoid matching, please use the create activity record endpoint.\n *\n * If the matching attribute is a multiselect attribute, new values will be added and existing values will not be deleted. For any other multiselect attribute, all values will be either created or deleted as necessary to match the list of supplied values.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_record:read-write`, `activity_configuration:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ActivitiesByActivityRecords = <ThrowOnError extends boolean = true>(\n options: Options<PutV2ActivitiesByActivityRecordsData, ThrowOnError>,\n): RequestResult<\n PutV2ActivitiesByActivityRecordsResponses,\n PutV2ActivitiesByActivityRecordsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).put<\n PutV2ActivitiesByActivityRecordsResponses,\n PutV2ActivitiesByActivityRecordsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}/records\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete an activity record\n *\n * Deletes a single activity record by its `record_id`.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_record:read-write`, `activity_configuration:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2ActivitiesByActivityRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2ActivitiesByActivityRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n DeleteV2ActivitiesByActivityRecordsByRecordIdResponses,\n DeleteV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2ActivitiesByActivityRecordsByRecordIdResponses,\n DeleteV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}/records/{record_id}\",\n ...options,\n });\n\n/**\n * Get an activity record\n *\n * Gets a single activity record by its `record_id`.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_record:read`, `activity_configuration:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ActivitiesByActivityRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ActivitiesByActivityRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n GetV2ActivitiesByActivityRecordsByRecordIdResponses,\n GetV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ActivitiesByActivityRecordsByRecordIdResponses,\n GetV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}/records/{record_id}\",\n ...options,\n });\n\n/**\n * Update an activity record (append multiselect values)\n *\n * Use this endpoint to update activity records by `record_id`. If the update payload includes multiselect attributes, the values supplied will be created and prepended to the list of values that already exist (if any). Use the `PUT` endpoint to overwrite or remove multiselect attribute values.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_record:read-write`, `activity_configuration:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ActivitiesByActivityRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2ActivitiesByActivityRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n PatchV2ActivitiesByActivityRecordsByRecordIdResponses,\n PatchV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2ActivitiesByActivityRecordsByRecordIdResponses,\n PatchV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}/records/{record_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Update an activity record (overwrite multiselect values)\n *\n * Use this endpoint to update activity records by `record_id`. If the update payload includes multiselect attributes, the values supplied will overwrite/remove the list of values that already exist (if any). Use the `PATCH` endpoint to append multiselect values without removing those that already exist.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `activity_record:read-write`, `activity_configuration:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ActivitiesByActivityRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<PutV2ActivitiesByActivityRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n PutV2ActivitiesByActivityRecordsByRecordIdResponses,\n PutV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).put<\n PutV2ActivitiesByActivityRecordsByRecordIdResponses,\n PutV2ActivitiesByActivityRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/activities/{activity}/records/{record_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List attributes\n *\n * Lists all attributes defined on a specific object or list. Attributes are returned in the order that they are sorted by in the UI.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read`. When `target` is `lists`, the required scopes are `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ByTargetByIdentifierAttributes = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ByTargetByIdentifierAttributesData, ThrowOnError>,\n): RequestResult<GetV2ByTargetByIdentifierAttributesResponses, unknown, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2ByTargetByIdentifierAttributesResponses,\n unknown,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes\",\n ...options,\n });\n\n/**\n * Create an attribute\n *\n * Creates a new attribute on either an object or a list.\n *\n * For record-reference attributes, you can optionally create a bidirectional relationship by providing a `relationship` object. This will create two entangled attributes: one on the specified object and a reverse attribute on the related object.\n *\n * To create an attribute on an object, you must also have the `object_configuration:read-write` scope.\n *\n * To create an attribute on a list, you must also have the `list_configuration:read-write` scope.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ByTargetByIdentifierAttributes = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ByTargetByIdentifierAttributesData, ThrowOnError>,\n): RequestResult<\n PostV2ByTargetByIdentifierAttributesResponses,\n PostV2ByTargetByIdentifierAttributesErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ByTargetByIdentifierAttributesResponses,\n PostV2ByTargetByIdentifierAttributesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Get an attribute\n *\n * Gets information about a single attribute on either an object or a list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read`. When `target` is `lists`, the required scopes are `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ByTargetByIdentifierAttributesByAttribute = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ByTargetByIdentifierAttributesByAttributeData, ThrowOnError>,\n): RequestResult<\n GetV2ByTargetByIdentifierAttributesByAttributeResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ByTargetByIdentifierAttributesByAttributeResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}\",\n ...options,\n });\n\n/**\n * Update an attribute\n *\n * Updates a single attribute on a given object or list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read-write`. When `target` is `lists`, the required scopes are `list_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ByTargetByIdentifierAttributesByAttribute = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<PatchV2ByTargetByIdentifierAttributesByAttributeData, ThrowOnError>,\n): RequestResult<\n PatchV2ByTargetByIdentifierAttributesByAttributeResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2ByTargetByIdentifierAttributesByAttributeResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List select options\n *\n * Lists all select options for a particular attribute on either an object or a list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read`. When `target` is `lists`, the required scopes are `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ByTargetByIdentifierAttributesByAttributeOptions = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<GetV2ByTargetByIdentifierAttributesByAttributeOptionsData, ThrowOnError>,\n): RequestResult<\n GetV2ByTargetByIdentifierAttributesByAttributeOptionsResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeOptionsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ByTargetByIdentifierAttributesByAttributeOptionsResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeOptionsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}/options\",\n ...options,\n });\n\n/**\n * Create a select option\n *\n * Adds a select option to a select attribute on an object or a list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read-write`. When `target` is `lists`, the required scopes are `list_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ByTargetByIdentifierAttributesByAttributeOptions = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<PostV2ByTargetByIdentifierAttributesByAttributeOptionsData, ThrowOnError>,\n): RequestResult<\n PostV2ByTargetByIdentifierAttributesByAttributeOptionsResponses,\n PostV2ByTargetByIdentifierAttributesByAttributeOptionsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ByTargetByIdentifierAttributesByAttributeOptionsResponses,\n PostV2ByTargetByIdentifierAttributesByAttributeOptionsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}/options\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Update a select option\n *\n * Updates a select option on an attribute on either an object or a list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read-write`. When `target` is `lists`, the required scopes are `list_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ByTargetByIdentifierAttributesByAttributeOptionsByOption = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionData,\n ThrowOnError\n >,\n): RequestResult<\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeOptionsByOptionErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}/options/{option}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List statuses\n *\n * Lists all statuses for a particular status attribute on either an object or a list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read`. When `target` is `lists`, the required scopes are `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ByTargetByIdentifierAttributesByAttributeStatuses = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<GetV2ByTargetByIdentifierAttributesByAttributeStatusesData, ThrowOnError>,\n): RequestResult<\n GetV2ByTargetByIdentifierAttributesByAttributeStatusesResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeStatusesErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ByTargetByIdentifierAttributesByAttributeStatusesResponses,\n GetV2ByTargetByIdentifierAttributesByAttributeStatusesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}/statuses\",\n ...options,\n });\n\n/**\n * Create a status\n *\n * Add a new status to a status attribute on either an object or a list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read-write`. When `target` is `lists`, the required scopes are `list_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ByTargetByIdentifierAttributesByAttributeStatuses = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<PostV2ByTargetByIdentifierAttributesByAttributeStatusesData, ThrowOnError>,\n): RequestResult<\n PostV2ByTargetByIdentifierAttributesByAttributeStatusesResponses,\n PostV2ByTargetByIdentifierAttributesByAttributeStatusesErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ByTargetByIdentifierAttributesByAttributeStatusesResponses,\n PostV2ByTargetByIdentifierAttributesByAttributeStatusesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}/statuses\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Update a status\n *\n * Update a status on an status attribute on either an object or a list.\n *\n * When `target` is `objects`, the required scopes are `object_configuration:read-write`. When `target` is `lists`, the required scopes are `list_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatus = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusData,\n ThrowOnError\n >,\n): RequestResult<\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusResponses,\n PatchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatusErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/{target}/{identifier}/attributes/{attribute}/statuses/{status}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List records\n *\n * Lists people, company or other records, with the option to filter and sort results.\n *\n * Required scopes: `record_permission:read`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ObjectsByObjectRecordsQuery = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ObjectsByObjectRecordsQueryData, ThrowOnError>,\n): RequestResult<\n PostV2ObjectsByObjectRecordsQueryResponses,\n PostV2ObjectsByObjectRecordsQueryErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ObjectsByObjectRecordsQueryResponses,\n PostV2ObjectsByObjectRecordsQueryErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/query\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Create a record\n *\n * Creates a new person, company or other record. This endpoint will throw on conflicts of unique attributes. If you would prefer to update records on conflicts, please use the [Upsert record endpoint](/rest-api/endpoint-reference/records/upsert-a-record) instead.\n *\n * Required scopes: `record_permission:read-write`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ObjectsByObjectRecords = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ObjectsByObjectRecordsData, ThrowOnError>,\n): RequestResult<\n PostV2ObjectsByObjectRecordsResponses,\n PostV2ObjectsByObjectRecordsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ObjectsByObjectRecordsResponses,\n PostV2ObjectsByObjectRecordsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Upsert a record\n *\n * Use this endpoint to create or update people, companies and other records. A matching attribute is used to search for existing records. If a record is found with the same value for the matching attribute, that record will be updated. If no record with the same value for the matching attribute is found, a new record will be created instead. If you would like to avoid matching, please use the [Create record endpoint](/rest-api/endpoint-reference/records/create-a-record).\n *\n * If the matching attribute is a multiselect attribute, new values will be added and existing values will not be deleted. For any other multiselect attribute, all values will be either created or deleted as necessary to match the list of supplied values.\n *\n * Required scopes: `record_permission:read-write`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ObjectsByObjectRecords = <ThrowOnError extends boolean = true>(\n options: Options<PutV2ObjectsByObjectRecordsData, ThrowOnError>,\n): RequestResult<\n PutV2ObjectsByObjectRecordsResponses,\n PutV2ObjectsByObjectRecordsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).put<\n PutV2ObjectsByObjectRecordsResponses,\n PutV2ObjectsByObjectRecordsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete a record\n *\n * Deletes a single record (e.g. a company or person) by ID.\n *\n * Required scopes: `object_configuration:read`, `record_permission:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2ObjectsByObjectRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2ObjectsByObjectRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n DeleteV2ObjectsByObjectRecordsByRecordIdResponses,\n DeleteV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2ObjectsByObjectRecordsByRecordIdResponses,\n DeleteV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/{record_id}\",\n ...options,\n });\n\n/**\n * Get a record\n *\n * Gets a single person, company or other record by its `record_id`.\n *\n * Required scopes: `record_permission:read`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ObjectsByObjectRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ObjectsByObjectRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n GetV2ObjectsByObjectRecordsByRecordIdResponses,\n GetV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ObjectsByObjectRecordsByRecordIdResponses,\n GetV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/{record_id}\",\n ...options,\n });\n\n/**\n * Update a record (append multiselect values)\n *\n * Use this endpoint to update people, companies, and other records by `record_id`. If the update payload includes multiselect attributes, the values supplied will be created and prepended to the list of values that already exist (if any). Use the `PUT` endpoint to overwrite or remove multiselect attribute values.\n *\n * Required scopes: `record_permission:read-write`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ObjectsByObjectRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2ObjectsByObjectRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n PatchV2ObjectsByObjectRecordsByRecordIdResponses,\n PatchV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2ObjectsByObjectRecordsByRecordIdResponses,\n PatchV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/{record_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Update a record (overwrite multiselect values)\n *\n * Use this endpoint to update people, companies, and other records by `record_id`. If the update payload includes multiselect attributes, the values supplied will overwrite/remove the list of values that already exist (if any). Use the `PATCH` endpoint to append multiselect values without removing those that already exist.\n *\n * Required scopes: `record_permission:read-write`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ObjectsByObjectRecordsByRecordId = <ThrowOnError extends boolean = true>(\n options: Options<PutV2ObjectsByObjectRecordsByRecordIdData, ThrowOnError>,\n): RequestResult<\n PutV2ObjectsByObjectRecordsByRecordIdResponses,\n PutV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).put<\n PutV2ObjectsByObjectRecordsByRecordIdResponses,\n PutV2ObjectsByObjectRecordsByRecordIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/{record_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Merge two records\n *\n * Merges two records of the same object together. Where both records have a value for the same attribute, the primary record's value takes precedence.\n *\n * Merging produces a **new** record, so the `new_record_id` returned will match neither of the records supplied in the request. Both of the original records are marked as merged and can no longer be read or written.\n *\n * Large merges are completed asynchronously. A `200` response means the merged record is readable immediately. A `202` response means the merge has been accepted but is still being applied, and reading the merged record will return a `404` with the `merge_in_progress` error code until it completes.\n *\n * This endpoint is not idempotent. Because both original records are marked as merged, repeating the same request returns `404`.\n *\n * This endpoint is rate limited to 5 requests per second.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `record_permission:read-write`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ObjectsByObjectRecordsMerge = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ObjectsByObjectRecordsMergeData, ThrowOnError>,\n): RequestResult<\n PostV2ObjectsByObjectRecordsMergeResponses,\n PostV2ObjectsByObjectRecordsMergeErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ObjectsByObjectRecordsMergeResponses,\n PostV2ObjectsByObjectRecordsMergeErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/merge\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List record attribute values\n *\n * Gets all values for a given attribute on a record. Historic values can be queried using the `show_historic` query param. Historic values cannot be queried on COMINT (Communication Intelligence) or enriched attributes and the endpoint will return a 400 error if this is attempted. Historic values are sorted from oldest to newest (by `active_from`). Some attributes are subject to billing status and will return an empty array of values if theworkspace being queried does not have the required billing flag enabled.\n *\n * Required scopes: `record_permission:read`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValues = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesData,\n ThrowOnError\n >,\n): RequestResult<\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesResponses,\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesResponses,\n GetV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/{record_id}/attributes/{attribute}/values\",\n ...options,\n });\n\n/**\n * Write record attribute values\n *\n * Replaces the entire value history of a single attribute on a record, primarily to migrate historic data from an external source. Every value the attribute currently has is destroyed, including values not present in the request, and the supplied values are written with the `active_from` and `active_until` timestamps given.\n *\n * Values may be supplied in any order and gaps between intervals are allowed. For attributes that accept a single value, at most one value may be active at a time, so intervals may not overlap and at most one may have a `null` `active_until`. At least one value is required.\n *\n * Webhooks and workflow triggers do not fire for these writes, so migrating history does not replay automations. Search indexes and caches are still updated, and formula attributes that depend on this attribute are still recalculated.\n *\n * Value history cannot be written for relationship attributes, formula attributes, enriched attributes, or immutable system attributes such as the entry's parent record.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `record_permission:read-write`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValues = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesData,\n ThrowOnError\n >,\n): RequestResult<\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesResponses,\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesErrors,\n ThrowOnError\n> =>\n (options.client ?? client).put<\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesResponses,\n PutV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValuesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/{record_id}/attributes/{attribute}/values\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List record entries\n *\n * List all entries, across all lists, for which this record is the parent. The response includes metadata for each entry, including `entry_id`, `list_id`, and `created_at`, but does not include entry values. To retrieve the values, call [Get a list entry](/rest-api/endpoint-reference/entries/get-a-list-entry) separately for each entry.\n *\n * Required scopes: `record_permission:read`, `object_configuration:read`, `list_entry:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ObjectsByObjectRecordsByRecordIdEntries = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ObjectsByObjectRecordsByRecordIdEntriesData, ThrowOnError>,\n): RequestResult<GetV2ObjectsByObjectRecordsByRecordIdEntriesResponses, unknown, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2ObjectsByObjectRecordsByRecordIdEntriesResponses,\n unknown,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/{object}/records/{record_id}/entries\",\n ...options,\n });\n\n/**\n * Search records\n *\n * The search records endpoint provides a convenient way to fuzzy search for records across one or more objects.\n * The matching strategy employed in this endpoint follows the in-product strategy and will match names, domains, emails, phone numbers and social handles on people and companies, and labels on all other objects.\n * Please note, results returned from this endpoint are eventually consistent. For results which are guaranteed to be up to date, please use the record query endpoint instead.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `record_permission:read`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ObjectsRecordsSearch = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ObjectsRecordsSearchData, ThrowOnError>,\n): RequestResult<\n PostV2ObjectsRecordsSearchResponses,\n PostV2ObjectsRecordsSearchErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ObjectsRecordsSearchResponses,\n PostV2ObjectsRecordsSearchErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/objects/records/search\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Query SQL\n *\n * Query records and lists with SQL. Your workspace must be on the Enterprise plan in order to access this endpoint.\n *\n * This endpoint is rate limited to 2 requests per second.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `record_permission:read`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Sql = <ThrowOnError extends boolean = true>(\n options: Options<PostV2SqlData, ThrowOnError>,\n): RequestResult<PostV2SqlResponses, PostV2SqlErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2SqlResponses, PostV2SqlErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/sql\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List all lists\n *\n * List all lists that your access token has access to. lists are returned in the order that they are sorted in the sidebar.\n *\n * Required scopes: `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2Lists = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2ListsData, ThrowOnError>,\n): RequestResult<GetV2ListsResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2ListsResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists\",\n ...options,\n });\n\n/**\n * Create a list\n *\n * Creates a new list.\n *\n * Once you have your list, add attributes to it using the [Create attribute](/rest-api/endpoint-reference/attributes/create-an-attribute) API, and add records to it using the [Add records to list](/rest-api/endpoint-reference/entries/create-an-entry-add-record-to-list) API.\n *\n * New lists must specify which records can be added with the `parent_object` parameter which accepts either an object slug or an object ID. Permissions for the list are controlled with the `workspace_access` and `workspace_member_access` parameters.\n *\n * Please note that new lists must have either `workspace_access` set to `\"full-access\"` or one or more element of `workspace_member_access` with a `\"full-access\"` level. It is also possible to receive a `403` billing error if your workspace is not on a plan that supports either advanced workspace or workspace member-level access for lists.\n *\n * Required scopes: `list_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Lists = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ListsData, ThrowOnError>,\n): RequestResult<PostV2ListsResponses, PostV2ListsErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2ListsResponses, PostV2ListsErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Get a list\n *\n * Gets a single list in your workspace that your access token has access to.\n *\n * Required scopes: `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ListsByList = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ListsByListData, ThrowOnError>,\n): RequestResult<GetV2ListsByListResponses, GetV2ListsByListErrors, ThrowOnError> =>\n (options.client ?? client).get<GetV2ListsByListResponses, GetV2ListsByListErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}\",\n ...options,\n });\n\n/**\n * Update a list\n *\n * Updates an existing list. Permissions for the list are controlled with the `workspace_access` and `workspace_member_access` parameters. Please note that lists must have either `workspace_access` set to `\"full-access\"` or one or more element of `workspace_member_access` with a `\"full-access\"` level. It is also possible to receive a `403` billing error if your workspace is not on a plan that supports either advanced workspace or workspace member level access for lists. Changing the parent object of a list is not possible through the API as it can have unintended side-effects that should be considered carefully. If you wish to carry out a parent object change you should do so through the UI.\n *\n * Required scopes: `list_configuration:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ListsByList = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2ListsByListData, ThrowOnError>,\n): RequestResult<PatchV2ListsByListResponses, PatchV2ListsByListErrors, ThrowOnError> =>\n (options.client ?? client).patch<\n PatchV2ListsByListResponses,\n PatchV2ListsByListErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List views for list\n *\n * Lists saved views for a list. Results are ordered by view ID (`id.view_id` ascending).\n *\n * Required scopes: `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ListsByListViews = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ListsByListViewsData, ThrowOnError>,\n): RequestResult<GetV2ListsByListViewsResponses, GetV2ListsByListViewsErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2ListsByListViewsResponses,\n GetV2ListsByListViewsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/views\",\n ...options,\n });\n\n/**\n * List entries\n *\n * Lists entries in a given list, with the option to filter and sort results.\n *\n * Required scopes: `list_entry:read`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ListsByListEntriesQuery = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ListsByListEntriesQueryData, ThrowOnError>,\n): RequestResult<\n PostV2ListsByListEntriesQueryResponses,\n PostV2ListsByListEntriesQueryErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2ListsByListEntriesQueryResponses,\n PostV2ListsByListEntriesQueryErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries/query\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Create an entry (add record to list)\n *\n * Adds a record to a list as a new list entry. This endpoint will throw on conflicts of unique attributes. Multiple list entries are allowed for the same parent record\n *\n * Required scopes: `list_entry:read-write`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2ListsByListEntries = <ThrowOnError extends boolean = true>(\n options: Options<PostV2ListsByListEntriesData, ThrowOnError>,\n): RequestResult<PostV2ListsByListEntriesResponses, PostV2ListsByListEntriesErrors, ThrowOnError> =>\n (options.client ?? client).post<\n PostV2ListsByListEntriesResponses,\n PostV2ListsByListEntriesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Upsert a list entry by parent\n *\n * Use this endpoint to create or update a list entry for a given parent record. If an entry with the specified parent record is found, that entry will be updated. If no such entry is found, a new entry will be created instead. If there are multiple entries with the same parent record, this endpoint with return the \"MULTIPLE_MATCH_RESULTS\" error. When writing to multi-select attributes, all values will be either created or deleted as necessary to match the list of values supplied in the request body.\n *\n * Required scopes: `list_entry:read-write`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ListsByListEntries = <ThrowOnError extends boolean = true>(\n options: Options<PutV2ListsByListEntriesData, ThrowOnError>,\n): RequestResult<PutV2ListsByListEntriesResponses, PutV2ListsByListEntriesErrors, ThrowOnError> =>\n (options.client ?? client).put<\n PutV2ListsByListEntriesResponses,\n PutV2ListsByListEntriesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete a list entry\n *\n * Deletes a single list entry by its `entry_id`.\n *\n * Required scopes: `list_entry:read-write`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2ListsByListEntriesByEntryId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2ListsByListEntriesByEntryIdData, ThrowOnError>,\n): RequestResult<\n DeleteV2ListsByListEntriesByEntryIdResponses,\n DeleteV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2ListsByListEntriesByEntryIdResponses,\n DeleteV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries/{entry_id}\",\n ...options,\n });\n\n/**\n * Get a list entry\n *\n * Gets a single list entry by its `entry_id`.\n *\n * Required scopes: `list_entry:read`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ListsByListEntriesByEntryId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ListsByListEntriesByEntryIdData, ThrowOnError>,\n): RequestResult<\n GetV2ListsByListEntriesByEntryIdResponses,\n GetV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ListsByListEntriesByEntryIdResponses,\n GetV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries/{entry_id}\",\n ...options,\n });\n\n/**\n * Update a list entry (append multiselect values)\n *\n * Use this endpoint to update list entries by `entry_id`. If the update payload includes multiselect attributes, the values supplied will be created and prepended to the list of values that already exist (if any). Use the `PUT` endpoint to overwrite or remove multiselect attribute values.\n *\n * Required scopes: `list_entry:read-write`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2ListsByListEntriesByEntryId = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2ListsByListEntriesByEntryIdData, ThrowOnError>,\n): RequestResult<\n PatchV2ListsByListEntriesByEntryIdResponses,\n PatchV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2ListsByListEntriesByEntryIdResponses,\n PatchV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries/{entry_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Update a list entry (overwrite multiselect values)\n *\n * Use this endpoint to update list entries by `entry_id`. If the update payload includes multiselect attributes, the values supplied will overwrite/remove the list of values that already exist (if any). Use the `PATCH` endpoint to add multiselect attribute values without removing those value that already exist.\n *\n * Required scopes: `list_entry:read-write`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ListsByListEntriesByEntryId = <ThrowOnError extends boolean = true>(\n options: Options<PutV2ListsByListEntriesByEntryIdData, ThrowOnError>,\n): RequestResult<\n PutV2ListsByListEntriesByEntryIdResponses,\n PutV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).put<\n PutV2ListsByListEntriesByEntryIdResponses,\n PutV2ListsByListEntriesByEntryIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries/{entry_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List attribute values for a list entry\n *\n * Gets all values for a given attribute on a list entry. This endpoint has the ability to return all historic values using the `show_historic` query param. Historic values are sorted from oldest to newest (by `active_from`).\n *\n * Required scopes: `list_entry:read`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ListsByListEntriesByEntryIdAttributesByAttributeValues = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesData, ThrowOnError>,\n): RequestResult<\n GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesResponses,\n GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesResponses,\n GetV2ListsByListEntriesByEntryIdAttributesByAttributeValuesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries/{entry_id}/attributes/{attribute}/values\",\n ...options,\n });\n\n/**\n * Write list entry attribute values\n *\n * Replaces the entire value history of a single attribute on a list entry, primarily to migrate historic data from an external source. Every value the attribute currently has is destroyed, including values not present in the request, and the supplied values are written with the `active_from` and `active_until` timestamps given.\n *\n * Values may be supplied in any order and gaps between intervals are allowed. For attributes that accept a single value, at most one value may be active at a time, so intervals may not overlap and at most one may have a `null` `active_until`. At least one value is required.\n *\n * Webhooks and workflow triggers do not fire for these writes, so migrating history does not replay automations. Search indexes and caches are still updated, and formula attributes that depend on this attribute are still recalculated.\n *\n * Value history cannot be written for relationship attributes, formula attributes, enriched attributes, or immutable system attributes such as the entry's parent record.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `list_entry:read-write`, `list_configuration:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2ListsByListEntriesByEntryIdAttributesByAttributeValues = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesData, ThrowOnError>,\n): RequestResult<\n PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesResponses,\n PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesErrors,\n ThrowOnError\n> =>\n (options.client ?? client).put<\n PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesResponses,\n PutV2ListsByListEntriesByEntryIdAttributesByAttributeValuesErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/lists/{list}/entries/{entry_id}/attributes/{attribute}/values\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List workspace members\n *\n * Lists all workspace members in the workspace.\n *\n * Required scopes: `user_management:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2WorkspaceMembers = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2WorkspaceMembersData, ThrowOnError>,\n): RequestResult<GetV2WorkspaceMembersResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2WorkspaceMembersResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/workspace_members\",\n ...options,\n });\n\n/**\n * Get a workspace member\n *\n * Gets a single workspace member by ID.\n *\n * Required scopes: `user_management:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2WorkspaceMembersByWorkspaceMemberId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2WorkspaceMembersByWorkspaceMemberIdData, ThrowOnError>,\n): RequestResult<\n GetV2WorkspaceMembersByWorkspaceMemberIdResponses,\n GetV2WorkspaceMembersByWorkspaceMemberIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2WorkspaceMembersByWorkspaceMemberIdResponses,\n GetV2WorkspaceMembersByWorkspaceMemberIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/workspace_members/{workspace_member_id}\",\n ...options,\n });\n\n/**\n * List notes\n *\n * List notes for all records or for a specific record.\n *\n * This endpoint is temporarily rate limited to 10 requests per second.\n *\n * Required scopes: `note:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2Notes = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2NotesData, ThrowOnError>,\n): RequestResult<GetV2NotesResponses, GetV2NotesErrors, ThrowOnError> =>\n (options?.client ?? client).get<GetV2NotesResponses, GetV2NotesErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/notes\",\n ...options,\n });\n\n/**\n * Create a note\n *\n * Creates a new note for a given record.\n *\n * Required scopes: `note:read-write`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Notes = <ThrowOnError extends boolean = true>(\n options: Options<PostV2NotesData, ThrowOnError>,\n): RequestResult<PostV2NotesResponses, PostV2NotesErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2NotesResponses, PostV2NotesErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/notes\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete a note\n *\n * Delete a single note by ID.\n *\n * Required scopes: `note:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2NotesByNoteId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2NotesByNoteIdData, ThrowOnError>,\n): RequestResult<DeleteV2NotesByNoteIdResponses, DeleteV2NotesByNoteIdErrors, ThrowOnError> =>\n (options.client ?? client).delete<\n DeleteV2NotesByNoteIdResponses,\n DeleteV2NotesByNoteIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/notes/{note_id}\",\n ...options,\n });\n\n/**\n * Get a note\n *\n * Get a single note by ID.\n *\n * Required scopes: `note:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2NotesByNoteId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2NotesByNoteIdData, ThrowOnError>,\n): RequestResult<GetV2NotesByNoteIdResponses, GetV2NotesByNoteIdErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2NotesByNoteIdResponses,\n GetV2NotesByNoteIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/notes/{note_id}\",\n ...options,\n });\n\n/**\n * Update a note\n *\n * Updates an existing note's title and/or content. Only the fields you provide are changed, and any field you omit is left untouched. Providing `content` replaces the note's entire content. A note's parent record cannot be changed.\n *\n * Required scopes: `note:read-write`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2NotesByNoteId = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2NotesByNoteIdData, ThrowOnError>,\n): RequestResult<PatchV2NotesByNoteIdResponses, PatchV2NotesByNoteIdErrors, ThrowOnError> =>\n (options.client ?? client).patch<\n PatchV2NotesByNoteIdResponses,\n PatchV2NotesByNoteIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/notes/{note_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List tasks\n *\n * List all tasks. Results are sorted by creation date, from oldest to newest.\n *\n * Required scopes: `task:read`, `object_configuration:read`, `record_permission:read`, `user_management:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2Tasks = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2TasksData, ThrowOnError>,\n): RequestResult<GetV2TasksResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2TasksResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/tasks\",\n ...options,\n });\n\n/**\n * Create a task\n *\n * Creates a new task.\n *\n * At present, tasks can only be created from plaintext without record reference formatting.\n *\n * Required scopes: `task:read-write`, `object_configuration:read`, `record_permission:read`, `user_management:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Tasks = <ThrowOnError extends boolean = true>(\n options: Options<PostV2TasksData, ThrowOnError>,\n): RequestResult<PostV2TasksResponses, PostV2TasksErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2TasksResponses, PostV2TasksErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/tasks\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete a task\n *\n * Delete a task by ID.\n *\n * Required scopes: `task:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2TasksByTaskId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2TasksByTaskIdData, ThrowOnError>,\n): RequestResult<DeleteV2TasksByTaskIdResponses, DeleteV2TasksByTaskIdErrors, ThrowOnError> =>\n (options.client ?? client).delete<\n DeleteV2TasksByTaskIdResponses,\n DeleteV2TasksByTaskIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/tasks/{task_id}\",\n ...options,\n });\n\n/**\n * Get a task\n *\n * Get a single task by ID.\n *\n * Required scopes: `task:read`, `object_configuration:read`, `record_permission:read`, `user_management:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2TasksByTaskId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2TasksByTaskIdData, ThrowOnError>,\n): RequestResult<GetV2TasksByTaskIdResponses, GetV2TasksByTaskIdErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2TasksByTaskIdResponses,\n GetV2TasksByTaskIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/tasks/{task_id}\",\n ...options,\n });\n\n/**\n * Update a task\n *\n * Updates an existing task by `task_id`. At present, only the `deadline_at`, `is_completed`, `linked_records`, and `assignees` fields can be updated.\n *\n * Required scopes: `task:read-write`, `object_configuration:read`, `record_permission:read`, `user_management:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2TasksByTaskId = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2TasksByTaskIdData, ThrowOnError>,\n): RequestResult<PatchV2TasksByTaskIdResponses, PatchV2TasksByTaskIdErrors, ThrowOnError> =>\n (options.client ?? client).patch<\n PatchV2TasksByTaskIdResponses,\n PatchV2TasksByTaskIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/tasks/{task_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List threads\n *\n * List threads of comments on a record or list entry.\n *\n * Each thread in the response includes at most `80` replies, starting with the oldest. When a thread holds more, its `has_more_comments` is `true`; use [Get a thread and its comments](/rest-api/endpoint-reference/threads/get-a-thread-and-its-comments) to page through every comment in that thread.\n *\n * To view threads on records, you will need the `object_configuration:read` and `record_permission:read` scopes.\n *\n * To view threads on list entries, you will need the `list_configuration:read` and `list_entry:read` scopes.\n *\n * Required scopes: `comment:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2Threads = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2ThreadsData, ThrowOnError>,\n): RequestResult<GetV2ThreadsResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2ThreadsResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/threads\",\n ...options,\n });\n\n/**\n * Get a thread and its comments\n *\n * Get a thread and page through its comments, oldest first, starting with the comment that opened it.\n *\n * Comments are paginated: at most `250` are returned per request. Keep paginating for as long as a `next_cursor` is returned.\n *\n * Supply `created_after` to return only the comments created after a timestamp, which is useful when polling a thread for new replies. The comment that opened the thread is returned only when it also satisfies the filter.\n *\n * To view threads on records, you will need the `object_configuration:read` and `record_permission:read` scopes.\n *\n * To view threads on list entries, you will need the `list_configuration:read` and `list_entry:read` scopes.\n *\n * Required scopes: `comment:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2ThreadsByThreadId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2ThreadsByThreadIdData, ThrowOnError>,\n): RequestResult<GetV2ThreadsByThreadIdResponses, GetV2ThreadsByThreadIdErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2ThreadsByThreadIdResponses,\n GetV2ThreadsByThreadIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/threads/{thread_id}\",\n ...options,\n });\n\n/**\n * Create a comment\n *\n * Creates a new comment related to an existing thread, record or entry.\n *\n * To create comments on records, you will need the `object_configuration:read` and `record_permission:read` scopes.\n *\n * To create comments on list entries, you will need the `list_configuration:read` and `list_entry:read` scopes.\n *\n * Required scopes: `comment:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Comments = <ThrowOnError extends boolean = true>(\n options: Options<PostV2CommentsData, ThrowOnError>,\n): RequestResult<PostV2CommentsResponses, PostV2CommentsErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2CommentsResponses, PostV2CommentsErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/comments\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete a comment\n *\n * Deletes a comment by ID. If deleting a comment at the head of a thread, all messages in the thread are also deleted.\n *\n * A workspace-level access token may delete any comment. A user-level access token may only delete comments authored by the member it acts for.\n *\n * Required scopes: `comment:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2CommentsByCommentId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2CommentsByCommentIdData, ThrowOnError>,\n): RequestResult<\n DeleteV2CommentsByCommentIdResponses,\n DeleteV2CommentsByCommentIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2CommentsByCommentIdResponses,\n DeleteV2CommentsByCommentIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/comments/{comment_id}\",\n ...options,\n });\n\n/**\n * Get a comment\n *\n * Get a single comment by ID.\n *\n * To view comments on records, you will need the `object_configuration:read` and `record_permission:read` scopes.\n *\n * To view comments on list entries, you will need the `list_configuration:read` and `list_entry:read` scopes.\n *\n * Required scopes: `comment:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2CommentsByCommentId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2CommentsByCommentIdData, ThrowOnError>,\n): RequestResult<GetV2CommentsByCommentIdResponses, GetV2CommentsByCommentIdErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2CommentsByCommentIdResponses,\n GetV2CommentsByCommentIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/comments/{comment_id}\",\n ...options,\n });\n\n/**\n * List emails\n *\n * Lists email metadata from your workspace's connected mailboxes. Email content is never returned.\n *\n * At least one of `linked_object` with `linked_record_ids`, `participants`, or `domain` must be supplied; there is no way to list every email. When several are supplied they are combined with OR: emails matching any of the filters are returned.\n *\n * > **Requesting access:** this endpoint is enabled per workspace and per app while it is in alpha. Contact [support@attio.com](mailto:support@attio.com) to request access.\n *\n * **Things to know**\n *\n * - Filters that identify your own workspace are ignored. This covers a member's or invited member's address, one of your mailboxes, and any of their domains. If every filter you supply is ignored, an empty page is returned.\n * - A filter that names a protected recipient in your workspace is rejected rather than ignored. This covers an address or a domain you supply directly. A record whose address or domain is a protected recipient is ignored instead, in the same way as the filters above.\n * - Emails from a mailbox shared with your workspace as metadata only are returned without a subject line. An email is left out entirely when it has no participant you may see — that is, when every participant outside your workspace is a protected recipient.\n * - An email that reached more than one of your mailboxes is returned once, and `id.mailbox_id` identifies whichever copy was readable.\n * - `linked_records` is derived when you make the request rather than stored, so it reflects your records as they are now.\n * - Emails are returned newest first, ordered by when they were sent. Each request scans a bounded number of emails, so a page can hold fewer emails than `limit`, or none at all, while more are still available. Keep paginating for as long as a `next_cursor` is returned, rather than stopping on a short page.\n *\n * This endpoint is in alpha and may be subject to breaking changes as we gather feedback.\n *\n * Required scopes: `email:read`, `record_permission:read`, `object_configuration:read`.\n *\n * Supported token levels: `workspace`.\n */\nexport const getV2Emails = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2EmailsData, ThrowOnError>,\n): RequestResult<GetV2EmailsResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2EmailsResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/emails\",\n ...options,\n });\n\n/**\n * Add emails to the unsubscribe list\n *\n * Adds email addresses to the workspace's sequence unsubscribe list. Email addresses on the unsubscribe list cannot be enrolled in any sequence, and any of their active sequence runs are exited. Email addresses that are already on the unsubscribe list are ignored, so this endpoint is safe to retry.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `sequence_unsubscribe:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2SequencesUnsubscribedEmails = <ThrowOnError extends boolean = true>(\n options: Options<PostV2SequencesUnsubscribedEmailsData, ThrowOnError>,\n): RequestResult<\n PostV2SequencesUnsubscribedEmailsResponses,\n PostV2SequencesUnsubscribedEmailsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2SequencesUnsubscribedEmailsResponses,\n PostV2SequencesUnsubscribedEmailsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/sequences/unsubscribed_emails\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List meetings\n *\n * Lists all meetings in the workspace using a deterministic sort order. When both the `participants` and `linked_record_id` filters are supplied, they are combined with OR: meetings that match either filter are returned.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`.\n */\nexport const getV2Meetings = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2MeetingsData, ThrowOnError>,\n): RequestResult<GetV2MeetingsResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2MeetingsResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings\",\n ...options,\n });\n\n/**\n * Create a meeting\n *\n * Creates a new meeting. [See here](/rest-api/guides/syncing-meetings) for guidance on avoiding duplicate meetings.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read-write`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Meetings = <ThrowOnError extends boolean = true>(\n options: Options<PostV2MeetingsData, ThrowOnError>,\n): RequestResult<PostV2MeetingsResponses, PostV2MeetingsErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2MeetingsResponses, PostV2MeetingsErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete a meeting\n *\n * Deletes a single meeting by ID.\n *\n * Meetings created by calendar sync cannot be deleted through the API. Delete the underlying calendar event, or disconnect the calendar, instead.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2MeetingsByMeetingId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2MeetingsByMeetingIdData, ThrowOnError>,\n): RequestResult<\n DeleteV2MeetingsByMeetingIdResponses,\n DeleteV2MeetingsByMeetingIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2MeetingsByMeetingIdResponses,\n DeleteV2MeetingsByMeetingIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}\",\n ...options,\n });\n\n/**\n * Get a meeting\n *\n * Get a single meeting by ID.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2MeetingsByMeetingId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2MeetingsByMeetingIdData, ThrowOnError>,\n): RequestResult<GetV2MeetingsByMeetingIdResponses, GetV2MeetingsByMeetingIdErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2MeetingsByMeetingIdResponses,\n GetV2MeetingsByMeetingIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}\",\n ...options,\n });\n\n/**\n * Update a meeting (append linked records)\n *\n * Links records to a meeting. The records supplied are added to the meeting's existing linked records, and records which are already linked are ignored. Use the `PUT` endpoint to replace or remove linked records.\n *\n * No other meeting fields can be updated. Attio automatically links the meeting participants' companies to the meeting; this behavior is asynchronous.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read-write`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const patchV2MeetingsByMeetingId = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2MeetingsByMeetingIdData, ThrowOnError>,\n): RequestResult<\n PatchV2MeetingsByMeetingIdResponses,\n PatchV2MeetingsByMeetingIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2MeetingsByMeetingIdResponses,\n PatchV2MeetingsByMeetingIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Update a meeting (overwrite linked records)\n *\n * Replaces a meeting's linked records with the records supplied. Any record which is currently linked and is not in the request is unlinked, including records which Attio linked automatically from the meeting's participants. Passing an empty array unlinks every record. Use the `PATCH` endpoint to add linked records without removing the records which already exist.\n *\n * No other meeting fields can be updated. Attio automatically links the meeting participants' companies to the meeting; this behavior is asynchronous, so a company which is linked after this request completes is not removed by it.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read-write`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const putV2MeetingsByMeetingId = <ThrowOnError extends boolean = true>(\n options: Options<PutV2MeetingsByMeetingIdData, ThrowOnError>,\n): RequestResult<PutV2MeetingsByMeetingIdResponses, PutV2MeetingsByMeetingIdErrors, ThrowOnError> =>\n (options.client ?? client).put<\n PutV2MeetingsByMeetingIdResponses,\n PutV2MeetingsByMeetingIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * List call recordings\n *\n * List all call recordings for a meeting.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read`, `call_recording:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2MeetingsByMeetingIdCallRecordings = <ThrowOnError extends boolean = true>(\n options: Options<GetV2MeetingsByMeetingIdCallRecordingsData, ThrowOnError>,\n): RequestResult<GetV2MeetingsByMeetingIdCallRecordingsResponses, unknown, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2MeetingsByMeetingIdCallRecordingsResponses,\n unknown,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}/call_recordings\",\n ...options,\n });\n\n/**\n * Create call recording\n *\n * Create a call recording for a meeting. This endpoint is rate limited to 1 request per second.\n *\n * A `transcript` should always be provided — it is technically optional for backwards compatibility, but a call recording created without one will be missing summaries and other transcript-derived features. `video_url` is optional, and a transcript-only call recording (with no video) is fully supported.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read`, `call_recording:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2MeetingsByMeetingIdCallRecordings = <ThrowOnError extends boolean = true>(\n options: Options<PostV2MeetingsByMeetingIdCallRecordingsData, ThrowOnError>,\n): RequestResult<\n PostV2MeetingsByMeetingIdCallRecordingsResponses,\n PostV2MeetingsByMeetingIdCallRecordingsErrors,\n ThrowOnError\n> =>\n (options.client ?? client).post<\n PostV2MeetingsByMeetingIdCallRecordingsResponses,\n PostV2MeetingsByMeetingIdCallRecordingsErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}/call_recordings\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete call recording\n *\n * Deletes the specified call recording. This will remove the call recording and all associated data.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read`, `call_recording:read-write`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingId = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdData, ThrowOnError>,\n): RequestResult<\n DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdResponses,\n DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdResponses,\n DeleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}/call_recordings/{call_recording_id}\",\n ...options,\n });\n\n/**\n * Get call recording\n *\n * Get a single call recording by ID.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read`, `call_recording:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2MeetingsByMeetingIdCallRecordingsByCallRecordingId = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdData, ThrowOnError>,\n): RequestResult<\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdResponses,\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdResponses,\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}/call_recordings/{call_recording_id}\",\n ...options,\n });\n\n/**\n * Deprecated: Get call transcript\n *\n * Deprecated: prefer using `GET /v2/meetings/:meeting_id/call_recordings/:call_recording_id` to get the transcript for a call recording.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `meeting:read`, `call_recording:read`.\n *\n * Supported token levels: `workspace`.\n */\nexport const getV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscript = <\n ThrowOnError extends boolean = true,\n>(\n options: Options<\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscriptData,\n ThrowOnError\n >,\n): RequestResult<\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscriptResponses,\n unknown,\n ThrowOnError\n> =>\n (options.client ?? client).get<\n GetV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscriptResponses,\n unknown,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/meetings/{meeting_id}/call_recordings/{call_recording_id}/transcript\",\n ...options,\n });\n\n/**\n * List files\n *\n * Lists internal files, externally connected files and folders for a specific record. Use the `object` and `record_id` query parameters to specify the record. Optional query parameters may be provided to filter results by storage provider or parent folder.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `object_configuration:read`, `record_permission:read`, `file:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2Files = <ThrowOnError extends boolean = true>(\n options: Options<GetV2FilesData, ThrowOnError>,\n): RequestResult<GetV2FilesResponses, unknown, ThrowOnError> =>\n (options.client ?? client).get<GetV2FilesResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/files\",\n ...options,\n });\n\n/**\n * Create a folder\n *\n * Creates a native folder entry or a connected file/folder entry on an object record.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `file:read-write`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2Files = <ThrowOnError extends boolean = true>(\n options: Options<PostV2FilesData, ThrowOnError>,\n): RequestResult<PostV2FilesResponses, unknown, ThrowOnError> =>\n (options.client ?? client).post<PostV2FilesResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/files\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Upload a file\n *\n * Uploads a file to native Attio storage for a record. Send multipart/form-data with a single binary field named `file` together with the body fields `object`, `record_id`, and optional `parent_folder_id`. Maximum file size is 50 MB.\n *\n * This endpoint is rate limited to 1 request per second.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `file:read-write`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const postV2FilesUpload = <ThrowOnError extends boolean = true>(\n options: Options<PostV2FilesUploadData, ThrowOnError>,\n): RequestResult<PostV2FilesUploadResponses, PostV2FilesUploadErrors, ThrowOnError> =>\n (options.client ?? client).post<\n PostV2FilesUploadResponses,\n PostV2FilesUploadErrors,\n ThrowOnError\n >({\n ...formDataBodySerializer,\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/files/upload\",\n ...options,\n headers: {\n \"Content-Type\": null,\n ...options.headers,\n },\n });\n\n/**\n * Delete a file\n *\n * Delete a single file by ID. Deleting a folder will delete all of its descendants.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `file:read-write`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const deleteV2FilesByFileId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2FilesByFileIdData, ThrowOnError>,\n): RequestResult<DeleteV2FilesByFileIdResponses, DeleteV2FilesByFileIdErrors, ThrowOnError> =>\n (options.client ?? client).delete<\n DeleteV2FilesByFileIdResponses,\n DeleteV2FilesByFileIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/files/{file_id}\",\n ...options,\n });\n\n/**\n * Get a file\n *\n * Get a single file entry by ID.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `file:read`, `object_configuration:read`, `record_permission:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2FilesByFileId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2FilesByFileIdData, ThrowOnError>,\n): RequestResult<GetV2FilesByFileIdResponses, GetV2FilesByFileIdErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2FilesByFileIdResponses,\n GetV2FilesByFileIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/files/{file_id}\",\n ...options,\n });\n\n/**\n * Download a file\n *\n * Downloads a file by redirecting to a signed URL.\n *\n * This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.\n *\n * Required scopes: `object_configuration:read`, `record_permission:read`, `file:read`.\n *\n * Supported token levels: `workspace`, `user`.\n */\nexport const getV2FilesByFileIdDownload = <ThrowOnError extends boolean = true>(\n options: Options<GetV2FilesByFileIdDownloadData, ThrowOnError>,\n): RequestResult<unknown, unknown, ThrowOnError> =>\n (options.client ?? client).get<unknown, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/files/{file_id}/download\",\n ...options,\n });\n\n/**\n * List webhooks\n *\n * Get all of the webhooks in your workspace.\n *\n * Required scopes: `webhook:read`.\n *\n * Supported token levels: `workspace`.\n */\nexport const getV2Webhooks = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2WebhooksData, ThrowOnError>,\n): RequestResult<GetV2WebhooksResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2WebhooksResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/webhooks\",\n ...options,\n });\n\n/**\n * Create a webhook\n *\n * Create a webhook and associated subscriptions.\n *\n * Each combination of target URL, event type and filter must be unique within your workspace; duplicates are rejected with a 409.\n *\n * Required scopes: `webhook:read-write`.\n *\n * Supported token levels: `workspace`.\n */\nexport const postV2Webhooks = <ThrowOnError extends boolean = true>(\n options: Options<PostV2WebhooksData, ThrowOnError>,\n): RequestResult<PostV2WebhooksResponses, PostV2WebhooksErrors, ThrowOnError> =>\n (options.client ?? client).post<PostV2WebhooksResponses, PostV2WebhooksErrors, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/webhooks\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Delete a webhook\n *\n * Delete a webhook by ID.\n *\n * Required scopes: `webhook:read-write`.\n *\n * Supported token levels: `workspace`.\n */\nexport const deleteV2WebhooksByWebhookId = <ThrowOnError extends boolean = true>(\n options: Options<DeleteV2WebhooksByWebhookIdData, ThrowOnError>,\n): RequestResult<\n DeleteV2WebhooksByWebhookIdResponses,\n DeleteV2WebhooksByWebhookIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).delete<\n DeleteV2WebhooksByWebhookIdResponses,\n DeleteV2WebhooksByWebhookIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/webhooks/{webhook_id}\",\n ...options,\n });\n\n/**\n * Get a webhook\n *\n * Get a single webhook.\n *\n * Required scopes: `webhook:read`.\n *\n * Supported token levels: `workspace`.\n */\nexport const getV2WebhooksByWebhookId = <ThrowOnError extends boolean = true>(\n options: Options<GetV2WebhooksByWebhookIdData, ThrowOnError>,\n): RequestResult<GetV2WebhooksByWebhookIdResponses, GetV2WebhooksByWebhookIdErrors, ThrowOnError> =>\n (options.client ?? client).get<\n GetV2WebhooksByWebhookIdResponses,\n GetV2WebhooksByWebhookIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/webhooks/{webhook_id}\",\n ...options,\n });\n\n/**\n * Update a webhook\n *\n * Update a webhook and associated subscriptions.\n *\n * Each combination of target URL, event type and filter must be unique within your workspace; duplicates are rejected with a 409. Changing the target URL re-checks the webhook's existing subscriptions against the new URL.\n *\n * Required scopes: `webhook:read-write`.\n *\n * Supported token levels: `workspace`.\n */\nexport const patchV2WebhooksByWebhookId = <ThrowOnError extends boolean = true>(\n options: Options<PatchV2WebhooksByWebhookIdData, ThrowOnError>,\n): RequestResult<\n PatchV2WebhooksByWebhookIdResponses,\n PatchV2WebhooksByWebhookIdErrors,\n ThrowOnError\n> =>\n (options.client ?? client).patch<\n PatchV2WebhooksByWebhookIdResponses,\n PatchV2WebhooksByWebhookIdErrors,\n ThrowOnError\n >({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/webhooks/{webhook_id}\",\n ...options,\n headers: {\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n/**\n * Identify\n *\n * Identify the current access token, the workspace it is linked to, and any permissions it has.\n *\n * Every kind of Attio access token can be introspected:\n *\n * - **Workspace access tokens**, created from a workspace's settings. These have no OAuth client, so `client_id` and `aud` contain the workspace access token's own ID.\n * - **OAuth access tokens**, granted to an app through the OAuth 2.0 authorization code flow. `client_id` and `aud` contain the app ID.\n * - **App access tokens**, issued to an app installation and exposed to that app's server functions as `ATTIO_API_TOKEN`. `client_id` and `aud` contain the app ID.\n *\n * Per [RFC 7662](https://www.rfc-editor.org/rfc/rfc7662), `active` is the only member guaranteed to be present. `exp` is always `null`, because Attio access tokens do not currently expire.\n * All other members are optional, and are omitted rather than returned as `null` when they are not present.\n *\n * Unknown, revoked, and deleted tokens are not treated as an error. They return `200` with `{\"active\": false}` and no other members.\n */\nexport const getV2Self = <ThrowOnError extends boolean = true>(\n options?: Options<GetV2SelfData, ThrowOnError>,\n): RequestResult<GetV2SelfResponses, unknown, ThrowOnError> =>\n (options?.client ?? client).get<GetV2SelfResponses, unknown, ThrowOnError>({\n security: [{ scheme: \"bearer\", type: \"http\" }],\n url: \"/v2/self\",\n ...options,\n });\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { operation } from \"../../commands/operation.ts\";\nimport {\n deleteV2ActivitiesByActivity,\n deleteV2ActivitiesByActivityRecordsByRecordId,\n deleteV2CommentsByCommentId,\n deleteV2FilesByFileId,\n deleteV2ListsByListEntriesByEntryId,\n deleteV2MeetingsByMeetingId,\n deleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingId,\n deleteV2NotesByNoteId,\n deleteV2ObjectsByObject,\n deleteV2ObjectsByObjectRecordsByRecordId,\n deleteV2TasksByTaskId,\n deleteV2WebhooksByWebhookId,\n getV2Activities,\n getV2ActivitiesByActivity,\n getV2ActivitiesByActivityRecordsByRecordId,\n getV2ByTargetByIdentifierAttributes,\n getV2ByTargetByIdentifierAttributesByAttribute,\n getV2ByTargetByIdentifierAttributesByAttributeOptions,\n getV2ByTargetByIdentifierAttributesByAttributeStatuses,\n getV2CommentsByCommentId,\n getV2Emails,\n getV2Files,\n getV2FilesByFileId,\n getV2Lists,\n getV2ListsByList,\n getV2ListsByListEntriesByEntryId,\n getV2ListsByListEntriesByEntryIdAttributesByAttributeValues,\n getV2ListsByListViews,\n getV2Meetings,\n getV2MeetingsByMeetingId,\n getV2MeetingsByMeetingIdCallRecordings,\n getV2MeetingsByMeetingIdCallRecordingsByCallRecordingId,\n getV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscript,\n getV2Notes,\n getV2NotesByNoteId,\n getV2Objects,\n getV2ObjectsByObject,\n getV2ObjectsByObjectRecordsByRecordId,\n getV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValues,\n getV2ObjectsByObjectRecordsByRecordIdEntries,\n getV2ObjectsByObjectViews,\n getV2Self,\n getV2Tasks,\n getV2TasksByTaskId,\n getV2Threads,\n getV2ThreadsByThreadId,\n getV2Webhooks,\n getV2WebhooksByWebhookId,\n getV2WorkspaceMembers,\n getV2WorkspaceMembersByWorkspaceMemberId,\n patchV2ActivitiesByActivity,\n patchV2ActivitiesByActivityRecordsByRecordId,\n patchV2ByTargetByIdentifierAttributesByAttribute,\n patchV2ByTargetByIdentifierAttributesByAttributeOptionsByOption,\n patchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatus,\n patchV2ListsByList,\n patchV2ListsByListEntriesByEntryId,\n patchV2MeetingsByMeetingId,\n patchV2NotesByNoteId,\n patchV2ObjectsByObject,\n patchV2ObjectsByObjectRecordsByRecordId,\n patchV2TasksByTaskId,\n patchV2WebhooksByWebhookId,\n postV2Activities,\n postV2ActivitiesByActivityRecords,\n postV2ActivitiesByActivityRecordsQuery,\n postV2ByTargetByIdentifierAttributes,\n postV2ByTargetByIdentifierAttributesByAttributeOptions,\n postV2ByTargetByIdentifierAttributesByAttributeStatuses,\n postV2Comments,\n postV2Files,\n postV2Lists,\n postV2ListsByListEntries,\n postV2ListsByListEntriesQuery,\n postV2Meetings,\n postV2MeetingsByMeetingIdCallRecordings,\n postV2Notes,\n postV2Objects,\n postV2ObjectsByObjectRecords,\n postV2ObjectsByObjectRecordsMerge,\n postV2ObjectsByObjectRecordsQuery,\n postV2ObjectsRecordsSearch,\n postV2SequencesUnsubscribedEmails,\n postV2Sql,\n postV2Tasks,\n postV2Webhooks,\n putV2ActivitiesByActivityRecords,\n putV2ActivitiesByActivityRecordsByRecordId,\n putV2ListsByListEntries,\n putV2ListsByListEntriesByEntryId,\n putV2ListsByListEntriesByEntryIdAttributesByAttributeValues,\n putV2MeetingsByMeetingId,\n putV2ObjectsByObjectRecords,\n putV2ObjectsByObjectRecordsByRecordId,\n putV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValues,\n} from \"./sdk.gen\";\n\nexport const groups = {\n objects: {\n commands: {\n \"list-objects\": operation({\n body: \"none\",\n call: getV2Objects,\n description: \"List objects\",\n options: [],\n }),\n \"create-an-object\": operation({\n body: \"required\",\n call: postV2Objects,\n description: \"Create an object\",\n options: [],\n }),\n \"delete-an-object\": operation({\n body: \"none\",\n call: deleteV2ObjectsByObject,\n description: \"Delete an object\",\n options: [\n {\n description: \"A UUID or slug to identify the object.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-an-object\": operation({\n body: \"none\",\n call: getV2ObjectsByObject,\n description: \"Get an object\",\n options: [\n {\n description: \"A UUID or slug to identify the object.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-an-object\": operation({\n body: \"required\",\n call: patchV2ObjectsByObject,\n description: \"Update an object\",\n options: [\n {\n description: \"A UUID or slug to identify the object.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"list-views-for-object\": operation({\n body: \"none\",\n call: getV2ObjectsByObjectViews,\n description: \"List views for object\",\n options: [\n {\n description: \"A UUID or slug to identify the object.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"`true` to include archived views. See our [archiving guide](/docs/archiving-vs-deleting) for more information on archiving.\",\n in: \"query\",\n name: \"show_archived\",\n required: false,\n type: \"boolean\",\n },\n {\n description:\n \"The maximum number of views to return. Must be between 1 and 1000. Defaults to 500.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A pagination cursor from a previous response's `pagination.next_cursor`. Omit for the first page.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Objects are the core data models inside of Attio.\",\n },\n activities: {\n commands: {\n \"list-activities\": operation({\n body: \"none\",\n call: getV2Activities,\n description: \"List activities\",\n options: [\n {\n description:\n \"The maximum number of activities to return. Must be between 1 and 1000. Defaults to 100.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A pagination cursor used to fetch the next page of activities. Responses with more activities will include a cursor for you to use here. If not provided, the first page will be returned.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n \"create-an-activity\": operation({\n body: \"required\",\n call: postV2Activities,\n description: \"Create an activity\",\n options: [],\n }),\n \"delete-an-activity\": operation({\n body: \"none\",\n call: deleteV2ActivitiesByActivity,\n description: \"Delete an activity\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-an-activity\": operation({\n body: \"none\",\n call: getV2ActivitiesByActivity,\n description: \"Get an activity\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-an-activity\": operation({\n body: \"required\",\n call: patchV2ActivitiesByActivity,\n description: \"Update an activity\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"\",\n },\n \"activity-records\": {\n commands: {\n \"list-activity-records\": operation({\n body: \"required\",\n call: postV2ActivitiesByActivityRecordsQuery,\n description: \"List activity records\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"create-an-activity-record\": operation({\n body: \"required\",\n call: postV2ActivitiesByActivityRecords,\n description: \"Create an activity record\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"upsert-an-activity-record\": operation({\n body: \"required\",\n call: putV2ActivitiesByActivityRecords,\n description: \"Upsert an activity record\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"The ID or slug of the attribute to use to check if an activity record already exists. The attribute must be unique.\",\n in: \"query\",\n name: \"matching_attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"delete-an-activity-record\": operation({\n body: \"none\",\n call: deleteV2ActivitiesByActivityRecordsByRecordId,\n description: \"Delete an activity record\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the activity record to delete.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-an-activity-record\": operation({\n body: \"none\",\n call: getV2ActivitiesByActivityRecordsByRecordId,\n description: \"Get an activity record\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the activity record.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-an-activity-record-append-multiselect-values\": operation({\n body: \"required\",\n call: patchV2ActivitiesByActivityRecordsByRecordId,\n description: \"Update an activity record (append multiselect values)\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the activity record to update.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-an-activity-record-overwrite-multiselect-values\": operation({\n body: \"required\",\n call: putV2ActivitiesByActivityRecordsByRecordId,\n description: \"Update an activity record (overwrite multiselect values)\",\n options: [\n {\n description: \"A UUID or slug to identify the activity.\",\n in: \"path\",\n name: \"activity\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the activity record to update.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"\",\n },\n attributes: {\n commands: {\n \"list-attributes\": operation({\n body: \"none\",\n call: getV2ByTargetByIdentifierAttributes,\n description: \"List attributes\",\n options: [\n {\n description: \"Whether the attributes are on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the object or list the attributes belong to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"The maximum number of results to return. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"Whether archived attributes should be included in the results. See the [full guide to archiving here](/docs/archiving-vs-deleting).\",\n in: \"query\",\n name: \"show_archived\",\n required: false,\n type: \"boolean\",\n },\n ],\n }),\n \"create-an-attribute\": operation({\n body: \"required\",\n call: postV2ByTargetByIdentifierAttributes,\n description: \"Create an attribute\",\n options: [\n {\n description: \"Whether the attribute is to be created on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the object or list the attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-an-attribute\": operation({\n body: \"none\",\n call: getV2ByTargetByIdentifierAttributesByAttribute,\n description: \"Get an attribute\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the object or list the attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-an-attribute\": operation({\n body: \"required\",\n call: patchV2ByTargetByIdentifierAttributesByAttribute,\n description: \"Update an attribute\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the object or list the attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"list-select-options\": operation({\n body: \"none\",\n call: getV2ByTargetByIdentifierAttributesByAttributeOptions,\n description: \"List select options\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or slug to identify the object or list the select attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or slug to identify the attribute you want to list select options on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n {\n description: \"`true` if you want the results to include archived select options.\",\n in: \"query\",\n name: \"show_archived\",\n required: false,\n type: \"boolean\",\n },\n ],\n }),\n \"create-a-select-option\": operation({\n body: \"required\",\n call: postV2ByTargetByIdentifierAttributesByAttributeOptions,\n description: \"Create a select option\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or slug to identify the object or list the select attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute to create a select option on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-select-option\": operation({\n body: \"required\",\n call: patchV2ByTargetByIdentifierAttributesByAttributeOptionsByOption,\n description: \"Update a select option\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or slug to identify the object or list the select attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the select attribute.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or select option title to identify the select option you would like to update.\",\n in: \"path\",\n name: \"option\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"list-statuses\": operation({\n body: \"none\",\n call: getV2ByTargetByIdentifierAttributesByAttributeStatuses,\n description: \"List statuses\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or slug to identify the object or list the status attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute you want to list statuses on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"`true` if you want the results to include archived statuses. See our [archiving guide](/docs/archiving-vs-deleting) for more information on archiving.\",\n in: \"query\",\n name: \"show_archived\",\n required: false,\n type: \"boolean\",\n },\n ],\n }),\n \"create-a-status\": operation({\n body: \"required\",\n call: postV2ByTargetByIdentifierAttributesByAttributeStatuses,\n description: \"Create a status\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or slug to identify the object or list the status attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute the status will belong to.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-status\": operation({\n body: \"required\",\n call: patchV2ByTargetByIdentifierAttributesByAttributeStatusesByStatus,\n description: \"Update a status\",\n options: [\n {\n description: \"Whether the attribute is on an object or a list.\",\n in: \"path\",\n name: \"target\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A UUID or slug to identify the object or list the status attribute belongs to.\",\n in: \"path\",\n name: \"identifier\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute to update the status on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or status title to identify the status to update.\",\n in: \"path\",\n name: \"status\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Attributes model properties of objects and lists.\",\n },\n records: {\n commands: {\n \"list-records\": operation({\n body: \"required\",\n call: postV2ObjectsByObjectRecordsQuery,\n description: \"List records\",\n options: [\n {\n description: \"A UUID or slug to identify the object to list records for.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"create-a-record\": operation({\n body: \"required\",\n call: postV2ObjectsByObjectRecords,\n description: \"Create a record\",\n options: [\n {\n description:\n \"The UUID or slug identifying the object the created record should belong to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"upsert-a-record\": operation({\n body: \"required\",\n call: putV2ObjectsByObjectRecords,\n description: \"Upsert a record\",\n options: [\n {\n description: \"A UUID or slug to identify the object the record should belong to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"The ID or slug of the attribute to use to check if a record already exists. The attribute must be unique.\",\n in: \"query\",\n name: \"matching_attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"delete-a-record\": operation({\n body: \"none\",\n call: deleteV2ObjectsByObjectRecordsByRecordId,\n description: \"Delete a record\",\n options: [\n {\n description: \"The UUID or slug of the object the record belongs to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"The UUID of the record to delete.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-record\": operation({\n body: \"none\",\n call: getV2ObjectsByObjectRecordsByRecordId,\n description: \"Get a record\",\n options: [\n {\n description: \"A UUID or slug identifying the object that the record belongs to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the record.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-record-append-multiselect-values\": operation({\n body: \"required\",\n call: patchV2ObjectsByObjectRecordsByRecordId,\n description: \"Update a record (append multiselect values)\",\n options: [\n {\n description: \"A UUID or slug of the object the record belongs to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID of the record to update.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-record-overwrite-multiselect-values\": operation({\n body: \"required\",\n call: putV2ObjectsByObjectRecordsByRecordId,\n description: \"Update a record (overwrite multiselect values)\",\n options: [\n {\n description: \"A UUID or slug of the object the record belongs to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID of the record to update.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"merge-two-records\": operation({\n body: \"required\",\n call: postV2ObjectsByObjectRecordsMerge,\n description: \"Merge two records\",\n options: [\n {\n description: \"A UUID or slug of the object both records belong to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"list-record-attribute-values\": operation({\n body: \"none\",\n call: getV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValues,\n description: \"List record attribute values\",\n options: [\n {\n description: \"A UUID or slug to identify the object the record belongs to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID to identify the record you want to query values on.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute you want to query values on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"If `true`, the endpoint will return all historic values for the attribute. If `false`, the endpoint will only return the currently active value(s). Defaults to `false`. Cannot be set to `true` for COMINT attributes or enriched attributes on people/company objects.\",\n in: \"query\",\n name: \"show_historic\",\n required: false,\n type: \"boolean\",\n },\n {\n description:\n \"The maximum number of results to return. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n ],\n }),\n \"write-record-attribute-values\": operation({\n body: \"required\",\n call: putV2ObjectsByObjectRecordsByRecordIdAttributesByAttributeValues,\n description: \"Write record attribute values\",\n options: [\n {\n description: \"A UUID or slug to identify the object the record belongs to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID to identify the record you want to query values on.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute you want to query values on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"list-record-entries\": operation({\n body: \"none\",\n call: getV2ObjectsByObjectRecordsByRecordIdEntries,\n description: \"List record entries\",\n options: [\n {\n description: \"A UUID or slug identifying the object that the record belongs to.\",\n in: \"path\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the record.\",\n in: \"path\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"The maximum number of results to return. The default is `100` and the maximum is `1000`. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning. The default is `0`. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n ],\n }),\n \"search-records\": operation({\n body: \"required\",\n call: postV2ObjectsRecordsSearch,\n description: \"Search records\",\n options: [],\n }),\n },\n description: \"Records are individual instances of objects e.g. a specific person or company.\",\n },\n sql: {\n commands: {\n \"query-sql\": operation({\n body: \"required\",\n call: postV2Sql,\n description: \"Query SQL\",\n options: [],\n }),\n },\n description: \"Query records and list entries across your workspace using SQL.\",\n },\n lists: {\n commands: {\n \"list-all-lists\": operation({\n body: \"none\",\n call: getV2Lists,\n description: \"List all lists\",\n options: [],\n }),\n \"create-a-list\": operation({\n body: \"required\",\n call: postV2Lists,\n description: \"Create a list\",\n options: [],\n }),\n \"get-a-list\": operation({\n body: \"none\",\n call: getV2ListsByList,\n description: \"Get a list\",\n options: [\n {\n description: \"A UUID or slug to identify the list.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-list\": operation({\n body: \"required\",\n call: patchV2ListsByList,\n description: \"Update a list\",\n options: [\n {\n description: \"A UUID or slug to identify the list to update.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"list-views-for-list\": operation({\n body: \"none\",\n call: getV2ListsByListViews,\n description: \"List views for list\",\n options: [\n {\n description: \"A UUID or slug to identify the list.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"`true` to include archived views. See our [archiving guide](/docs/archiving-vs-deleting) for more information on archiving.\",\n in: \"query\",\n name: \"show_archived\",\n required: false,\n type: \"boolean\",\n },\n {\n description:\n \"The maximum number of views to return. Must be between 1 and 1000. Defaults to 500.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A pagination cursor from a previous response's `pagination.next_cursor`. Omit for the first page.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Lists are used to model a particular process.\",\n },\n entries: {\n commands: {\n \"list-entries\": operation({\n body: \"required\",\n call: postV2ListsByListEntriesQuery,\n description: \"List entries\",\n options: [\n {\n description: \"A UUID or slug to identify the list to retrieve entries from.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"create-an-entry-add-record-to-list\": operation({\n body: \"required\",\n call: postV2ListsByListEntries,\n description: \"Create an entry (add record to list)\",\n options: [\n {\n description:\n \"The UUID or slug identifying the list that the created list entry should belong to.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"upsert-a-list-entry-by-parent\": operation({\n body: \"required\",\n call: putV2ListsByListEntries,\n description: \"Upsert a list entry by parent\",\n options: [\n {\n description: \"A UUID or slug of the list the list entry belongs to.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"delete-a-list-entry\": operation({\n body: \"none\",\n call: deleteV2ListsByListEntriesByEntryId,\n description: \"Delete a list entry\",\n options: [\n {\n description: \"A UUID or slug identifying the list the entry is in.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the entry to delete.\",\n in: \"path\",\n name: \"entry_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-list-entry\": operation({\n body: \"none\",\n call: getV2ListsByListEntriesByEntryId,\n description: \"Get a list entry\",\n options: [\n {\n description: \"A UUID or slug identifying the list the entry is in.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the entry.\",\n in: \"path\",\n name: \"entry_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-list-entry-append-multiselect-values\": operation({\n body: \"required\",\n call: patchV2ListsByListEntriesByEntryId,\n description: \"Update a list entry (append multiselect values)\",\n options: [\n {\n description: \"A UUID or slug of the list the list entry belongs to.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID of the list entry to update.\",\n in: \"path\",\n name: \"entry_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-list-entry-overwrite-multiselect-values\": operation({\n body: \"required\",\n call: putV2ListsByListEntriesByEntryId,\n description: \"Update a list entry (overwrite multiselect values)\",\n options: [\n {\n description: \"A UUID or slug of the list the list entry belongs to.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID of the list entry to update.\",\n in: \"path\",\n name: \"entry_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"list-attribute-values-for-a-list-entry\": operation({\n body: \"none\",\n call: getV2ListsByListEntriesByEntryIdAttributesByAttributeValues,\n description: \"List attribute values for a list entry\",\n options: [\n {\n description: \"A UUID or slug identifying the list the entry is in.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the entry.\",\n in: \"path\",\n name: \"entry_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute you want to query values on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"If `true`, the endpoint will return all historic values for the attribute. If `false`, the endpoint will only return the currently active value(s). Defaults to `false`. Can only be set to `true` for attributes which support historic data; the endpoint will throw if set to `true` for non-historic attributes.\",\n in: \"query\",\n name: \"show_historic\",\n required: false,\n type: \"boolean\",\n },\n {\n description:\n \"The maximum number of results to return. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n ],\n }),\n \"write-list-entry-attribute-values\": operation({\n body: \"required\",\n call: putV2ListsByListEntriesByEntryIdAttributesByAttributeValues,\n description: \"Write list entry attribute values\",\n options: [\n {\n description: \"A UUID or slug identifying the list the entry is in.\",\n in: \"path\",\n name: \"list\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID identifying the entry.\",\n in: \"path\",\n name: \"entry_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"A UUID or slug to identify the attribute you want to query values on.\",\n in: \"path\",\n name: \"attribute\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Entries are elements in a list that reference a single parent record.\",\n },\n \"workspace-members\": {\n commands: {\n \"list-workspace-members\": operation({\n body: \"none\",\n call: getV2WorkspaceMembers,\n description: \"List workspace members\",\n options: [],\n }),\n \"get-a-workspace-member\": operation({\n body: \"none\",\n call: getV2WorkspaceMembersByWorkspaceMemberId,\n description: \"Get a workspace member\",\n options: [\n {\n description: \"A UUID to identify the workspace member.\",\n in: \"path\",\n name: \"workspace_member_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Workspace members represent a user with access to a workspace.\",\n },\n notes: {\n commands: {\n \"list-notes\": operation({\n body: \"none\",\n call: getV2Notes,\n description: \"List notes\",\n options: [\n {\n description:\n \"The maximum number of results to return. The default is `10` and the maximum is `50`. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning. The default is `0`. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n {\n description: \"The slug or ID of the parent object the notes belong to.\",\n in: \"query\",\n name: \"parent_object\",\n required: false,\n type: \"string\",\n },\n {\n description: \"The ID of the parent record the notes belong to.\",\n in: \"query\",\n name: \"parent_record_id\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n \"create-a-note\": operation({\n body: \"required\",\n call: postV2Notes,\n description: \"Create a note\",\n options: [],\n }),\n \"delete-a-note\": operation({\n body: \"none\",\n call: deleteV2NotesByNoteId,\n description: \"Delete a note\",\n options: [\n {\n description: \"A UUID which identifies the note to delete.\",\n in: \"path\",\n name: \"note_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-note\": operation({\n body: \"none\",\n call: getV2NotesByNoteId,\n description: \"Get a note\",\n options: [\n {\n description: \"A UUID which identifies the note.\",\n in: \"path\",\n name: \"note_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-note\": operation({\n body: \"required\",\n call: patchV2NotesByNoteId,\n description: \"Update a note\",\n options: [\n {\n description: \"A UUID which identifies the note to update.\",\n in: \"path\",\n name: \"note_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Notes are rich text documents that reference a single parent record.\",\n },\n tasks: {\n commands: {\n \"list-tasks\": operation({\n body: \"none\",\n call: getV2Tasks,\n description: \"List tasks\",\n options: [\n {\n description:\n \"The maximum number of results to return. Defaults to 500. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning. Defaults to 0. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n 'Optionally sort the results. \"created_at:asc\" returns oldest results first, \"created_at:desc\" returns the newest results first. \"completed_at:asc\" and \"completed_at:desc\" sort by completion time. With \"completed_at:asc\", incomplete tasks (no completion date) appear first, followed by completed tasks oldest-first. With \"completed_at:desc\", completed tasks appear first (newest-first), followed by incomplete tasks. To exclude incomplete tasks, filter by is_completed. If unspecified, defaults to \"created_at:asc\" (oldest results first).',\n in: \"query\",\n name: \"sort\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Pass a value to this parameter to filter results to only those tasks that contain the specified record in the `linked_records` property of the task. This parameter should identify the object that the linked record belongs to. For example, if filtering to tasks that link to a specific person record, this parameter should be `people`. If provided, `linked_record_id` must also be provided.\",\n in: \"query\",\n name: \"linked_object\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Pass a value to this parameter to filter results to only those tasks that contain the specified record in the `linked_records` property of the task. This parameter should contain the record ID of the linked record. If provided, `linked_object` must also be provided.\",\n in: \"query\",\n name: \"linked_record_id\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Filter tasks by workspace member assignees. Workspace members can be referenced by either their email address or ID. Pass an empty value or the string `null` to find tasks with no assignee.\",\n in: \"query\",\n name: \"assignee\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Filter tasks by whether they have been completed. By default, both completed and non-completed tasks are returned. Specify `true` to only return completed tasks, or `false` to only return non-completed tasks.\",\n in: \"query\",\n name: \"is_completed\",\n required: false,\n type: \"boolean\",\n },\n ],\n }),\n \"create-a-task\": operation({\n body: \"required\",\n call: postV2Tasks,\n description: \"Create a task\",\n options: [],\n }),\n \"delete-a-task\": operation({\n body: \"none\",\n call: deleteV2TasksByTaskId,\n description: \"Delete a task\",\n options: [\n {\n description: \"The ID of the task to delete.\",\n in: \"path\",\n name: \"task_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-task\": operation({\n body: \"none\",\n call: getV2TasksByTaskId,\n description: \"Get a task\",\n options: [\n {\n description: \"The ID of the task.\",\n in: \"path\",\n name: \"task_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-task\": operation({\n body: \"required\",\n call: patchV2TasksByTaskId,\n description: \"Update a task\",\n options: [\n {\n description: \"The ID of the task to update.\",\n in: \"path\",\n name: \"task_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description:\n \"A task is a defined, actionable item with references to linked records and assigned workspace members.\",\n },\n threads: {\n commands: {\n \"list-threads\": operation({\n body: \"none\",\n call: getV2Threads,\n description: \"List threads\",\n options: [\n {\n description:\n \"Use this parameter to filter to threads on a specific record. Must be passed with `object`.\",\n in: \"query\",\n name: \"record_id\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Use this parameter to filter to threads on a specific record. Must be passed with `record_id`. Accepts either a slug or an ID.\",\n in: \"query\",\n name: \"object\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Use this parameter to filter to threads on a specific entry. Must be passed with `list`.\",\n in: \"query\",\n name: \"entry_id\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Use this parameter to filter to threads on a specific entry. Must be passed with `entry_id`. Accepts either a slug or an ID.\",\n in: \"query\",\n name: \"list\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"The maximum number of results to return. The default is `10` and the maximum is `50`. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning. The default is `0`. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n ],\n }),\n \"get-a-thread-and-its-comments\": operation({\n body: \"none\",\n call: getV2ThreadsByThreadId,\n description: \"Get a thread and its comments\",\n options: [\n {\n description: \"A UUID which identifies the thread.\",\n in: \"path\",\n name: \"thread_id\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"The maximum number of comments to return. Defaults to `250`, which is also the maximum.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A cursor for pagination. Use the `next_cursor` from the previous response to get the next page of comments.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n {\n description: \"Only return comments created after this timestamp.\",\n in: \"query\",\n name: \"created_after\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Threads are groups of comments on either a record or entry.\",\n },\n comments: {\n commands: {\n \"create-a-comment\": operation({\n body: \"required\",\n call: postV2Comments,\n description: \"Create a comment\",\n options: [],\n }),\n \"delete-a-comment\": operation({\n body: \"none\",\n call: deleteV2CommentsByCommentId,\n description: \"Delete a comment\",\n options: [\n {\n description: \"The ID of the comment to delete.\",\n in: \"path\",\n name: \"comment_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-comment\": operation({\n body: \"none\",\n call: getV2CommentsByCommentId,\n description: \"Get a comment\",\n options: [\n {\n description: \"A UUID which identifies the comment.\",\n in: \"path\",\n name: \"comment_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description: \"Comments are messages on a thread.\",\n },\n emails: {\n commands: {\n \"list-emails\": operation({\n body: \"none\",\n call: getV2Emails,\n description: \"List emails\",\n options: [\n {\n description:\n \"The maximum number of emails to return. Must be between 1 and 50. Defaults to 25.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A pagination cursor used to fetch the next page of emails. Responses with more emails will include a cursor for you to use here. If not provided, the first page will be returned.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"The object to filter emails by. Must be the slug or ID of either the people or companies object. If provided, linked_record_ids must also be provided.\",\n in: \"query\",\n name: \"linked_object\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"A comma-separated list of up to 10 record IDs to filter emails by. All IDs must belong to the object given in `linked_object`, so filtering by both people and companies requires two requests. If provided, linked_object must also be provided.\",\n in: \"query\",\n name: \"linked_record_ids\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"A comma-separated list of up to 10 email addresses. Emails that include at least one of them as a participant are returned.\",\n in: \"query\",\n name: \"participants\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"A domain to filter emails by. Emails with at least one participant at this domain are returned.\",\n in: \"query\",\n name: \"domain\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Only return emails sent after this timestamp. `sent_after` is exclusive, so an email sent at exactly this timestamp is not returned.\",\n in: \"query\",\n name: \"sent_after\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Only return emails sent before this timestamp. `sent_before` is exclusive, so an email sent at exactly this timestamp is not returned.\",\n in: \"query\",\n name: \"sent_before\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"If `true`, an email is only returned when at least one participant outside your workspace looks like a person rather than an automated sender (`notifications@`, `no-reply@`, meeting notetakers, …). Defaults to `false`, which returns every email regardless of who sent it.\",\n in: \"query\",\n name: \"exclude_automated_participants\",\n required: false,\n type: \"boolean\",\n },\n ],\n }),\n },\n description: \"Emails are messages synced from connected mailboxes.\",\n },\n sequences: {\n commands: {\n \"add-emails-to-the-unsubscribe-list\": operation({\n body: \"required\",\n call: postV2SequencesUnsubscribedEmails,\n description: \"Add emails to the unsubscribe list\",\n options: [],\n }),\n },\n description: \"Sequences are automated email campaigns sent from Attio.\",\n },\n meetings: {\n commands: {\n \"list-meetings\": operation({\n body: \"none\",\n call: getV2Meetings,\n description: \"List meetings\",\n options: [\n {\n description:\n \"The maximum number of meetings to return. Must be between 1 and 200. Defaults to 50.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A pagination cursor used to fetch the next page of meetings. Responses with more meetings will include a cursor for you to use here. If not provided, the first page will be returned.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"The object to filter meetings by. Must be a valid object slug or ID. If provided, linked_record_id must also be provided.\",\n in: \"query\",\n name: \"linked_object\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Used to filter meetings to only those values that include a specific linked record. Must be a valid record ID. If provided, linked_object must also be provided. When combined with `participants`, the filters are combined with OR: meetings matching either filter are returned.\",\n in: \"query\",\n name: \"linked_record_id\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"A comma-separated list of emails to filter meetings by. If provided, meetings will be filtered to only include meetings that include at least one of the provided emails as participants. When combined with `linked_record_id`, the filters are combined with OR: meetings matching either filter are returned.\",\n in: \"query\",\n name: \"participants\",\n required: false,\n type: \"string\",\n },\n {\n description: \"The order in which to sort the meetings. Defaults to start_asc.\",\n in: \"query\",\n name: \"sort\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Use `ends_from` to filter meetings to only those that end after the specified timestamp. `ends_from` is inclusive, meaning that meetings that end at the exact timestamp will be included in results. When evaluating all-day meetings, we filter results from the perspective of a specific timezone (see `timezone` for more information).\",\n in: \"query\",\n name: \"ends_from\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Use `starts_before` to filter meetings to only those that start before the specified timestamp. `starts_before` is exclusive, meaning that meetings that start at the exact timestamp will not be included in results. When evaluating all-day meetings, we filter results from the perspective of a specific timezone (see `timezone` for more information).\",\n in: \"query\",\n name: \"starts_before\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"The timezone to use when filtering meetings using `ends_from` and `starts_before`. Defaults to UTC. This property has no effect for non-all-day meetings.\",\n in: \"query\",\n name: \"timezone\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n \"create-a-meeting\": operation({\n body: \"required\",\n call: postV2Meetings,\n description: \"Create a meeting\",\n options: [],\n }),\n \"delete-a-meeting\": operation({\n body: \"none\",\n call: deleteV2MeetingsByMeetingId,\n description: \"Delete a meeting\",\n options: [\n {\n description: \"A UUID which identifies the meeting to delete.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-meeting\": operation({\n body: \"none\",\n call: getV2MeetingsByMeetingId,\n description: \"Get a meeting\",\n options: [\n {\n description: \"A UUID which identifies the meeting.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-meeting-append-linked-records\": operation({\n body: \"required\",\n call: patchV2MeetingsByMeetingId,\n description: \"Update a meeting (append linked records)\",\n options: [\n {\n description: \"A UUID which identifies the meeting to update.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-meeting-overwrite-linked-records\": operation({\n body: \"required\",\n call: putV2MeetingsByMeetingId,\n description: \"Update a meeting (overwrite linked records)\",\n options: [\n {\n description: \"A UUID which identifies the meeting to update.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description:\n \"Meetings are events synced from your calendar, added manually or added from third-party integrations.\",\n },\n \"call-recordings\": {\n commands: {\n \"list-call-recordings\": operation({\n body: \"none\",\n call: getV2MeetingsByMeetingIdCallRecordings,\n description: \"List call recordings\",\n options: [\n {\n description: \"The ID of the meeting to list call recordings for.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"The maximum number of results to return. Defaults to 50 with a maximum of 200.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A cursor for pagination. Use the `next_cursor` from the previous response to get the next page of results.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n \"create-call-recording\": operation({\n body: \"required\",\n call: postV2MeetingsByMeetingIdCallRecordings,\n description: \"Create call recording\",\n options: [\n {\n description: \"The ID of the meeting this recording belongs to.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"delete-call-recording\": operation({\n body: \"none\",\n call: deleteV2MeetingsByMeetingIdCallRecordingsByCallRecordingId,\n description: \"Delete call recording\",\n options: [\n {\n description: \"The ID of the meeting this call recording belongs to.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"The ID of the call recording to delete.\",\n in: \"path\",\n name: \"call_recording_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-call-recording\": operation({\n body: \"none\",\n call: getV2MeetingsByMeetingIdCallRecordingsByCallRecordingId,\n description: \"Get call recording\",\n options: [\n {\n description: \"The ID of the meeting this recording belongs to.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"The ID of the call recording to retrieve.\",\n in: \"path\",\n name: \"call_recording_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description:\n \"Call recordings store video, audio, transcript and speaker information for calls.\",\n },\n transcripts: {\n commands: {\n \"deprecated-get-call-transcript\": operation({\n body: \"none\",\n call: getV2MeetingsByMeetingIdCallRecordingsByCallRecordingIdTranscript,\n description: \"Deprecated: Get call transcript\",\n options: [\n {\n description: \"The ID of the meeting.\",\n in: \"path\",\n name: \"meeting_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"The ID of the call recording to get the transcript for.\",\n in: \"path\",\n name: \"call_recording_id\",\n required: true,\n type: \"string\",\n },\n {\n description:\n \"A cursor for pagination through transcript segments. Use the `next_cursor` from the previous response to get the next page of speech segments within this transcript.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n },\n description:\n \"Transcripts contain the speech segments and speaker information for a call recording.\",\n },\n files: {\n commands: {\n \"list-files\": operation({\n body: \"none\",\n call: getV2Files,\n description: \"List files\",\n options: [\n {\n description: \"The object slug or ID.\",\n in: \"query\",\n name: \"object\",\n required: true,\n type: \"string\",\n },\n {\n description: \"The record ID for the specific record whose files you want to list.\",\n in: \"query\",\n name: \"record_id\",\n required: true,\n type: \"string\",\n },\n {\n description: \"Filter results by storage provider.\",\n in: \"query\",\n name: \"storage_provider\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"Filter by parent folder ID. Each file entry has provided optioanl parent_folder_id that can be used to filter results by folder. When omitted, entries at all nesting levels are returned.\",\n in: \"query\",\n name: \"parent_folder_id\",\n required: false,\n type: \"string\",\n },\n {\n description:\n \"The maximum number of files to return. Must be between 1 and 200. Defaults to 50.\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"A pagination cursor used to fetch the next page of files. Responses with more files will include a cursor for you to use here. If not provided, the first page will be returned.\",\n in: \"query\",\n name: \"cursor\",\n required: false,\n type: \"string\",\n },\n ],\n }),\n \"create-a-folder\": operation({\n body: \"required\",\n call: postV2Files,\n description: \"Create a folder\",\n options: [],\n }),\n \"delete-a-file\": operation({\n body: \"none\",\n call: deleteV2FilesByFileId,\n description: \"Delete a file\",\n options: [\n {\n description: \"A UUID which identifies the file to delete.\",\n in: \"path\",\n name: \"file_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-file\": operation({\n body: \"none\",\n call: getV2FilesByFileId,\n description: \"Get a file\",\n options: [\n {\n description: \"A UUID which identifies the file entry.\",\n in: \"path\",\n name: \"file_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description:\n \"Files are documents and folders linked to records, stored either in Attio or connected via external storage providers.\",\n },\n webhooks: {\n commands: {\n \"list-webhooks\": operation({\n body: \"none\",\n call: getV2Webhooks,\n description: \"List webhooks\",\n options: [\n {\n description:\n \"The maximum number of results to return, between 10 and 100, defaults to 10. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"limit\",\n required: false,\n type: \"integer\",\n },\n {\n description:\n \"The number of results to skip over before returning, defaults to 0. See the [full guide to pagination here](/rest-api/guides/pagination).\",\n in: \"query\",\n name: \"offset\",\n required: false,\n type: \"integer\",\n },\n ],\n }),\n \"create-a-webhook\": operation({\n body: \"required\",\n call: postV2Webhooks,\n description: \"Create a webhook\",\n options: [],\n }),\n \"delete-a-webhook\": operation({\n body: \"none\",\n call: deleteV2WebhooksByWebhookId,\n description: \"Delete a webhook\",\n options: [\n {\n description: \"A UUID identifying the webhook to delete.\",\n in: \"path\",\n name: \"webhook_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"get-a-webhook\": operation({\n body: \"none\",\n call: getV2WebhooksByWebhookId,\n description: \"Get a webhook\",\n options: [\n {\n description: \"A UUID which identifies the webhook.\",\n in: \"path\",\n name: \"webhook_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n \"update-a-webhook\": operation({\n body: \"required\",\n call: patchV2WebhooksByWebhookId,\n description: \"Update a webhook\",\n options: [\n {\n description: \"A UUID which identifies the webhook.\",\n in: \"path\",\n name: \"webhook_id\",\n required: true,\n type: \"string\",\n },\n ],\n }),\n },\n description:\n \"Webhooks allow you to listen for changes to data in Attio, for example when a record is updated.\",\n },\n meta: {\n commands: {\n identify: operation({\n body: \"none\",\n call: getV2Self,\n description: \"Identify\",\n options: [],\n }),\n },\n description: \"Meta endpoints are used to get information about the API token.\",\n },\n};\n","import { cli, define } from \"gunshi\";\nimport { renderHeader } from \"gunshi/renderer\";\n\nimport type { Environment } from \"./api/client.ts\";\nimport { type Operation, operationCommand } from \"./commands/operation.ts\";\nimport { reportError, usageError } from \"./errors.ts\";\nimport { groups } from \"./types/attio/commands.gen.ts\";\n\ntype Command = ReturnType<typeof define>;\n\nconst rootCommand = define({\n name: \"attio-api\",\n description: \"Agent-friendly access to the Attio API\",\n run: () => 'Run \"attio --help\" for usage information.',\n});\n\ntype Group = { commands: Record<string, Operation>; description: string };\n\n/** One command per group of operations, with the group's operations beneath it. */\nfunction commandTree(env: Environment): Record<string, Command> {\n const tree: Record<string, Command> = {};\n for (const [group, { commands, description }] of Object.entries<Group>(groups)) {\n const subCommands: Record<string, Command> = {};\n for (const [name, source] of Object.entries(commands)) {\n subCommands[name] = operationCommand(name, source, env);\n }\n tree[group] = define({\n name: group,\n description,\n run: () => `Run \"attio-api ${group} --help\" for usage information.`,\n subCommands,\n });\n }\n return tree;\n}\n\nexport async function main(\n argv: string[] = process.argv.slice(2),\n env: Environment = process.env,\n): Promise<number> {\n try {\n const pkg = await import(\"../package.json\", { with: { type: \"json\" } });\n\n await cli(argv, rootCommand, {\n name: \"attio-api\",\n version: pkg.default.version,\n strict: true,\n subCommands: commandTree(env),\n // A header on every run would precede the JSON that scripts and agents parse.\n renderHeader: (ctx) => (ctx.values.help ? renderHeader(ctx) : Promise.resolve(\"\")),\n // Usage problems go to stderr as JSON, like every other failure.\n renderValidationErrors: null,\n onBeforeCommand: (ctx) => {\n // Strict mode rejects unknown options only; no command takes positional arguments.\n if (ctx.validationError || ctx.values.help || ctx.values.version) return;\n const unexpected = [...ctx.positionals.slice(ctx.commandPath.length), ...ctx.rest];\n if (unexpected.length > 0) throw usageError(`Unexpected argument: ${unexpected.join(\" \")}`);\n },\n onAfterCommand: (ctx, result) => {\n if (ctx.values.help || ctx.values.version) return;\n if (result) console.log(result);\n },\n });\n return 0;\n } catch (error) {\n return reportError(error);\n }\n}\n"],"mappings":"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M;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,YAAY;EACV,UAAU;GACR,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,sBAAsB,UAAU;IAC9B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,sBAAsB,UAAU;IAC9B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,sBAAsB,UAAU;IAC9B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,oBAAoB;EAClB,UAAU;GACR,yBAAyB,UAAU;IACjC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,6BAA6B,UAAU;IACrC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,6BAA6B,UAAU;IACrC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,6BAA6B,UAAU;IACrC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,0BAA0B,UAAU;IAClC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,uDAAuD,UAAU;IAC/D,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,0DAA0D,UAAU;IAClE,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,YAAY;EACV,UAAU;GACR,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,uBAAuB,UAAU;IAC/B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,uBAAuB,UAAU;IAC/B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,uBAAuB,UAAU;IAC/B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,0BAA0B,UAAU;IAClC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,0BAA0B,UAAU;IAClC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,SAAS;EACP,UAAU;GACR,gBAAgB,UAAU;IACxB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,gBAAgB,UAAU;IACxB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,6CAA6C,UAAU;IACrD,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,gDAAgD,UAAU;IACxD,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,qBAAqB,UAAU;IAC7B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,gCAAgC,UAAU;IACxC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,iCAAiC,UAAU;IACzC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,uBAAuB,UAAU;IAC/B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,kBAAkB,UAAU;IAC1B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;EACH;EACA,aAAa;CACf;CACA,KAAK;EACH,UAAU,EACR,aAAa,UAAU;GACrB,MAAM;GACN,MAAM;GACN,aAAa;GACb,SAAS,CAAC;EACZ,CAAC,EACH;EACA,aAAa;CACf;CACA,OAAO;EACL,UAAU;GACR,kBAAkB,UAAU;IAC1B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,cAAc,UAAU;IACtB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,uBAAuB,UAAU;IAC/B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,SAAS;EACP,UAAU;GACR,gBAAgB,UAAU;IACxB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,sCAAsC,UAAU;IAC9C,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iCAAiC,UAAU;IACzC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,uBAAuB,UAAU;IAC/B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iDAAiD,UAAU;IACzD,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,oDAAoD,UAAU;IAC5D,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,0CAA0C,UAAU;IAClD,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,qCAAqC,UAAU;IAC7C,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,qBAAqB;EACnB,UAAU;GACR,0BAA0B,UAAU;IAClC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,0BAA0B,UAAU;IAClC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,OAAO;EACL,UAAU;GACR,cAAc,UAAU;IACtB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,cAAc,UAAU;IACtB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,OAAO;EACL,UAAU;GACR,cAAc,UAAU;IACtB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,cAAc,UAAU;IACtB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aACE;CACJ;CACA,SAAS;EACP,UAAU;GACR,gBAAgB,UAAU;IACxB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,iCAAiC,UAAU;IACzC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,UAAU;EACR,UAAU;GACR,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aAAa;CACf;CACA,QAAQ;EACN,UAAU,EACR,eAAe,UAAU;GACvB,MAAM;GACN,MAAM;GACN,aAAa;GACb,SAAS;IACP;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;GACF;EACF,CAAC,EACH;EACA,aAAa;CACf;CACA,WAAW;EACT,UAAU,EACR,sCAAsC,UAAU;GAC9C,MAAM;GACN,MAAM;GACN,aAAa;GACb,SAAS,CAAC;EACZ,CAAC,EACH;EACA,aAAa;CACf;CACA,UAAU;EACR,UAAU;GACR,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,0CAA0C,UAAU;IAClD,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,6CAA6C,UAAU;IACrD,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aACE;CACJ;CACA,mBAAmB;EACjB,UAAU;GACR,wBAAwB,UAAU;IAChC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,yBAAyB,UAAU;IACjC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,yBAAyB,UAAU;IACjC,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,sBAAsB,UAAU;IAC9B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aACE;CACJ;CACA,aAAa;EACX,UAAU,EACR,kCAAkC,UAAU;GAC1C,MAAM;GACN,MAAM;GACN,aAAa;GACb,SAAS;IACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;IACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR;GACF;EACF,CAAC,EACH;EACA,aACE;CACJ;CACA,OAAO;EACL,UAAU;GACR,cAAc,UAAU;IACtB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS;KACP;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aAAa;MACb,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;KACA;MACE,aACE;MACF,IAAI;MACJ,MAAM;MACN,UAAU;MACV,MAAM;KACR;IACF;GACF,CAAC;GACD,mBAAmB,UAAU;IAC3B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,cAAc,UAAU;IACtB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aACE;CACJ;CACA,UAAU;EACR,UAAU;GACR,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,GACA;KACE,aACE;KACF,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CAAC;GACZ,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,iBAAiB,UAAU;IACzB,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;GACD,oBAAoB,UAAU;IAC5B,MAAM;IACN,MAAM;IACN,aAAa;IACb,SAAS,CACP;KACE,aAAa;KACb,IAAI;KACJ,MAAM;KACN,UAAU;KACV,MAAM;IACR,CACF;GACF,CAAC;EACH;EACA,aACE;CACJ;CACA,MAAM;EACJ,UAAU,EACR,UAAU,UAAU;GAClB,MAAM;GACN,MAAM;GACN,aAAa;GACb,SAAS,CAAC;EACZ,CAAC,EACH;EACA,aAAa;CACf;AACF;;;AC3rEA,MAAM,cAAc,OAAO;CACzB,MAAM;CACN,aAAa;CACb,WAAW;AACb,CAAC;;AAKD,SAAS,YAAY,KAA2C;CAC9D,MAAM,OAAgC,CAAC;CACvC,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,kBAAkB,OAAO,QAAe,MAAM,GAAG;EAC9E,MAAM,cAAuC,CAAC;EAC9C,KAAK,MAAM,CAAC,MAAM,WAAW,OAAO,QAAQ,QAAQ,GAClD,YAAY,QAAQ,iBAAiB,MAAM,QAAQ,GAAG;EAExD,KAAK,SAAS,OAAO;GACnB,MAAM;GACN;GACA,WAAW,kBAAkB,MAAM;GACnC;EACF,CAAC;CACH;CACA,OAAO;AACT;AAEA,eAAsB,KACpB,OAAiB,QAAQ,KAAK,MAAM,CAAC,GACrC,MAAmB,QAAQ,KACV;CACjB,IAAI;EACF,MAAM,MAAM,MAAM,OAAO;EAEzB,MAAM,IAAI,MAAM,aAAa;GAC3B,MAAM;GACN,SAAS,IAAI,QAAQ;GACrB,QAAQ;GACR,aAAa,YAAY,GAAG;GAE5B,eAAe,QAAS,IAAI,OAAO,OAAO,aAAa,GAAG,IAAI,QAAQ,QAAQ,EAAE;GAEhF,wBAAwB;GACxB,kBAAkB,QAAQ;IAExB,IAAI,IAAI,mBAAmB,IAAI,OAAO,QAAQ,IAAI,OAAO,SAAS;IAClE,MAAM,aAAa,CAAC,GAAG,IAAI,YAAY,MAAM,IAAI,YAAY,MAAM,GAAG,GAAG,IAAI,IAAI;IACjF,IAAI,WAAW,SAAS,GAAG,MAAM,WAAW,wBAAwB,WAAW,KAAK,GAAG,GAAG;GAC5F;GACA,iBAAiB,KAAK,WAAW;IAC/B,IAAI,IAAI,OAAO,QAAQ,IAAI,OAAO,SAAS;IAC3C,IAAI,QAAQ,QAAQ,IAAI,MAAM;GAChC;EACF,CAAC;EACD,OAAO;CACT,SAAS,OAAO;EACd,OAAO,YAAY,KAAK;CAC1B;AACF"}