@getyetty-sdk/pennylane 2026.1.16-4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +100 -0
- package/dist/index.d.mts +30442 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +4486 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["joinedValues","config","request","error","finalError","url"],"sources":["../src/generated/core/bodySerializer.gen.ts","../src/generated/core/params.gen.ts","../src/generated/core/serverSentEvents.gen.ts","../src/generated/core/pathSerializer.gen.ts","../src/generated/core/utils.gen.ts","../src/generated/core/auth.gen.ts","../src/generated/client/utils.gen.ts","../src/generated/client/client.gen.ts","../src/generated/client.gen.ts","../src/generated/sdk.gen.ts","../src/generated/types.gen.ts"],"sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\n\nimport type {\n ArrayStyle,\n ObjectStyle,\n SerializerOptions,\n} from './pathSerializer.gen';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: any) => any;\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 = (\n data: FormData,\n key: string,\n value: unknown,\n): 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 = (\n data: URLSearchParams,\n key: string,\n value: unknown,\n): 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: <T extends Record<string, any> | Array<Record<string, any>>>(\n body: T,\n ): FormData => {\n const data = new FormData();\n\n Object.entries(body).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: <T>(body: T): string =>\n JSON.stringify(body, (_key, value) =>\n typeof value === 'bigint' ? value.toString() : value,\n ),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: <T extends Record<string, any> | Array<Record<string, any>>>(\n body: T,\n ): string => {\n const data = new URLSearchParams();\n\n Object.entries(body).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\nconst 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\nconst stripEmptySlots = (params: Params) => {\n for (const [slot, value] of Object.entries(params)) {\n if (value && typeof value === 'object' && !Object.keys(value).length) {\n delete params[slot as Slot];\n }\n }\n};\n\nexport const buildClientParams = (\n args: ReadonlyArray<unknown>,\n fields: FieldsConfig,\n) => {\n const params: Params = {\n body: {},\n headers: {},\n path: {},\n query: {},\n };\n\n const map = buildKeyMap(fields);\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 (params[field.in] as Record<string, unknown>)[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 (params[field.in] as Record<string, unknown>)[name] = value;\n } else {\n params[field.map] = value;\n }\n } else {\n const extra = extraPrefixes.find(([prefix]) =>\n key.startsWith(prefix),\n );\n\n if (extra) {\n const [prefix, slot] = extra;\n (params[slot] as Record<string, unknown>)[\n key.slice(prefix.length)\n ] = value;\n } else if ('allowExtra' in config && config.allowExtra) {\n for (const [slot, allowed] of Object.entries(config.allowExtra)) {\n if (allowed) {\n (params[slot as Slot] as Record<string, unknown>)[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<\n RequestInit,\n 'method'\n> &\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<\n TData = unknown,\n TReturn = void,\n TNext = unknown,\n> = {\n stream: AsyncGenerator<\n TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n TReturn,\n TNext\n >;\n};\n\nexport const 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 =\n sseSleepFn ??\n ((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)\n throw new Error(\n `SSE failed: ${response.status} ${response.statusText}`,\n );\n\n if (!response.body) throw new Error('No body in SSE response');\n\n const reader = response.body\n .pipeThrough(new TextDecoderStream())\n .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 // Normalize line endings: CRLF -> LF, then CR -> LF\n buffer = buffer.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\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(\n line.replace(/^retry:\\s*/, ''),\n 10,\n );\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 (\n sseMaxRetryAttempts !== undefined &&\n attempt >= sseMaxRetryAttempts\n ) {\n break; // stop after firing error\n }\n\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(\n retryDelay * 2 ** (attempt - 1),\n sseMaxRetryDelay ?? 30000,\n );\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>\n extends SerializePrimitiveOptions,\n 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) => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}) => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix'\n ? separator + joinedValues\n : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam) => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}) => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [\n ...values,\n key,\n allowReserved ? (v as string) : encodeURIComponent(v as string),\n ];\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'\n ? separator + joinedValues\n : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(\n match,\n serializeArrayParam({ explode, name, style, value }),\n );\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}) => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}) {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e. client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token =\n typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}) => {\n const querySerializer = (queryParams: T) => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (\n contentType: string | null,\n): 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 (\n cleanContent.startsWith('application/json') ||\n cleanContent.endsWith('+json')\n ) {\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) =>\n cleanContent.startsWith(type),\n )\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport const setAuthParams = async ({\n security,\n ...options\n}: Pick<Required<RequestOptions>, 'security'> &\n Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n }) => {\n for (const auth of security) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n};\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator =\n header instanceof Headers\n ? headersEntries(header)\n : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e. their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n response: Res,\n request: Req,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (\n request: Req,\n options: Options,\n) => 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(\n id: number | Interceptor,\n fn: Interceptor,\n ): 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 {\n Client,\n Config,\n RequestOptions,\n ResolvedRequestOptions,\n} 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<\n Request,\n Response,\n unknown,\n ResolvedRequestOptions\n >();\n\n const beforeRequest = async (options: RequestOptions) => {\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,\n };\n\n if (opts.security) {\n await setAuthParams({\n ...opts,\n security: opts.security,\n });\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body);\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 url = buildUrl(opts);\n\n return { opts, url };\n };\n\n const request: Client['request'] = async (options) => {\n // @ts-expect-error\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n let request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n let response: Response;\n\n try {\n response = await _fetch(request);\n } catch (error) {\n // Handle fetch exceptions (AbortError, network errors, etc.)\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(\n error,\n undefined as any,\n request,\n opts,\n )) as unknown;\n }\n }\n\n finalError = finalError || ({} as unknown);\n\n if (opts.throwOnError) {\n throw finalError;\n }\n\n // Return error response\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response: undefined as any,\n };\n }\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (\n response.status === 204 ||\n response.headers.get('Content-Length') === '0'\n ) {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n const error = jsonError ?? textError;\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(error, response, request, opts)) as string;\n }\n }\n\n finalError = finalError || ({} as string);\n\n if (opts.throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n ...result,\n };\n };\n\n const makeMethodFn =\n (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn =\n (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n headers: opts.headers as unknown as Record<string, string>,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts) as\n | BodyInit\n | null\n | undefined,\n url,\n });\n };\n\n return {\n buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client = createClient(createConfig<ClientOptions2>({ baseUrl: 'https://app.pennylane.com' }));\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type Client, formDataBodySerializer, type Options as Options2, type TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { CompanyCompleteRegistrationData, CompanyCompleteRegistrationErrors, CompanyCompleteRegistrationResponses, CompanyCreateData, CompanyCreateErrors, CompanyCreateResponses, CompanyFiscalYearsData, CompanyFiscalYearsErrors, CompanyFiscalYearsResponses, CreateCustomerInvoiceFromQuoteData, CreateCustomerInvoiceFromQuoteErrors, CreateCustomerInvoiceFromQuoteResponses, CreateEInvoiceImportData, CreateEInvoiceImportErrors, CreateEInvoiceImportResponses, CreatePurchaseRequestImportData, CreatePurchaseRequestImportErrors, CreatePurchaseRequestImportResponses, CreateTransactionData, CreateTransactionErrors, CreateTransactionResponses, DeleteCustomerInvoiceMatchedTransactionsData, DeleteCustomerInvoiceMatchedTransactionsErrors, DeleteCustomerInvoiceMatchedTransactionsResponses, DeleteCustomerInvoicesData, DeleteCustomerInvoicesErrors, DeleteCustomerInvoicesResponses, DeleteLedgerEntryLinesUnletterData, DeleteLedgerEntryLinesUnletterErrors, DeleteLedgerEntryLinesUnletterResponses, DeleteSepaMandateData, DeleteSepaMandateErrors, DeleteSepaMandateResponses, DeleteSupplierInvoiceMatchedTransactionsData, DeleteSupplierInvoiceMatchedTransactionsErrors, DeleteSupplierInvoiceMatchedTransactionsResponses, ExportAnalyticalGeneralLedgerData, ExportAnalyticalGeneralLedgerErrors, ExportAnalyticalGeneralLedgerResponses, ExportFecData, ExportFecErrors, ExportFecResponses, FinalizeCustomerInvoiceData, FinalizeCustomerInvoiceErrors, FinalizeCustomerInvoiceResponses, FindUserData, FindUserErrors, FindUserResponses, GetAnalyticalGeneralLedgerExportData, GetAnalyticalGeneralLedgerExportErrors, GetAnalyticalGeneralLedgerExportResponses, GetBankAccountData, GetBankAccountErrors, GetBankAccountResponses, GetBankAccountsData, GetBankAccountsErrors, GetBankAccountsResponses, GetBankEstablishmentsData, GetBankEstablishmentsErrors, GetBankEstablishmentsResponses, GetBillingSubscriptionData, GetBillingSubscriptionErrors, GetBillingSubscriptionInvoiceLinesData, GetBillingSubscriptionInvoiceLineSectionsData, GetBillingSubscriptionInvoiceLineSectionsErrors, GetBillingSubscriptionInvoiceLineSectionsResponses, GetBillingSubscriptionInvoiceLinesErrors, GetBillingSubscriptionInvoiceLinesResponses, GetBillingSubscriptionResponses, GetBillingSubscriptionsData, GetBillingSubscriptionsErrors, GetBillingSubscriptionsResponses, GetCategoriesData, GetCategoriesErrors, GetCategoriesResponses, GetCategoryData, GetCategoryErrors, GetCategoryGroupCategoriesData, GetCategoryGroupCategoriesErrors, GetCategoryGroupCategoriesResponses, GetCategoryGroupData, GetCategoryGroupErrors, GetCategoryGroupResponses, GetCategoryGroupsData, GetCategoryGroupsErrors, GetCategoryGroupsResponses, GetCategoryResponses, GetCommercialDocumentAppendicesData, GetCommercialDocumentAppendicesErrors, GetCommercialDocumentAppendicesResponses, GetCommercialDocumentData, GetCommercialDocumentErrors, GetCommercialDocumentInvoiceLinesData, GetCommercialDocumentInvoiceLineSectionsData, GetCommercialDocumentInvoiceLineSectionsErrors, GetCommercialDocumentInvoiceLineSectionsResponses, GetCommercialDocumentInvoiceLinesErrors, GetCommercialDocumentInvoiceLinesResponses, GetCommercialDocumentResponses, GetCompanyCustomerData, GetCompanyCustomerErrors, GetCompanyCustomerResponses, GetCustomerChangesData, GetCustomerChangesErrors, GetCustomerChangesResponses, GetCustomerContactsData, GetCustomerContactsErrors, GetCustomerContactsResponses, GetCustomerData, GetCustomerErrors, GetCustomerInvoiceAppendicesData, GetCustomerInvoiceAppendicesErrors, GetCustomerInvoiceAppendicesResponses, GetCustomerInvoiceCategoriesData, GetCustomerInvoiceCategoriesErrors, GetCustomerInvoiceCategoriesResponses, GetCustomerInvoiceCustomHeaderFieldsData, GetCustomerInvoiceCustomHeaderFieldsErrors, GetCustomerInvoiceCustomHeaderFieldsResponses, GetCustomerInvoiceData, GetCustomerInvoiceErrors, GetCustomerInvoiceInvoiceLinesData, GetCustomerInvoiceInvoiceLineSectionsData, GetCustomerInvoiceInvoiceLineSectionsErrors, GetCustomerInvoiceInvoiceLineSectionsResponses, GetCustomerInvoiceInvoiceLinesErrors, GetCustomerInvoiceInvoiceLinesResponses, GetCustomerInvoiceMatchedTransactionsData, GetCustomerInvoiceMatchedTransactionsErrors, GetCustomerInvoiceMatchedTransactionsResponses, GetCustomerInvoicePaymentsData, GetCustomerInvoicePaymentsErrors, GetCustomerInvoicePaymentsResponses, GetCustomerInvoiceResponses, GetCustomerInvoicesChangesData, GetCustomerInvoicesChangesErrors, GetCustomerInvoicesChangesResponses, GetCustomerInvoicesData, GetCustomerInvoicesErrors, GetCustomerInvoicesResponses, GetCustomerInvoiceTemplatesData, GetCustomerInvoiceTemplatesErrors, GetCustomerInvoiceTemplatesResponses, GetCustomerResponses, GetCustomersData, GetCustomersErrors, GetCustomersResponses, GetFecExportData, GetFecExportErrors, GetFecExportResponses, GetFileAttachmentsData, GetFileAttachmentsErrors, GetFileAttachmentsResponses, GetGocardlessMandateData, GetGocardlessMandateErrors, GetGocardlessMandateResponses, GetGocardlessMandatesData, GetGocardlessMandatesErrors, GetGocardlessMandatesResponses, GetIndividualCustomerData, GetIndividualCustomerErrors, GetIndividualCustomerResponses, GetJournalData, GetJournalErrors, GetJournalResponses, GetJournalsData, GetJournalsErrors, GetJournalsResponses, GetLedgerAccountData, GetLedgerAccountErrors, GetLedgerAccountResponses, GetLedgerAccountsData, GetLedgerAccountsErrors, GetLedgerAccountsResponses, GetLedgerAttachmentsData, GetLedgerAttachmentsErrors, GetLedgerAttachmentsResponses, GetLedgerEntriesData, GetLedgerEntriesErrors, GetLedgerEntriesLedgerEntryLinesData, GetLedgerEntriesLedgerEntryLinesErrors, GetLedgerEntriesLedgerEntryLinesResponses, GetLedgerEntriesResponses, GetLedgerEntryData, GetLedgerEntryErrors, GetLedgerEntryLineChangesData, GetLedgerEntryLineChangesErrors, GetLedgerEntryLineChangesResponses, GetLedgerEntryLineData, GetLedgerEntryLineErrors, GetLedgerEntryLineResponses, GetLedgerEntryLinesCategoriesData, GetLedgerEntryLinesCategoriesErrors, GetLedgerEntryLinesCategoriesResponses, GetLedgerEntryLinesData, GetLedgerEntryLinesErrors, GetLedgerEntryLinesLetteredLedgerEntryLinesData, GetLedgerEntryLinesLetteredLedgerEntryLinesErrors, GetLedgerEntryLinesLetteredLedgerEntryLinesResponses, GetLedgerEntryLinesResponses, GetLedgerEntryResponses, GetMeData, GetMeErrors, GetMeResponses, GetProductChangesData, GetProductChangesErrors, GetProductChangesResponses, GetProductData, GetProductErrors, GetProductResponses, GetProductsData, GetProductsErrors, GetProductsResponses, GetPurchaseRequestData, GetPurchaseRequestErrors, GetPurchaseRequestResponses, GetPurchaseRequestsData, GetPurchaseRequestsErrors, GetPurchaseRequestsResponses, GetQuoteAppendicesData, GetQuoteAppendicesErrors, GetQuoteAppendicesResponses, GetQuoteData, GetQuoteErrors, GetQuoteInvoiceLinesData, GetQuoteInvoiceLineSectionsData, GetQuoteInvoiceLineSectionsErrors, GetQuoteInvoiceLineSectionsResponses, GetQuoteInvoiceLinesErrors, GetQuoteInvoiceLinesResponses, GetQuoteResponses, GetSepaMandateData, GetSepaMandateErrors, GetSepaMandateResponses, GetSepaMandatesData, GetSepaMandatesErrors, GetSepaMandatesResponses, GetSupplierChangesData, GetSupplierChangesErrors, GetSupplierChangesResponses, GetSupplierData, GetSupplierErrors, GetSupplierInvoiceCategoriesData, GetSupplierInvoiceCategoriesErrors, GetSupplierInvoiceCategoriesResponses, GetSupplierInvoiceData, GetSupplierInvoiceErrors, GetSupplierInvoiceLinesData, GetSupplierInvoiceLinesErrors, GetSupplierInvoiceLinesResponses, GetSupplierInvoiceMatchedTransactionsData, GetSupplierInvoiceMatchedTransactionsErrors, GetSupplierInvoiceMatchedTransactionsResponses, GetSupplierInvoicePaymentsData, GetSupplierInvoicePaymentsErrors, GetSupplierInvoicePaymentsResponses, GetSupplierInvoiceResponses, GetSupplierInvoicesChangesData, GetSupplierInvoicesChangesErrors, GetSupplierInvoicesChangesResponses, GetSupplierInvoicesData, GetSupplierInvoicesErrors, GetSupplierInvoicesResponses, GetSupplierResponses, GetSuppliersData, GetSuppliersErrors, GetSuppliersResponses, GetTransactionCategoriesData, GetTransactionCategoriesErrors, GetTransactionCategoriesResponses, GetTransactionChangesData, GetTransactionChangesErrors, GetTransactionChangesResponses, GetTransactionData, GetTransactionErrors, GetTransactionMatchedInvoicesData, GetTransactionMatchedInvoicesErrors, GetTransactionMatchedInvoicesResponses, GetTransactionResponses, GetTransactionsData, GetTransactionsErrors, GetTransactionsResponses, GetTrialBalanceData, GetTrialBalanceErrors, GetTrialBalanceResponses, ImportCustomerInvoicesData, ImportCustomerInvoicesErrors, ImportCustomerInvoicesResponses, ImportSupplierInvoiceData, ImportSupplierInvoiceErrors, ImportSupplierInvoiceResponses, LinkCreditNoteData, LinkCreditNoteErrors, LinkCreditNoteResponses, ListCommercialDocumentsData, ListCommercialDocumentsErrors, ListCommercialDocumentsResponses, ListQuotesData, ListQuotesErrors, ListQuotesResponses, MarkAsPaidCustomerInvoiceData, MarkAsPaidCustomerInvoiceErrors, MarkAsPaidCustomerInvoiceResponses, PostBankAccountData, PostBankAccountErrors, PostBankAccountResponses, PostBillingSubscriptionsData, PostBillingSubscriptionsErrors, PostBillingSubscriptionsResponses, PostCategoriesData, PostCategoriesErrors, PostCategoriesResponses, PostCommercialDocumentAppendicesData, PostCommercialDocumentAppendicesErrors, PostCommercialDocumentAppendicesResponses, PostCompanyCustomerData, PostCompanyCustomerErrors, PostCompanyCustomerResponses, PostCustomerInvoiceAppendicesData, PostCustomerInvoiceAppendicesErrors, PostCustomerInvoiceAppendicesResponses, PostCustomerInvoiceMatchedTransactionsData, PostCustomerInvoiceMatchedTransactionsErrors, PostCustomerInvoiceMatchedTransactionsResponses, PostCustomerInvoicesData, PostCustomerInvoicesErrors, PostCustomerInvoicesResponses, PostFileAttachmentsData, PostFileAttachmentsErrors, PostFileAttachmentsResponses, PostGocardlessMandateAssociationsData, PostGocardlessMandateAssociationsErrors, PostGocardlessMandateAssociationsResponses, PostGocardlessMandateCancellationsData, PostGocardlessMandateCancellationsErrors, PostGocardlessMandateCancellationsResponses, PostGocardlessMandateMailRequestsData, PostGocardlessMandateMailRequestsErrors, PostGocardlessMandateMailRequestsResponses, PostIndividualCustomerData, PostIndividualCustomerErrors, PostIndividualCustomerResponses, PostJournalsData, PostJournalsErrors, PostJournalsResponses, PostLedgerAccountsData, PostLedgerAccountsErrors, PostLedgerAccountsResponses, PostLedgerAttachmentsData, PostLedgerAttachmentsErrors, PostLedgerAttachmentsResponses, PostLedgerEntriesData, PostLedgerEntriesErrors, PostLedgerEntriesResponses, PostLedgerEntryLinesLetterData, PostLedgerEntryLinesLetterErrors, PostLedgerEntryLinesLetterResponses, PostProductsData, PostProductsErrors, PostProductsResponses, PostQuoteAppendicesData, PostQuoteAppendicesErrors, PostQuoteAppendicesResponses, PostQuotesData, PostQuotesErrors, PostQuotesResponses, PostSepaMandatesData, PostSepaMandatesErrors, PostSepaMandatesResponses, PostSupplierData, PostSupplierErrors, PostSupplierInvoiceLinkedPurchaseRequestsData, PostSupplierInvoiceLinkedPurchaseRequestsErrors, PostSupplierInvoiceLinkedPurchaseRequestsResponses, PostSupplierInvoiceMatchedTransactionsData, PostSupplierInvoiceMatchedTransactionsErrors, PostSupplierInvoiceMatchedTransactionsResponses, PostSupplierResponses, PostUsersData, PostUsersErrors, PostUsersResponses, PutBillingSubscriptionsData, PutBillingSubscriptionsErrors, PutBillingSubscriptionsResponses, PutCompanyCustomerData, PutCompanyCustomerErrors, PutCompanyCustomerResponses, PutCustomerInvoiceCategoriesData, PutCustomerInvoiceCategoriesErrors, PutCustomerInvoiceCategoriesResponses, PutIndividualCustomerData, PutIndividualCustomerErrors, PutIndividualCustomerResponses, PutLedgerEntriesData, PutLedgerEntriesErrors, PutLedgerEntriesResponses, PutLedgerEntryLinesCategoriesData, PutLedgerEntryLinesCategoriesErrors, PutLedgerEntryLinesCategoriesResponses, PutProductData, PutProductErrors, PutProductResponses, PutSepaMandateData, PutSepaMandateErrors, PutSepaMandateResponses, PutSupplierData, PutSupplierErrors, PutSupplierInvoiceCategoriesData, PutSupplierInvoiceCategoriesErrors, PutSupplierInvoiceCategoriesResponses, PutSupplierInvoiceData, PutSupplierInvoiceErrors, PutSupplierInvoiceResponses, PutSupplierResponses, PutTransactionCategoriesData, PutTransactionCategoriesErrors, PutTransactionCategoriesResponses, PutUsersData, PutUsersErrors, PutUsersResponses, SendByEmailCustomerInvoiceData, SendByEmailCustomerInvoiceErrors, SendByEmailCustomerInvoiceResponses, SendByEmailQuoteData, SendByEmailQuoteErrors, SendByEmailQuoteResponses, UpdateCategoryData, UpdateCategoryErrors, UpdateCategoryResponses, UpdateCustomerInvoiceData, UpdateCustomerInvoiceErrors, UpdateCustomerInvoiceResponses, UpdateImportedCustomerInvoiceData, UpdateImportedCustomerInvoiceErrors, UpdateImportedCustomerInvoiceResponses, UpdateLedgerAccountData, UpdateLedgerAccountErrors, UpdateLedgerAccountResponses, UpdateQuoteData, UpdateQuoteErrors, UpdateQuoteResponses, UpdateStatusQuoteData, UpdateStatusQuoteErrors, UpdateStatusQuoteResponses, UpdateSupplierInvoicePaymentStatusData, UpdateSupplierInvoicePaymentStatusErrors, UpdateSupplierInvoicePaymentStatusResponses, UpdateTransactionData, UpdateTransactionErrors, UpdateTransactionResponses, ValidateAccountingSupplierInvoiceData, ValidateAccountingSupplierInvoiceErrors, ValidateAccountingSupplierInvoiceResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = Options2<TData, ThrowOnError> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record<string, unknown>;\n};\n\n/**\n * List journals\n *\n * List journals\n *\n * **DEPRECATED BEHAVIOR:**\n * By default, returns journals ordered by ascending IDs\n *\n * **NEW BEHAVIOR:**\n * By default, returns journals ordered by descending IDs\n * The old `ledger` scope will only work on the old behavior system. As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, the ledger scope will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `journals:readonly`, `journals:all`\n */\nexport const getJournals = <ThrowOnError extends boolean = false>(options?: Options<GetJournalsData, ThrowOnError>) => (options?.client ?? client).get<GetJournalsResponses, GetJournalsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/journals',\n ...options\n});\n\n/**\n * Create a journal\n *\n * Create a journal\n *\n * **NEW BEHAVIOR :**\n * The old `ledger` scope will only work on the old behavior system. As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, the ledger scope will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `journals:all`\n */\nexport const postJournals = <ThrowOnError extends boolean = false>(options: Options<PostJournalsData, ThrowOnError>) => (options.client ?? client).post<PostJournalsResponses, PostJournalsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/journals',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve a journal\n *\n * Retrieve a journal\n *\n * **NEW BEHAVIOR :**\n * The old `ledger` scope will only work on the old behavior system. As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, the ledger scope will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `journals:readonly`, `journals:all`\n */\nexport const getJournal = <ThrowOnError extends boolean = false>(options: Options<GetJournalData, ThrowOnError>) => (options.client ?? client).get<GetJournalResponses, GetJournalErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/journals/{id}',\n ...options\n});\n\n/**\n * List Ledger Accounts\n *\n * List Ledger Accounts\n *\n * **DEPRECATED BEHAVIOR:**\n * By default, returns ledger accounts ordered by ascending IDs\n *\n * **NEW BEHAVIOR:**\n * By default, returns ledger accounts ordered by descending IDs\n * The old `ledger` scope will only work on the old behavior system. As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, the ledger scope will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_accounts:readonly`, `ledger_accounts:all`\n */\nexport const getLedgerAccounts = <ThrowOnError extends boolean = false>(options?: Options<GetLedgerAccountsData, ThrowOnError>) => (options?.client ?? client).get<GetLedgerAccountsResponses, GetLedgerAccountsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_accounts',\n ...options\n});\n\n/**\n * Create a ledger account\n *\n * Create a ledger account\n *\n * **NEW BEHAVIOR :**\n * The old `ledger` scope will only work on the old behavior system. As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, the ledger scope will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_accounts:all`\n */\nexport const postLedgerAccounts = <ThrowOnError extends boolean = false>(options?: Options<PostLedgerAccountsData, ThrowOnError>) => (options?.client ?? client).post<PostLedgerAccountsResponses, PostLedgerAccountsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_accounts',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n});\n\n/**\n * Get a ledger account\n *\n * Get a ledger account\n *\n * **NEW BEHAVIOR :**\n * The old `ledger` scope will only work on the old behavior system. As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, the ledger scope will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_accounts:readonly`, `ledger_accounts:all`\n */\nexport const getLedgerAccount = <ThrowOnError extends boolean = false>(options: Options<GetLedgerAccountData, ThrowOnError>) => (options.client ?? client).get<GetLedgerAccountResponses, GetLedgerAccountErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_accounts/{id}',\n ...options\n});\n\n/**\n * Update a ledger account\n *\n * Update a ledger account\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger_accounts:all`\n */\nexport const updateLedgerAccount = <ThrowOnError extends boolean = false>(options: Options<UpdateLedgerAccountData, ThrowOnError>) => (options.client ?? client).put<UpdateLedgerAccountResponses, UpdateLedgerAccountErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_accounts/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List attachments\n *\n * List attachments\n *\n * > ‼️\n * > This endpoint is **DEPRECATED**\n * > As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, this endpoint will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger`\n *\n * @deprecated\n */\nexport const getLedgerAttachments = <ThrowOnError extends boolean = false>(options?: Options<GetLedgerAttachmentsData, ThrowOnError>) => (options?.client ?? client).get<GetLedgerAttachmentsResponses, GetLedgerAttachmentsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_attachments',\n ...options\n});\n\n/**\n * Upload a file\n *\n * Upload a file to attach to a ledger entry. The maximum allowed file size is 100MB.\n * Note that this will not upload a file into the DMS (GED).\n *\n * > ‼️\n * > This endpoint is **DEPRECATED**\n * > As an alternative, please use the [File Attachments: Upload a file](https://pennylane.readme.io/reference/postfileattachments#/) endpoint.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger`\n *\n * @deprecated\n */\nexport const postLedgerAttachments = <ThrowOnError extends boolean = false>(options?: Options<PostLedgerAttachmentsData, ThrowOnError>) => (options?.client ?? client).post<PostLedgerAttachmentsResponses, PostLedgerAttachmentsErrors, ThrowOnError>({\n ...formDataBodySerializer,\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_attachments',\n ...options,\n headers: {\n 'Content-Type': null,\n ...options?.headers\n }\n});\n\n/**\n * List Ledger Entries\n *\n * Returns a list of ledger entries.\n * **DEPRECATED BEHAVIOR:**\n * Draft entries are filtered out.\n * By default, entries from fiscal periods that are closed or frozen are excluded.\n * However, if a 'date' filter is provided, it will return all entries within the specified date range, even if they fall within a closed or frozen fiscal period.\n *\n *\n * **NEW BEHAVIOR :**\n * By default, all entries (including draft ones) are rendered regardless of their fiscal year status (open, closed, or frozen).\n * The old `ledger` scope will only work on the old behavior system. As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, the ledger scope will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_entries:readonly`, `ledger_entries:all`\n */\nexport const getLedgerEntries = <ThrowOnError extends boolean = false>(options?: Options<GetLedgerEntriesData, ThrowOnError>) => (options?.client ?? client).get<GetLedgerEntriesResponses, GetLedgerEntriesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_entries',\n ...options\n});\n\n/**\n * Create a ledger entry\n *\n * Create a ledger entry\n *\n * **DEPRECATED BEHAVIOR:**\n * The old `ledger` scope will only work on the old behavior system. As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, the ledger scope will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_entries:all`\n */\nexport const postLedgerEntries = <ThrowOnError extends boolean = false>(options: Options<PostLedgerEntriesData, ThrowOnError>) => (options.client ?? client).post<PostLedgerEntriesResponses, PostLedgerEntriesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_entries',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve a Ledger entry\n *\n * Retrieve a ledger entry\n *\n * **NEW BEHAVIOR :**\n * The old `ledger` scope will only work on the old behavior system. As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, the ledger scope will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_entries:readonly`, `ledger_entries:all`\n */\nexport const getLedgerEntry = <ThrowOnError extends boolean = false>(options: Options<GetLedgerEntryData, ThrowOnError>) => (options.client ?? client).get<GetLedgerEntryResponses, GetLedgerEntryErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_entries/{id}',\n ...options\n});\n\n/**\n * Update a ledger entry\n *\n * Update a ledger entry\n *\n * **NEW BEHAVIOR :**\n * The old `ledger` scope will only work on the old behavior system. As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, the ledger scope will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_entries:all`\n */\nexport const putLedgerEntries = <ThrowOnError extends boolean = false>(options: Options<PutLedgerEntriesData, ThrowOnError>) => (options.client ?? client).put<PutLedgerEntriesResponses, PutLedgerEntriesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_entries/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List ledger entry lines of a Ledger Entry\n *\n * List ledger entry lines of a Ledger Entry\n *\n * **DEPRECATED BEHAVIOR:**\n * By default, returns ledger entry lines ordered by ascending IDs\n *\n * **NEW BEHAVIOR:**\n * By default, returns ledger entry lines ordered by descending IDs\n * The old `ledger` scope will only work on the old behavior system. As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, the ledger scope will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_entries:readonly`, `ledger_entries:all`\n */\nexport const getLedgerEntriesLedgerEntryLines = <ThrowOnError extends boolean = false>(options: Options<GetLedgerEntriesLedgerEntryLinesData, ThrowOnError>) => (options.client ?? client).get<GetLedgerEntriesLedgerEntryLinesResponses, GetLedgerEntriesLedgerEntryLinesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_entries/{ledger_entry_id}/ledger_entry_lines',\n ...options\n});\n\n/**\n * List ledger entry lines\n *\n * List ledger entry lines\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_entries:readonly`, `ledger_entries:all`\n */\nexport const getLedgerEntryLines = <ThrowOnError extends boolean = false>(options?: Options<GetLedgerEntryLinesData, ThrowOnError>) => (options?.client ?? client).get<GetLedgerEntryLinesResponses, GetLedgerEntryLinesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_entry_lines',\n ...options\n});\n\n/**\n * Retrieve a Ledger entry line\n *\n * Retrieve a ledger entry line\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_entries:readonly`, `ledger_entries:all`\n */\nexport const getLedgerEntryLine = <ThrowOnError extends boolean = false>(options: Options<GetLedgerEntryLineData, ThrowOnError>) => (options.client ?? client).get<GetLedgerEntryLineResponses, GetLedgerEntryLineErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_entry_lines/{id}',\n ...options\n});\n\n/**\n * Unletter ledger entry lines\n *\n * This endpoint lets you unletter ledger entry lines.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_entries:all`\n */\nexport const deleteLedgerEntryLinesUnletter = <ThrowOnError extends boolean = false>(options?: Options<DeleteLedgerEntryLinesUnletterData, ThrowOnError>) => (options?.client ?? client).delete<DeleteLedgerEntryLinesUnletterResponses, DeleteLedgerEntryLinesUnletterErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_entry_lines/lettering',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n});\n\n/**\n * Letter ledger entry lines\n *\n * This endpoint lets you letter ledger entry lines together. All\n * received entry lines will be lettered together. If a passed entry line is\n * already lettered, then the lettering will be applied to its associated lettered\n * entry lines as well.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_entries:all`\n */\nexport const postLedgerEntryLinesLetter = <ThrowOnError extends boolean = false>(options?: Options<PostLedgerEntryLinesLetterData, ThrowOnError>) => (options?.client ?? client).post<PostLedgerEntryLinesLetterResponses, PostLedgerEntryLinesLetterErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_entry_lines/lettering',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n});\n\n/**\n * List ledger entry lines lettered to a given ledger entry line\n *\n * List ledger entry lines lettered to a given ledger entry line\n *\n * **DEPRECATED BEHAVIOR:**\n * The items rendered are sorted ordered by ascending `id`.\n *\n * **NEW BEHAVIOR:**\n * The items rendered are sorted ordered by descending `id` by default.\n * A new sort param is available to customize the sorting behavior (see \"sort\" query parameter description).\n * The old `ledger` scope will only work on the old behavior system. As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, the ledger scope will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_entries:readonly`, `ledger_entries:all`\n */\nexport const getLedgerEntryLinesLetteredLedgerEntryLines = <ThrowOnError extends boolean = false>(options: Options<GetLedgerEntryLinesLetteredLedgerEntryLinesData, ThrowOnError>) => (options.client ?? client).get<GetLedgerEntryLinesLetteredLedgerEntryLinesResponses, GetLedgerEntryLinesLetteredLedgerEntryLinesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_entry_lines/{ledger_entry_line_id}/lettered_ledger_entry_lines',\n ...options\n});\n\n/**\n * List categories of a Ledger Entry line\n *\n * List categories of a Ledger Entry line\n *\n * **NEW BEHAVIOR :**\n * The old `ledger` scope will only work on the old behavior system. As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, the ledger scope will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_entries:readonly`, `ledger_entries:all`\n */\nexport const getLedgerEntryLinesCategories = <ThrowOnError extends boolean = false>(options: Options<GetLedgerEntryLinesCategoriesData, ThrowOnError>) => (options.client ?? client).get<GetLedgerEntryLinesCategoriesResponses, GetLedgerEntryLinesCategoriesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_entry_lines/{ledger_entry_line_id}/categories',\n ...options\n});\n\n/**\n * Link Analytical Categories to a Ledger Entry line\n *\n * This endpoint replaces already existing categories on the Ledger Entry line with new values.\n * If an empty array of categories_ids is provided, it will remove all categories from the Ledger Entry line.\n *\n * **NEW BEHAVIOR :**\n * The old `ledger` scope will only work on the old behavior system. As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, the ledger scope will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_entries:all`\n */\nexport const putLedgerEntryLinesCategories = <ThrowOnError extends boolean = false>(options: Options<PutLedgerEntryLinesCategoriesData, ThrowOnError>) => (options.client ?? client).put<PutLedgerEntryLinesCategoriesResponses, PutLedgerEntryLinesCategoriesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/ledger_entry_lines/{ledger_entry_line_id}/categories',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List customer invoices\n *\n * List customer invoices and credit notes\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly`\n */\nexport const getCustomerInvoices = <ThrowOnError extends boolean = false>(options?: Options<GetCustomerInvoicesData, ThrowOnError>) => (options?.client ?? client).get<GetCustomerInvoicesResponses, GetCustomerInvoicesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices',\n ...options\n});\n\n/**\n * Create a customer invoice\n *\n * This endpoint allows you to create a draft or finalized customer\n * invoice or credit note\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`\n */\nexport const postCustomerInvoices = <ThrowOnError extends boolean = false>(options: Options<PostCustomerInvoicesData, ThrowOnError>) => (options.client ?? client).post<PostCustomerInvoicesResponses, PostCustomerInvoicesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Import an invoice with file attached\n *\n * This endpoint allows you to import an invoice.\n *\n * ℹ️ To ensure consistency, **we will apply validations on amounts in accordance with our rounding policy**. We allow a difference of up to 1 euro between total amounts and the sum of invoice lines. For further details, please refer to our [article](https://help.pennylane.com/fr/articles/61575-comprendre-l-arrondi-de-tva-d-un-produit) on rounding policy.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`\n */\nexport const importCustomerInvoices = <ThrowOnError extends boolean = false>(options: Options<ImportCustomerInvoicesData, ThrowOnError>) => (options.client ?? client).post<ImportCustomerInvoicesResponses, ImportCustomerInvoicesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/import',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Create a customer invoice from a quote\n *\n * This endpoint allows you to create a customer invoice from an existing quote.\n * The invoice will inherit the quote's data (customer, lines, etc.).\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`\n */\nexport const createCustomerInvoiceFromQuote = <ThrowOnError extends boolean = false>(options: Options<CreateCustomerInvoiceFromQuoteData, ThrowOnError>) => (options.client ?? client).post<CreateCustomerInvoiceFromQuoteResponses, CreateCustomerInvoiceFromQuoteErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/create_from_quote',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List billing subscriptions\n *\n * This endpoint returns a list of subscriptions.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `billing_subscriptions:all`, `billing_subscriptions:readonly`\n */\nexport const getBillingSubscriptions = <ThrowOnError extends boolean = false>(options?: Options<GetBillingSubscriptionsData, ThrowOnError>) => (options?.client ?? client).get<GetBillingSubscriptionsResponses, GetBillingSubscriptionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/billing_subscriptions',\n ...options\n});\n\n/**\n * Create a billing subscription\n *\n * This endpoint allows you to create a subscription. Pennylane will generate the customer invoice each month.\n * You can also link the subscription to a GoCardless mandate.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `billing_subscriptions:all`\n */\nexport const postBillingSubscriptions = <ThrowOnError extends boolean = false>(options: Options<PostBillingSubscriptionsData, ThrowOnError>) => (options.client ?? client).post<PostBillingSubscriptionsResponses, PostBillingSubscriptionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/billing_subscriptions',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get a billing subscription\n *\n * This endpoint returns a specific billing subscription.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `billing_subscriptions:all`, `billing_subscriptions:readonly`\n */\nexport const getBillingSubscription = <ThrowOnError extends boolean = false>(options: Options<GetBillingSubscriptionData, ThrowOnError>) => (options.client ?? client).get<GetBillingSubscriptionResponses, GetBillingSubscriptionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/billing_subscriptions/{id}',\n ...options\n});\n\n/**\n * Update a billing subscription\n *\n * Update a billing subscription\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `billing_subscriptions:all`\n */\nexport const putBillingSubscriptions = <ThrowOnError extends boolean = false>(options: Options<PutBillingSubscriptionsData, ThrowOnError>) => (options.client ?? client).put<PutBillingSubscriptionsResponses, PutBillingSubscriptionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/billing_subscriptions/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List the invoice line sections of a billing subscription\n *\n * List the invoice line sections of a billing subscription\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `billing_subscriptions:all`, `billing_subscriptions:readonly`\n */\nexport const getBillingSubscriptionInvoiceLineSections = <ThrowOnError extends boolean = false>(options: Options<GetBillingSubscriptionInvoiceLineSectionsData, ThrowOnError>) => (options.client ?? client).get<GetBillingSubscriptionInvoiceLineSectionsResponses, GetBillingSubscriptionInvoiceLineSectionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/billing_subscriptions/{billing_subscription_id}/invoice_line_sections',\n ...options\n});\n\n/**\n * List invoice lines for a billing subscription\n *\n * List invoice lines for a billing subscription\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `billing_subscriptions:all`, `billing_subscriptions:readonly`\n */\nexport const getBillingSubscriptionInvoiceLines = <ThrowOnError extends boolean = false>(options: Options<GetBillingSubscriptionInvoiceLinesData, ThrowOnError>) => (options.client ?? client).get<GetBillingSubscriptionInvoiceLinesResponses, GetBillingSubscriptionInvoiceLinesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/billing_subscriptions/{billing_subscription_id}/invoice_lines',\n ...options\n});\n\n/**\n * List products\n *\n * List products\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `products:all`, `products:readonly`\n */\nexport const getProducts = <ThrowOnError extends boolean = false>(options?: Options<GetProductsData, ThrowOnError>) => (options?.client ?? client).get<GetProductsResponses, GetProductsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/products',\n ...options\n});\n\n/**\n * Create a product\n *\n * Create a product\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `products:all`\n */\nexport const postProducts = <ThrowOnError extends boolean = false>(options: Options<PostProductsData, ThrowOnError>) => (options.client ?? client).post<PostProductsResponses, PostProductsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/products',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve a product\n *\n * Retrieve a product\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `products:all`, `products:readonly`\n */\nexport const getProduct = <ThrowOnError extends boolean = false>(options: Options<GetProductData, ThrowOnError>) => (options.client ?? client).get<GetProductResponses, GetProductErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/products/{id}',\n ...options\n});\n\n/**\n * Update a product\n *\n * Update a product\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `products:all`\n */\nexport const putProduct = <ThrowOnError extends boolean = false>(options: Options<PutProductData, ThrowOnError>) => (options.client ?? client).put<PutProductResponses, PutProductErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/products/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List attachments\n *\n * List attachments\n *\n * > ‼️\n * > This endpoint is **DEPRECATED**\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `file_attachments:all`, `file_attachments:readonly`\n *\n * @deprecated\n */\nexport const getFileAttachments = <ThrowOnError extends boolean = false>(options?: Options<GetFileAttachmentsData, ThrowOnError>) => (options?.client ?? client).get<GetFileAttachmentsResponses, GetFileAttachmentsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/file_attachments',\n ...options\n});\n\n/**\n * Upload a file\n *\n * Upload a file to attach to any resource that provides a `file_attachment_id`.\n *\n * The maximum allowed file size is 100MB.\n * Note that this will not upload a file into the DMS (GED).\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `file_attachments:all`\n */\nexport const postFileAttachments = <ThrowOnError extends boolean = false>(options: Options<PostFileAttachmentsData, ThrowOnError>) => (options.client ?? client).post<PostFileAttachmentsResponses, PostFileAttachmentsErrors, ThrowOnError>({\n ...formDataBodySerializer,\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/file_attachments',\n ...options,\n headers: {\n 'Content-Type': null,\n ...options.headers\n }\n});\n\n/**\n * List customer invoice templates\n *\n * List customer invoice templates\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoice_templates:readonly`\n */\nexport const getCustomerInvoiceTemplates = <ThrowOnError extends boolean = false>(options?: Options<GetCustomerInvoiceTemplatesData, ThrowOnError>) => (options?.client ?? client).get<GetCustomerInvoiceTemplatesResponses, GetCustomerInvoiceTemplatesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoice_templates',\n ...options\n});\n\n/**\n * Create an Analytical General Ledger export\n *\n * This endpoint allows you to create an Analytical General Ledger export. The generated export file is an xlsx file, using the in-line analytical mode by default.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `exports:agl`\n */\nexport const exportAnalyticalGeneralLedger = <ThrowOnError extends boolean = false>(options: Options<ExportAnalyticalGeneralLedgerData, ThrowOnError>) => (options.client ?? client).post<ExportAnalyticalGeneralLedgerResponses, ExportAnalyticalGeneralLedgerErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/exports/analytical_general_ledgers',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve an Analytical General Ledger export\n *\n * The endpoint returns a specific Analytical General Ledger export. The export file is an xlsx file, using the in-line analytical mode.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `exports:agl`\n */\nexport const getAnalyticalGeneralLedgerExport = <ThrowOnError extends boolean = false>(options: Options<GetAnalyticalGeneralLedgerExportData, ThrowOnError>) => (options.client ?? client).get<GetAnalyticalGeneralLedgerExportResponses, GetAnalyticalGeneralLedgerExportErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/exports/analytical_general_ledgers/{id}',\n ...options\n});\n\n/**\n * Create a FEC export\n *\n * This endpoint allows you to create a FEC export\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `exports:fec`\n */\nexport const exportFec = <ThrowOnError extends boolean = false>(options: Options<ExportFecData, ThrowOnError>) => (options.client ?? client).post<ExportFecResponses, ExportFecErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/exports/fecs',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve a FEC export\n *\n * The endpoint returns a specific FEC export\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `exports:fec`\n */\nexport const getFecExport = <ThrowOnError extends boolean = false>(options: Options<GetFecExportData, ThrowOnError>) => (options.client ?? client).get<GetFecExportResponses, GetFecExportErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/exports/fecs/{id}',\n ...options\n});\n\n/**\n * Create a company customer\n *\n * This endpoint returns the created company customer.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customers:all`\n */\nexport const postCompanyCustomer = <ThrowOnError extends boolean = false>(options: Options<PostCompanyCustomerData, ThrowOnError>) => (options.client ?? client).post<PostCompanyCustomerResponses, PostCompanyCustomerErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/company_customers',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve a company customer\n *\n * This endpoint returns a company customer.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customers:all`, `customers:readonly`\n */\nexport const getCompanyCustomer = <ThrowOnError extends boolean = false>(options: Options<GetCompanyCustomerData, ThrowOnError>) => (options.client ?? client).get<GetCompanyCustomerResponses, GetCompanyCustomerErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/company_customers/{id}',\n ...options\n});\n\n/**\n * Update a company customer\n *\n * This endpoint returns the updated company customer.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customers:all`\n */\nexport const putCompanyCustomer = <ThrowOnError extends boolean = false>(options: Options<PutCompanyCustomerData, ThrowOnError>) => (options.client ?? client).put<PutCompanyCustomerResponses, PutCompanyCustomerErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/company_customers/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Create an individual customer\n *\n * This endpoint returns the created individual customer.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customers:all`\n */\nexport const postIndividualCustomer = <ThrowOnError extends boolean = false>(options: Options<PostIndividualCustomerData, ThrowOnError>) => (options.client ?? client).post<PostIndividualCustomerResponses, PostIndividualCustomerErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/individual_customers',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve an individual customer\n *\n * This endpoint returns an individual customer.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customers:all`, `customers:readonly`\n */\nexport const getIndividualCustomer = <ThrowOnError extends boolean = false>(options: Options<GetIndividualCustomerData, ThrowOnError>) => (options.client ?? client).get<GetIndividualCustomerResponses, GetIndividualCustomerErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/individual_customers/{id}',\n ...options\n});\n\n/**\n * Update an individual customer\n *\n * This endpoint returns the updated individual customer.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customers:all`\n */\nexport const putIndividualCustomer = <ThrowOnError extends boolean = false>(options: Options<PutIndividualCustomerData, ThrowOnError>) => (options.client ?? client).put<PutIndividualCustomerResponses, PutIndividualCustomerErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/individual_customers/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List customers (company and individual)\n *\n * This endpoint returns a list of both company and individual customers\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customers:all`, `customers:readonly`\n */\nexport const getCustomers = <ThrowOnError extends boolean = false>(options?: Options<GetCustomersData, ThrowOnError>) => (options?.client ?? client).get<GetCustomersResponses, GetCustomersErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customers',\n ...options\n});\n\n/**\n * Retrieve a customer\n *\n * This endpoint returns a customer.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customers:all`, `customers:readonly`\n */\nexport const getCustomer = <ThrowOnError extends boolean = false>(options: Options<GetCustomerData, ThrowOnError>) => (options.client ?? client).get<GetCustomerResponses, GetCustomerErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customers/{id}',\n ...options\n});\n\n/**\n * List contacts of a customer\n *\n * List contacts of a customer\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customers:all`, `customers:readonly`\n */\nexport const getCustomerContacts = <ThrowOnError extends boolean = false>(options: Options<GetCustomerContactsData, ThrowOnError>) => (options.client ?? client).get<GetCustomerContactsResponses, GetCustomerContactsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customers/{customer_id}/contacts',\n ...options\n});\n\n/**\n * List suppliers\n *\n * List suppliers\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `suppliers:all`, `suppliers:readonly`\n */\nexport const getSuppliers = <ThrowOnError extends boolean = false>(options?: Options<GetSuppliersData, ThrowOnError>) => (options?.client ?? client).get<GetSuppliersResponses, GetSuppliersErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/suppliers',\n ...options\n});\n\n/**\n * Create a Supplier\n *\n * This endpoint returns the created supplier.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `suppliers:all`\n */\nexport const postSupplier = <ThrowOnError extends boolean = false>(options: Options<PostSupplierData, ThrowOnError>) => (options.client ?? client).post<PostSupplierResponses, PostSupplierErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/suppliers',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve a supplier\n *\n * This endpoint returns a supplier.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `suppliers:all`, `suppliers:readonly`\n */\nexport const getSupplier = <ThrowOnError extends boolean = false>(options: Options<GetSupplierData, ThrowOnError>) => (options.client ?? client).get<GetSupplierResponses, GetSupplierErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/suppliers/{id}',\n ...options\n});\n\n/**\n * Update a supplier\n *\n * This endpoint returns the updated supplier.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `suppliers:all`\n */\nexport const putSupplier = <ThrowOnError extends boolean = false>(options: Options<PutSupplierData, ThrowOnError>) => (options.client ?? client).put<PutSupplierResponses, PutSupplierErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/suppliers/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Create a new user\n *\n * Creates a new user. In order to authenticate the request, a valid\n * OAuth2 token must be provided. The token must be generated\n * with `client_credentials` grant type.\n * The token must have the following scopes:\n * - `users`\n * - `capital_deposits` OR `companies:all`\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `users`, `capital_deposits`, `companies:all`\n */\nexport const postUsers = <ThrowOnError extends boolean = false>(options?: Options<PostUsersData, ThrowOnError>) => (options?.client ?? client).post<PostUsersResponses, PostUsersErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/users',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n});\n\n/**\n * Find user\n *\n * Find a user using its email address. In order to authenticate the request, a valid\n * OAuth2 token must be provided. The token must be generated\n * with `client_credentials` grant type.\n * The token must have the following scopes:\n * - `users`\n * - `capital_deposits` OR `companies:all`\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `users`, `capital_deposits`, `companies:all`\n */\nexport const findUser = <ThrowOnError extends boolean = false>(options: Options<FindUserData, ThrowOnError>) => (options.client ?? client).get<FindUserResponses, FindUserErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/users/find',\n ...options\n});\n\n/**\n * Update an existing user\n *\n * Updates an existing user. In order to authenticate the request, a valid OAuth2 token must be provided. The token must have the `users:update_email` scope and be generated by a user via the `authorization_code` grant type.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `users`, `users:update_email`\n */\nexport const putUsers = <ThrowOnError extends boolean = false>(options: Options<PutUsersData, ThrowOnError>) => (options.client ?? client).put<PutUsersResponses, PutUsersErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/users/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * User Profile\n *\n * This endpoint returns information about the company and the user associated to the token.\n */\nexport const getMe = <ThrowOnError extends boolean = false>(options?: Options<GetMeData, ThrowOnError>) => (options?.client ?? client).get<GetMeResponses, GetMeErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/me',\n ...options\n});\n\n/**\n * List invoice line sections for a customer invoice\n *\n * List invoice line sections for a customer invoice\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly`\n */\nexport const getCustomerInvoiceInvoiceLineSections = <ThrowOnError extends boolean = false>(options: Options<GetCustomerInvoiceInvoiceLineSectionsData, ThrowOnError>) => (options.client ?? client).get<GetCustomerInvoiceInvoiceLineSectionsResponses, GetCustomerInvoiceInvoiceLineSectionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/invoice_line_sections',\n ...options\n});\n\n/**\n * List invoice lines for a customer invoice\n *\n * List invoice lines for a customer invoice\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly`\n */\nexport const getCustomerInvoiceInvoiceLines = <ThrowOnError extends boolean = false>(options: Options<GetCustomerInvoiceInvoiceLinesData, ThrowOnError>) => (options.client ?? client).get<GetCustomerInvoiceInvoiceLinesResponses, GetCustomerInvoiceInvoiceLinesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/invoice_lines',\n ...options\n});\n\n/**\n * List payments for a customer invoice\n *\n * List payments for a customer invoice\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly`\n */\nexport const getCustomerInvoicePayments = <ThrowOnError extends boolean = false>(options: Options<GetCustomerInvoicePaymentsData, ThrowOnError>) => (options.client ?? client).get<GetCustomerInvoicePaymentsResponses, GetCustomerInvoicePaymentsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/payments',\n ...options\n});\n\n/**\n * List matched transactions for a customer invoice\n *\n * List matched transactions for a customer invoice\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly`\n */\nexport const getCustomerInvoiceMatchedTransactions = <ThrowOnError extends boolean = false>(options: Options<GetCustomerInvoiceMatchedTransactionsData, ThrowOnError>) => (options.client ?? client).get<GetCustomerInvoiceMatchedTransactionsResponses, GetCustomerInvoiceMatchedTransactionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/matched_transactions',\n ...options\n});\n\n/**\n * Match a transaction to a customer invoice\n *\n * This endpoint allows you to match a transaction to a customer invoice. It is not applicable for draft invoices.\n *\n * You can match one transaction with one customer invoice at a time. To match multiple transactions to a customer invoice, you need to call this endpoint multiple times.\n * It's possible to match a transaction to multiple customer invoices too.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`\n */\nexport const postCustomerInvoiceMatchedTransactions = <ThrowOnError extends boolean = false>(options: Options<PostCustomerInvoiceMatchedTransactionsData, ThrowOnError>) => (options.client ?? client).post<PostCustomerInvoiceMatchedTransactionsResponses, PostCustomerInvoiceMatchedTransactionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/matched_transactions',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Unmatch a transaction to a customer invoice\n *\n * This endpoint allows you to unmatch a transaction to a customer invoice. It is not applicable for draft invoices.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`\n */\nexport const deleteCustomerInvoiceMatchedTransactions = <ThrowOnError extends boolean = false>(options: Options<DeleteCustomerInvoiceMatchedTransactionsData, ThrowOnError>) => (options.client ?? client).delete<DeleteCustomerInvoiceMatchedTransactionsResponses, DeleteCustomerInvoiceMatchedTransactionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/matched_transactions/{id}',\n ...options\n});\n\n/**\n * List appendices of a customer invoice\n *\n * List appendices of a customer invoice\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly`\n */\nexport const getCustomerInvoiceAppendices = <ThrowOnError extends boolean = false>(options: Options<GetCustomerInvoiceAppendicesData, ThrowOnError>) => (options.client ?? client).get<GetCustomerInvoiceAppendicesResponses, GetCustomerInvoiceAppendicesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/appendices',\n ...options\n});\n\n/**\n * Upload an appendix for a customer invoice\n *\n * Upload a file that will be an appendix attached to a customer invoice.\n *\n * Note that this will not upload a file into the DMS (GED).\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`\n */\nexport const postCustomerInvoiceAppendices = <ThrowOnError extends boolean = false>(options: Options<PostCustomerInvoiceAppendicesData, ThrowOnError>) => (options.client ?? client).post<PostCustomerInvoiceAppendicesResponses, PostCustomerInvoiceAppendicesErrors, ThrowOnError>({\n ...formDataBodySerializer,\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/appendices',\n ...options,\n headers: {\n 'Content-Type': null,\n ...options.headers\n }\n});\n\n/**\n * Delete draft invoice\n *\n * Delete a draft customer invoice or draft credit note\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`\n */\nexport const deleteCustomerInvoices = <ThrowOnError extends boolean = false>(options: Options<DeleteCustomerInvoicesData, ThrowOnError>) => (options.client ?? client).delete<DeleteCustomerInvoicesResponses, DeleteCustomerInvoicesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{id}',\n ...options\n});\n\n/**\n * Retrieve a customer invoice\n *\n * Retrieve a customer invoice or a credit note\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly`\n */\nexport const getCustomerInvoice = <ThrowOnError extends boolean = false>(options: Options<GetCustomerInvoiceData, ThrowOnError>) => (options.client ?? client).get<GetCustomerInvoiceResponses, GetCustomerInvoiceErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{id}',\n ...options\n});\n\n/**\n * Update a customer invoice\n *\n * Update a customer invoice\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`\n */\nexport const updateCustomerInvoice = <ThrowOnError extends boolean = false>(options: Options<UpdateCustomerInvoiceData, ThrowOnError>) => (options.client ?? client).put<UpdateCustomerInvoiceResponses, UpdateCustomerInvoiceErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Mark a customer invoice as paid\n *\n * Mark a customer invoice as paid. No automatic reconciliation will\n * be done once the invoice is marked as paid\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`\n */\nexport const markAsPaidCustomerInvoice = <ThrowOnError extends boolean = false>(options: Options<MarkAsPaidCustomerInvoiceData, ThrowOnError>) => (options.client ?? client).put<MarkAsPaidCustomerInvoiceResponses, MarkAsPaidCustomerInvoiceErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{id}/mark_as_paid',\n ...options\n});\n\n/**\n * Send a customer invoice by email\n *\n * This endpoint allows you to send a finalized, imported customer invoice or credit note\n * by email to your customer. This requires that the PDF file for that document\n * has been generated (this process can take a few minutes), so if you just created\n * the invoice in our system, we may return a 409 error. You should\n * retry the request in a few minutes - if you receive a 204 response, that means\n * that the email is on its way. For more information about email sending, please\n * read [this guide](https://pennylane.readme.io/v2.0/docs/sending-documents-by-email).\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`\n */\nexport const sendByEmailCustomerInvoice = <ThrowOnError extends boolean = false>(options: Options<SendByEmailCustomerInvoiceData, ThrowOnError>) => (options.client ?? client).post<SendByEmailCustomerInvoiceResponses, SendByEmailCustomerInvoiceErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{id}/send_by_email',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List categories of a customer invoice\n *\n * List categories of a customer invoice\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly`\n */\nexport const getCustomerInvoiceCategories = <ThrowOnError extends boolean = false>(options: Options<GetCustomerInvoiceCategoriesData, ThrowOnError>) => (options.client ?? client).get<GetCustomerInvoiceCategoriesResponses, GetCustomerInvoiceCategoriesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/categories',\n ...options\n});\n\n/**\n * Categorize a customer invoice\n *\n * This endpoint is not applicable for draft invoices.\n * Update the categories of a customer invoice. You can pass categories that don't belong to the same category group. The sum of categories of a same group must equal `1`. In the following example, the two first categories belong to the same category group A, the sum of the weights is `1`. The third category belongs to a category group B, its weight is `1`.\n * ```\n * [\n * { \"id\": 59, \"weight\": \"0.5\" }, // category group A\n * { \"id\": 33, \"weight\": \"0.5\" }, // category group A\n * { \"id\": 65, \"weight\": \"1\" } // category group B\n * ]\n * ```\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`\n */\nexport const putCustomerInvoiceCategories = <ThrowOnError extends boolean = false>(options: Options<PutCustomerInvoiceCategoriesData, ThrowOnError>) => (options.client ?? client).put<PutCustomerInvoiceCategoriesResponses, PutCustomerInvoiceCategoriesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/categories',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Update an Imported customer invoice\n *\n * Update an imported customer invoice or credit note. It is not\n * applicable for draft invoices.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`\n */\nexport const updateImportedCustomerInvoice = <ThrowOnError extends boolean = false>(options: Options<UpdateImportedCustomerInvoiceData, ThrowOnError>) => (options.client ?? client).put<UpdateImportedCustomerInvoiceResponses, UpdateImportedCustomerInvoiceErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{id}/update_imported',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Turn the draft invoice into a finalized invoice.\n *\n * Convert the draft customer invoice or credit note into a finalized\n * one. Once finalized, the resource can no longer be edited.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`\n */\nexport const finalizeCustomerInvoice = <ThrowOnError extends boolean = false>(options: Options<FinalizeCustomerInvoiceData, ThrowOnError>) => (options.client ?? client).put<FinalizeCustomerInvoiceResponses, FinalizeCustomerInvoiceErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{id}/finalize',\n ...options\n});\n\n/**\n * Link a credit note to a customer invoice\n *\n * Link a credit note to a customer invoice\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`\n */\nexport const linkCreditNote = <ThrowOnError extends boolean = false>(options: Options<LinkCreditNoteData, ThrowOnError>) => (options.client ?? client).post<LinkCreditNoteResponses, LinkCreditNoteErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{id}/link_credit_note',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List invoice lines for a supplier invoice\n *\n * List invoice lines for a supplier invoice\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `supplier_invoices:all`, `supplier_invoices:readonly`\n */\nexport const getSupplierInvoiceLines = <ThrowOnError extends boolean = false>(options: Options<GetSupplierInvoiceLinesData, ThrowOnError>) => (options.client ?? client).get<GetSupplierInvoiceLinesResponses, GetSupplierInvoiceLinesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/invoice_lines',\n ...options\n});\n\n/**\n * List supplier invoices\n *\n * This endpoint returns a list of supplier invoices.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `supplier_invoices:all`, `supplier_invoices:readonly`\n */\nexport const getSupplierInvoices = <ThrowOnError extends boolean = false>(options?: Options<GetSupplierInvoicesData, ThrowOnError>) => (options?.client ?? client).get<GetSupplierInvoicesResponses, GetSupplierInvoicesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/supplier_invoices',\n ...options\n});\n\n/**\n * Retrieve a supplier invoice\n *\n * This endpoint returns a supplier invoice.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `supplier_invoices:all`, `supplier_invoices:readonly`\n */\nexport const getSupplierInvoice = <ThrowOnError extends boolean = false>(options: Options<GetSupplierInvoiceData, ThrowOnError>) => (options.client ?? client).get<GetSupplierInvoiceResponses, GetSupplierInvoiceErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/supplier_invoices/{id}',\n ...options\n});\n\n/**\n * Update a supplier invoice\n *\n * This endpoint allows you to update a supplier invoice.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `supplier_invoices:all`\n */\nexport const putSupplierInvoice = <ThrowOnError extends boolean = false>(options: Options<PutSupplierInvoiceData, ThrowOnError>) => (options.client ?? client).put<PutSupplierInvoiceResponses, PutSupplierInvoiceErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/supplier_invoices/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List categories of a supplier invoice\n *\n * List categories of a supplier invoice\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `supplier_invoices:all`, `supplier_invoices:readonly`\n */\nexport const getSupplierInvoiceCategories = <ThrowOnError extends boolean = false>(options: Options<GetSupplierInvoiceCategoriesData, ThrowOnError>) => (options.client ?? client).get<GetSupplierInvoiceCategoriesResponses, GetSupplierInvoiceCategoriesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/categories',\n ...options\n});\n\n/**\n * Categorize a supplier invoice\n *\n * Update the categories of a supplier invoice. You can pass categories that don't belong to the same category group. The sum of categories of a same group must equal `1`. In the following example, the two first categories belong to the same category group A, the sum of the weights is `1`. The third category belongs to a category group B, its weight is `1`.\n * ```\n * [\n * { \"id\": 59, \"weight\": \"0.5\" }, // category group A\n * { \"id\": 33, \"weight\": \"0.5\" }, // category group A\n * { \"id\": 65, \"weight\": \"1\" } // category group B\n * ]\n * ```\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `supplier_invoices:all`\n */\nexport const putSupplierInvoiceCategories = <ThrowOnError extends boolean = false>(options: Options<PutSupplierInvoiceCategoriesData, ThrowOnError>) => (options.client ?? client).put<PutSupplierInvoiceCategoriesResponses, PutSupplierInvoiceCategoriesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/categories',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List payments for a supplier invoice\n *\n * List payments for a supplier invoice\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `supplier_invoices:all`, `supplier_invoices:readonly`\n */\nexport const getSupplierInvoicePayments = <ThrowOnError extends boolean = false>(options: Options<GetSupplierInvoicePaymentsData, ThrowOnError>) => (options.client ?? client).get<GetSupplierInvoicePaymentsResponses, GetSupplierInvoicePaymentsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/payments',\n ...options\n});\n\n/**\n * Update a supplier invoice payment status\n *\n * This endpoint allows you to update the payment status of a supplier\n * invoice.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `supplier_invoices:all`\n */\nexport const updateSupplierInvoicePaymentStatus = <ThrowOnError extends boolean = false>(options: Options<UpdateSupplierInvoicePaymentStatusData, ThrowOnError>) => (options.client ?? client).put<UpdateSupplierInvoicePaymentStatusResponses, UpdateSupplierInvoicePaymentStatusErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/payment_status',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List matched transactions for a supplier invoice\n *\n * List matched transactions for a supplier invoice\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `supplier_invoices:all`, `supplier_invoices:readonly`\n */\nexport const getSupplierInvoiceMatchedTransactions = <ThrowOnError extends boolean = false>(options: Options<GetSupplierInvoiceMatchedTransactionsData, ThrowOnError>) => (options.client ?? client).get<GetSupplierInvoiceMatchedTransactionsResponses, GetSupplierInvoiceMatchedTransactionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/matched_transactions',\n ...options\n});\n\n/**\n * Match a transaction to a supplier invoice\n *\n * This endpoint allows you to match a transaction to a supplier invoice.\n *\n * You can match one transaction with one supplier invoice at a time. To match multiple transactions to a supplier invoice, you need to call this endpoint multiple times.\n * It's possible to match a transaction to multiple supplier invoices too.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `supplier_invoices:all`\n */\nexport const postSupplierInvoiceMatchedTransactions = <ThrowOnError extends boolean = false>(options: Options<PostSupplierInvoiceMatchedTransactionsData, ThrowOnError>) => (options.client ?? client).post<PostSupplierInvoiceMatchedTransactionsResponses, PostSupplierInvoiceMatchedTransactionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/matched_transactions',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Unmatch a transaction to a supplier invoice\n *\n * This endpoint allows you to unmatch a transaction to a supplier\n * invoice.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `supplier_invoices:all`\n */\nexport const deleteSupplierInvoiceMatchedTransactions = <ThrowOnError extends boolean = false>(options: Options<DeleteSupplierInvoiceMatchedTransactionsData, ThrowOnError>) => (options.client ?? client).delete<DeleteSupplierInvoiceMatchedTransactionsResponses, DeleteSupplierInvoiceMatchedTransactionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/matched_transactions/{id}',\n ...options\n});\n\n/**\n * Link a purchase request to a supplier invoice\n *\n * This endpoint allows you to link a purchase request to a supplier invoice.\n *\n * You can link one purchase request with one supplier invoice at a time. To link multiple purchase request to a supplier invoice, you need to call this endpoint multiple times.\n * It's possible to link a purchase request to multiple supplier invoices too.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `supplier_invoices:all`\n */\nexport const postSupplierInvoiceLinkedPurchaseRequests = <ThrowOnError extends boolean = false>(options: Options<PostSupplierInvoiceLinkedPurchaseRequestsData, ThrowOnError>) => (options.client ?? client).post<PostSupplierInvoiceLinkedPurchaseRequestsResponses, PostSupplierInvoiceLinkedPurchaseRequestsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/linked_purchase_requests',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Import a supplier invoice with a file attached\n *\n * This endpoint allows you to import a supplier invoice with a file\n * attached.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `supplier_invoices:all`\n */\nexport const importSupplierInvoice = <ThrowOnError extends boolean = false>(options: Options<ImportSupplierInvoiceData, ThrowOnError>) => (options.client ?? client).post<ImportSupplierInvoiceResponses, ImportSupplierInvoiceErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/supplier_invoices/import',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Validate the accounting of a supplier invoice\n *\n * Turn the supplier invoice into a Complete state.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `supplier_invoices:all`\n */\nexport const validateAccountingSupplierInvoice = <ThrowOnError extends boolean = false>(options: Options<ValidateAccountingSupplierInvoiceData, ThrowOnError>) => (options.client ?? client).put<ValidateAccountingSupplierInvoiceResponses, ValidateAccountingSupplierInvoiceErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/supplier_invoices/{id}/validate_accounting',\n ...options\n});\n\n/**\n * Create a company\n *\n * This endpoint is used to create a new company. In order to authenticate the request, a valid OAuth2 token must be provided. The token must have the `companies:all` scope and be generated with `client_credentials` grant type.\n */\nexport const companyCreate = <ThrowOnError extends boolean = false>(options?: Options<CompanyCreateData, ThrowOnError>) => (options?.client ?? client).post<CompanyCreateResponses, CompanyCreateErrors, ThrowOnError>({\n url: '/api/external/v2/companies',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options?.headers\n }\n});\n\n/**\n * Complete registration for a company\n *\n * This endpoint is used to complete the registration of a company. In order to authenticate the request, a valid OAuth2 token must be provided. The token must have the `capital_deposits` scope and be generated with `authorization_code` grant type.\n */\nexport const companyCompleteRegistration = <ThrowOnError extends boolean = false>(options: Options<CompanyCompleteRegistrationData, ThrowOnError>) => (options.client ?? client).put<CompanyCompleteRegistrationResponses, CompanyCompleteRegistrationErrors, ThrowOnError>({\n url: '/api/external/v2/companies/{id}/complete_registration',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List category groups\n *\n * This endpoint returns a list of category groups\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `categories:all`, `categories:readonly`\n */\nexport const getCategoryGroups = <ThrowOnError extends boolean = false>(options?: Options<GetCategoryGroupsData, ThrowOnError>) => (options?.client ?? client).get<GetCategoryGroupsResponses, GetCategoryGroupsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/category_groups',\n ...options\n});\n\n/**\n * Retrieve a category group\n *\n * This endpoint returns a specific category group.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `categories:all`, `categories:readonly`\n */\nexport const getCategoryGroup = <ThrowOnError extends boolean = false>(options: Options<GetCategoryGroupData, ThrowOnError>) => (options.client ?? client).get<GetCategoryGroupResponses, GetCategoryGroupErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/category_groups/{id}',\n ...options\n});\n\n/**\n * List categories of a category group\n *\n * List categories of a category group\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `categories:all`, `categories:readonly`\n */\nexport const getCategoryGroupCategories = <ThrowOnError extends boolean = false>(options: Options<GetCategoryGroupCategoriesData, ThrowOnError>) => (options.client ?? client).get<GetCategoryGroupCategoriesResponses, GetCategoryGroupCategoriesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/category_groups/{category_group_id}/categories',\n ...options\n});\n\n/**\n * List categories\n *\n * List categories\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `categories:all`, `categories:readonly`\n */\nexport const getCategories = <ThrowOnError extends boolean = false>(options?: Options<GetCategoriesData, ThrowOnError>) => (options?.client ?? client).get<GetCategoriesResponses, GetCategoriesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/categories',\n ...options\n});\n\n/**\n * Create a category\n *\n * Create a category\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `categories:all`\n */\nexport const postCategories = <ThrowOnError extends boolean = false>(options: Options<PostCategoriesData, ThrowOnError>) => (options.client ?? client).post<PostCategoriesResponses, PostCategoriesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/categories',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve a category\n *\n * This endpoint returns a specific category.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `categories:all`, `categories:readonly`\n */\nexport const getCategory = <ThrowOnError extends boolean = false>(options: Options<GetCategoryData, ThrowOnError>) => (options.client ?? client).get<GetCategoryResponses, GetCategoryErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/categories/{id}',\n ...options\n});\n\n/**\n * Update a category\n *\n * This endpoint updates a category.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `categories:all`\n */\nexport const updateCategory = <ThrowOnError extends boolean = false>(options: Options<UpdateCategoryData, ThrowOnError>) => (options.client ?? client).put<UpdateCategoryResponses, UpdateCategoryErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/categories/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get the trial balance\n *\n * This endpoint returns the trial balance of the current company for the given period.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `trial_balance:readonly`\n */\nexport const getTrialBalance = <ThrowOnError extends boolean = false>(options: Options<GetTrialBalanceData, ThrowOnError>) => (options.client ?? client).get<GetTrialBalanceResponses, GetTrialBalanceErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/trial_balance',\n ...options\n});\n\n/**\n * List Company's Fiscal Years\n *\n * This endpoint returns a list of fiscal years of the company.\n *\n * **DEPRECATED BEHAVIOR:**\n * By default, returns fiscal years ordered by ascending `start` date.\n *\n * **NEW BEHAVIOR:**\n * By default, returns fiscal years ordered by descending IDs\n * A new `sort` query parameter is now available allowing to sort by `id` or `start` attributes.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `fiscal_years:readonly`\n */\nexport const companyFiscalYears = <ThrowOnError extends boolean = false>(options?: Options<CompanyFiscalYearsData, ThrowOnError>) => (options?.client ?? client).get<CompanyFiscalYearsResponses, CompanyFiscalYearsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/fiscal_years',\n ...options\n});\n\n/**\n * Get customer invoices changes events\n *\n * Returns the list of changes based on the provided `start_date`.\n * If no `start_date` is provided it returns the oldest set of recorded changes.\n * Changes for the last 4 weeks are retained. The items will be returned using\n * `processed_at` in ASC order (oldest first).\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly`\n */\nexport const getCustomerInvoicesChanges = <ThrowOnError extends boolean = false>(options?: Options<GetCustomerInvoicesChangesData, ThrowOnError>) => (options?.client ?? client).get<GetCustomerInvoicesChangesResponses, GetCustomerInvoicesChangesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/changelogs/customer_invoices',\n ...options\n});\n\n/**\n * Get supplier invoices changes events\n *\n * Returns the list of changes based on the provided `start_date`.\n * If no `start_date` is provided it returns the oldest set of recorded changes.\n * Changes for the last 4 weeks are retained. The items will be returned using\n * `processed_at` in ASC order (oldest first).\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `supplier_invoices:all`, `supplier_invoices:readonly`\n */\nexport const getSupplierInvoicesChanges = <ThrowOnError extends boolean = false>(options?: Options<GetSupplierInvoicesChangesData, ThrowOnError>) => (options?.client ?? client).get<GetSupplierInvoicesChangesResponses, GetSupplierInvoicesChangesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/changelogs/supplier_invoices',\n ...options\n});\n\n/**\n * Get customer changes events\n *\n * Returns the list of changes based on the provided `start_date`.\n * If no `start_date` is provided it returns the oldest set of recorded changes.\n * Changes for the last 4 weeks are retained. The items will be returned using\n * `processed_at` in ASC order (oldest first).\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customers:all`, `customers:readonly`\n */\nexport const getCustomerChanges = <ThrowOnError extends boolean = false>(options?: Options<GetCustomerChangesData, ThrowOnError>) => (options?.client ?? client).get<GetCustomerChangesResponses, GetCustomerChangesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/changelogs/customers',\n ...options\n});\n\n/**\n * Get supplier changes events\n *\n * Returns the list of changes based on the provided `start_date`.\n * If no `start_date` is provided it returns the oldest set of recorded changes.\n * Changes for the last 4 weeks are retained. The items will be returned using\n * `processed_at` in ASC order (oldest first).\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `suppliers:all`, `suppliers:readonly`\n */\nexport const getSupplierChanges = <ThrowOnError extends boolean = false>(options?: Options<GetSupplierChangesData, ThrowOnError>) => (options?.client ?? client).get<GetSupplierChangesResponses, GetSupplierChangesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/changelogs/suppliers',\n ...options\n});\n\n/**\n * Get product change events\n *\n * Returns the list of changes based on the provided `start_date`.\n * If no `start_date` is provided it returns the oldest set of recorded changes.\n * Changes for the last 4 weeks are retained. The items will be returned using\n * `processed_at` in ASC order (oldest first).\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `products:all`, `products:readonly`\n */\nexport const getProductChanges = <ThrowOnError extends boolean = false>(options?: Options<GetProductChangesData, ThrowOnError>) => (options?.client ?? client).get<GetProductChangesResponses, GetProductChangesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/changelogs/products',\n ...options\n});\n\n/**\n * Get ledger entry line change events\n *\n * Returns the list of changes based on the provided `start_date`.\n * If no `start_date` is provided it returns the oldest set of recorded changes.\n * Changes for the last 4 weeks are retained. The items will be returned using\n * `processed_at` in ASC order (oldest first).\n *\n * **NEW BEHAVIOR :**\n * The old `ledger` scope will only work on the old behavior system. As soon as you opt in to the new version, or when the sunset phase starts and you haven't explicitly opted out of the old behavior, the ledger scope will no longer work.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `ledger (DEPRECATED)`, `ledger_entries:readonly`, `ledger_entries:all`\n */\nexport const getLedgerEntryLineChanges = <ThrowOnError extends boolean = false>(options?: Options<GetLedgerEntryLineChangesData, ThrowOnError>) => (options?.client ?? client).get<GetLedgerEntryLineChangesResponses, GetLedgerEntryLineChangesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/changelogs/ledger_entry_lines',\n ...options\n});\n\n/**\n * Get transaction change events\n *\n * Returns the list of changes based on the provided `start_date`.\n * If no `start_date` is provided it returns the oldest set of recorded changes.\n * Changes for the last 4 weeks are retained. The items will be returned using\n * `processed_at` in ASC order (oldest first).\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `transactions:all`, `transactions:readonly`\n */\nexport const getTransactionChanges = <ThrowOnError extends boolean = false>(options?: Options<GetTransactionChangesData, ThrowOnError>) => (options?.client ?? client).get<GetTransactionChangesResponses, GetTransactionChangesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/changelogs/transactions',\n ...options\n});\n\n/**\n * List bank accounts\n *\n * List bank_accounts\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `bank_accounts:all`, `bank_accounts:readonly`\n */\nexport const getBankAccounts = <ThrowOnError extends boolean = false>(options?: Options<GetBankAccountsData, ThrowOnError>) => (options?.client ?? client).get<GetBankAccountsResponses, GetBankAccountsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/bank_accounts',\n ...options\n});\n\n/**\n * Create a bank account\n *\n * Create a bank account\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `bank_accounts:all`\n */\nexport const postBankAccount = <ThrowOnError extends boolean = false>(options: Options<PostBankAccountData, ThrowOnError>) => (options.client ?? client).post<PostBankAccountResponses, PostBankAccountErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/bank_accounts',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve a bank account\n *\n * Retrieve a bank account\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `bank_accounts:all`, `bank_accounts:readonly`\n */\nexport const getBankAccount = <ThrowOnError extends boolean = false>(options: Options<GetBankAccountData, ThrowOnError>) => (options.client ?? client).get<GetBankAccountResponses, GetBankAccountErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/bank_accounts/{id}',\n ...options\n});\n\n/**\n * List transactions\n *\n * List transactions\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `transactions:readonly`, `transactions:all`\n */\nexport const getTransactions = <ThrowOnError extends boolean = false>(options?: Options<GetTransactionsData, ThrowOnError>) => (options?.client ?? client).get<GetTransactionsResponses, GetTransactionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/transactions',\n ...options\n});\n\n/**\n * Create a transaction\n *\n * Create a banking transaction\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `transactions:all`\n */\nexport const createTransaction = <ThrowOnError extends boolean = false>(options: Options<CreateTransactionData, ThrowOnError>) => (options.client ?? client).post<CreateTransactionResponses, CreateTransactionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/transactions',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve a transaction\n *\n * Retrieve a transaction\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `transactions:readonly`, `transactions:all`\n */\nexport const getTransaction = <ThrowOnError extends boolean = false>(options: Options<GetTransactionData, ThrowOnError>) => (options.client ?? client).get<GetTransactionResponses, GetTransactionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/transactions/{id}',\n ...options\n});\n\n/**\n * Update a transaction\n *\n * This endpoint returns the updated transaction.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `transactions:all`\n */\nexport const updateTransaction = <ThrowOnError extends boolean = false>(options: Options<UpdateTransactionData, ThrowOnError>) => (options.client ?? client).put<UpdateTransactionResponses, UpdateTransactionErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/transactions/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List categories of a bank transaction\n *\n * List categories of a bank transaction\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `transactions:readonly`, `transactions:all`\n */\nexport const getTransactionCategories = <ThrowOnError extends boolean = false>(options: Options<GetTransactionCategoriesData, ThrowOnError>) => (options.client ?? client).get<GetTransactionCategoriesResponses, GetTransactionCategoriesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/transactions/{transaction_id}/categories',\n ...options\n});\n\n/**\n * Categorize a bank transaction\n *\n * Update the categories of a transaction. You can pass categories that don't belong to the same category group. The sum of categories of a same group must equal `1`. In the following example, the two first categories belong to the same category group A, the sum of the weights is `1`. The third category belongs to a category group B, its weight is `1`.\n * ```\n * [\n * { \"id\": 59, \"weight\": \"0.5\" }, // category group A\n * { \"id\": 33, \"weight\": \"0.5\" }, // category group A\n * { \"id\": 65, \"weight\": \"1\" } // category group B\n * ]\n * ```\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `transactions:all`\n */\nexport const putTransactionCategories = <ThrowOnError extends boolean = false>(options: Options<PutTransactionCategoriesData, ThrowOnError>) => (options.client ?? client).put<PutTransactionCategoriesResponses, PutTransactionCategoriesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/transactions/{transaction_id}/categories',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List invoices matched to a bank transaction\n *\n * List invoices matched to a bank transaction\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `transactions:readonly`, `transactions:all`\n */\nexport const getTransactionMatchedInvoices = <ThrowOnError extends boolean = false>(options: Options<GetTransactionMatchedInvoicesData, ThrowOnError>) => (options.client ?? client).get<GetTransactionMatchedInvoicesResponses, GetTransactionMatchedInvoicesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/transactions/{transaction_id}/matched_invoices',\n ...options\n});\n\n/**\n * List quotes\n *\n * Lists quotes\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `quotes:all`, `quotes:readonly`\n */\nexport const listQuotes = <ThrowOnError extends boolean = false>(options?: Options<ListQuotesData, ThrowOnError>) => (options?.client ?? client).get<ListQuotesResponses, ListQuotesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/quotes',\n ...options\n});\n\n/**\n * Create a quote\n *\n * This endpoint allows you to create a quote\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `quotes:all`\n */\nexport const postQuotes = <ThrowOnError extends boolean = false>(options: Options<PostQuotesData, ThrowOnError>) => (options.client ?? client).post<PostQuotesResponses, PostQuotesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/quotes',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve a quote\n *\n * This endpoint retrieves a quote.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `quotes:all`, `quotes:readonly`\n */\nexport const getQuote = <ThrowOnError extends boolean = false>(options: Options<GetQuoteData, ThrowOnError>) => (options.client ?? client).get<GetQuoteResponses, GetQuoteErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/quotes/{id}',\n ...options\n});\n\n/**\n * Update a quote\n *\n * This endpoint allows you to update a quote\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `quotes:all`\n */\nexport const updateQuote = <ThrowOnError extends boolean = false>(options: Options<UpdateQuoteData, ThrowOnError>) => (options.client ?? client).put<UpdateQuoteResponses, UpdateQuoteErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/quotes/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List appendices of a quote\n *\n * List appendices of a quote\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `quotes:all`, `quotes:readonly`\n */\nexport const getQuoteAppendices = <ThrowOnError extends boolean = false>(options: Options<GetQuoteAppendicesData, ThrowOnError>) => (options.client ?? client).get<GetQuoteAppendicesResponses, GetQuoteAppendicesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/quotes/{quote_id}/appendices',\n ...options\n});\n\n/**\n * Upload an appendix for a quote\n *\n * Upload a file that will be an appendix attached to a quote.\n *\n * Note that this will not upload a file into the DMS (GED).\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `quotes:all`\n */\nexport const postQuoteAppendices = <ThrowOnError extends boolean = false>(options: Options<PostQuoteAppendicesData, ThrowOnError>) => (options.client ?? client).post<PostQuoteAppendicesResponses, PostQuoteAppendicesErrors, ThrowOnError>({\n ...formDataBodySerializer,\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/quotes/{quote_id}/appendices',\n ...options,\n headers: {\n 'Content-Type': null,\n ...options.headers\n }\n});\n\n/**\n * List invoice lines for a quote\n *\n * List invoice lines for a quote\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `quotes:all`, `quotes:readonly`\n */\nexport const getQuoteInvoiceLines = <ThrowOnError extends boolean = false>(options: Options<GetQuoteInvoiceLinesData, ThrowOnError>) => (options.client ?? client).get<GetQuoteInvoiceLinesResponses, GetQuoteInvoiceLinesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/quotes/{quote_id}/invoice_lines',\n ...options\n});\n\n/**\n * List invoice line sections for a quote\n *\n * List invoice line sections for a quote\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `quotes:all`, `quotes:readonly`\n */\nexport const getQuoteInvoiceLineSections = <ThrowOnError extends boolean = false>(options: Options<GetQuoteInvoiceLineSectionsData, ThrowOnError>) => (options.client ?? client).get<GetQuoteInvoiceLineSectionsResponses, GetQuoteInvoiceLineSectionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/quotes/{quote_id}/invoice_line_sections',\n ...options\n});\n\n/**\n * Send a quote by email\n *\n * This endpoint allows you to send a quote by email to your customer.\n * This requires that the PDF file for that document has been generated\n * (this process can take a few minutes), so if you just created\n * the quote in our system, we may return a 409 error. You should\n * retry the request in a few minutes - if you receive a 204 response, that means\n * that the email is on its way. For more information about email sending, please\n * read \\[this guide\\](https://pennylane.readme.io/v2.0/docs/sending-documents-by-email).\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `quotes:all`\n */\nexport const sendByEmailQuote = <ThrowOnError extends boolean = false>(options: Options<SendByEmailQuoteData, ThrowOnError>) => (options.client ?? client).post<SendByEmailQuoteResponses, SendByEmailQuoteErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/quotes/{id}/send_by_email',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Update status of a quote\n *\n * This endpoint allows you to update the status of a quote\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `quotes:all`\n */\nexport const updateStatusQuote = <ThrowOnError extends boolean = false>(options: Options<UpdateStatusQuoteData, ThrowOnError>) => (options.client ?? client).put<UpdateStatusQuoteResponses, UpdateStatusQuoteErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/quotes/{id}/update_status',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List commercial documents\n *\n * This endpoint lists commercial documents.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `commercial_documents:all`, `commercial_documents:readonly`\n */\nexport const listCommercialDocuments = <ThrowOnError extends boolean = false>(options?: Options<ListCommercialDocumentsData, ThrowOnError>) => (options?.client ?? client).get<ListCommercialDocumentsResponses, ListCommercialDocumentsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/commercial_documents',\n ...options\n});\n\n/**\n * Retrieve a commercial document\n *\n * This endpoint retrieves a commercial document.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `commercial_documents:all`, `commercial_documents:readonly`\n */\nexport const getCommercialDocument = <ThrowOnError extends boolean = false>(options: Options<GetCommercialDocumentData, ThrowOnError>) => (options.client ?? client).get<GetCommercialDocumentResponses, GetCommercialDocumentErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/commercial_documents/{id}',\n ...options\n});\n\n/**\n * List appendices of a commercial document\n *\n * List appendices of a commercial document\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `commercial_documents:all`, `commercial_documents:readonly`\n */\nexport const getCommercialDocumentAppendices = <ThrowOnError extends boolean = false>(options: Options<GetCommercialDocumentAppendicesData, ThrowOnError>) => (options.client ?? client).get<GetCommercialDocumentAppendicesResponses, GetCommercialDocumentAppendicesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/commercial_documents/{commercial_document_id}/appendices',\n ...options\n});\n\n/**\n * Upload an appendix for a commercial document\n *\n * Upload a file that will be an appendix attached to a commercial document.\n *\n * Note that this will not upload a file into the DMS (GED).\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `commercial_documents:all`\n */\nexport const postCommercialDocumentAppendices = <ThrowOnError extends boolean = false>(options: Options<PostCommercialDocumentAppendicesData, ThrowOnError>) => (options.client ?? client).post<PostCommercialDocumentAppendicesResponses, PostCommercialDocumentAppendicesErrors, ThrowOnError>({\n ...formDataBodySerializer,\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/commercial_documents/{commercial_document_id}/appendices',\n ...options,\n headers: {\n 'Content-Type': null,\n ...options.headers\n }\n});\n\n/**\n * List invoice lines for a commercial document\n *\n * List invoice lines for a commercial document\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `commercial_documents:all`, `commercial_documents:readonly`\n */\nexport const getCommercialDocumentInvoiceLines = <ThrowOnError extends boolean = false>(options: Options<GetCommercialDocumentInvoiceLinesData, ThrowOnError>) => (options.client ?? client).get<GetCommercialDocumentInvoiceLinesResponses, GetCommercialDocumentInvoiceLinesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/commercial_documents/{commercial_document_id}/invoice_lines',\n ...options\n});\n\n/**\n * List invoice line sections for a commercial document\n *\n * List invoice line sections for a commercial document\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `commercial_documents:all`, `commercial_documents:readonly`\n */\nexport const getCommercialDocumentInvoiceLineSections = <ThrowOnError extends boolean = false>(options: Options<GetCommercialDocumentInvoiceLineSectionsData, ThrowOnError>) => (options.client ?? client).get<GetCommercialDocumentInvoiceLineSectionsResponses, GetCommercialDocumentInvoiceLineSectionsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/commercial_documents/{commercial_document_id}/invoice_line_sections',\n ...options\n});\n\n/**\n * List SEPA mandates\n *\n * This endpoint allows you to retrieve all SEPA mandates associated with your company\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_mandates:all`, `customer_mandates:readonly`\n */\nexport const getSepaMandates = <ThrowOnError extends boolean = false>(options?: Options<GetSepaMandatesData, ThrowOnError>) => (options?.client ?? client).get<GetSepaMandatesResponses, GetSepaMandatesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/sepa_mandates',\n ...options\n});\n\n/**\n * Create a SEPA mandate\n *\n * This endpoint allows you to create a SEPA mandate to enable direct debit payments\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_mandates:all`\n */\nexport const postSepaMandates = <ThrowOnError extends boolean = false>(options: Options<PostSepaMandatesData, ThrowOnError>) => (options.client ?? client).post<PostSepaMandatesResponses, PostSepaMandatesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/sepa_mandates',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete a SEPA mandate\n *\n * This endpoint allows you to delete a specific SEPA mandate\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_mandates:all`\n */\nexport const deleteSepaMandate = <ThrowOnError extends boolean = false>(options: Options<DeleteSepaMandateData, ThrowOnError>) => (options.client ?? client).delete<DeleteSepaMandateResponses, DeleteSepaMandateErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/sepa_mandates/{id}',\n ...options\n});\n\n/**\n * Get a SEPA mandate\n *\n * This endpoint allows you to retrieve a specific SEPA mandate by ID\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_mandates:all`, `customer_mandates:readonly`\n */\nexport const getSepaMandate = <ThrowOnError extends boolean = false>(options: Options<GetSepaMandateData, ThrowOnError>) => (options.client ?? client).get<GetSepaMandateResponses, GetSepaMandateErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/sepa_mandates/{id}',\n ...options\n});\n\n/**\n * Update a SEPA mandate\n *\n * This endpoint allows you to update an existing SEPA mandate\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_mandates:all`\n */\nexport const putSepaMandate = <ThrowOnError extends boolean = false>(options: Options<PutSepaMandateData, ThrowOnError>) => (options.client ?? client).put<PutSepaMandateResponses, PutSepaMandateErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/sepa_mandates/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List gocardless mandates\n *\n * List gocardless mandates\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_mandates:all`, `customer_mandates:readonly`\n */\nexport const getGocardlessMandates = <ThrowOnError extends boolean = false>(options?: Options<GetGocardlessMandatesData, ThrowOnError>) => (options?.client ?? client).get<GetGocardlessMandatesResponses, GetGocardlessMandatesErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/gocardless_mandates',\n ...options\n});\n\n/**\n * Get a Gocardless mandate\n *\n * This endpoint allows you to retrieve a specific Gocardless mandate by ID.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_mandates:all`, `customer_mandates:readonly`\n */\nexport const getGocardlessMandate = <ThrowOnError extends boolean = false>(options: Options<GetGocardlessMandateData, ThrowOnError>) => (options.client ?? client).get<GetGocardlessMandateResponses, GetGocardlessMandateErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/gocardless_mandates/{id}',\n ...options\n});\n\n/**\n * Send a GoCardless mandate email request\n *\n * This endpoint allows you to send an email request for a GoCardless mandate to a recipient.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_mandates:all`\n */\nexport const postGocardlessMandateMailRequests = <ThrowOnError extends boolean = false>(options: Options<PostGocardlessMandateMailRequestsData, ThrowOnError>) => (options.client ?? client).post<PostGocardlessMandateMailRequestsResponses, PostGocardlessMandateMailRequestsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/gocardless_mandates/mail_requests',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Cancel a Gocardless mandate\n *\n * Cancels a specific Gocardless mandate by ID. The mandate must be in a cancellable state, having one of the following statuses: `pending_submission`, `submitted` or `active`.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_mandates:all`\n */\nexport const postGocardlessMandateCancellations = <ThrowOnError extends boolean = false>(options: Options<PostGocardlessMandateCancellationsData, ThrowOnError>) => (options.client ?? client).post<PostGocardlessMandateCancellationsResponses, PostGocardlessMandateCancellationsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/gocardless_mandates/{gocardless_mandate_id}/cancellations',\n ...options\n});\n\n/**\n * Associate a GoCardless mandate to a customer\n *\n * This endpoint allows you to associate a GoCardless mandate to a customer.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_mandates:all`\n */\nexport const postGocardlessMandateAssociations = <ThrowOnError extends boolean = false>(options: Options<PostGocardlessMandateAssociationsData, ThrowOnError>) => (options.client ?? client).post<PostGocardlessMandateAssociationsResponses, PostGocardlessMandateAssociationsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/gocardless_mandates/{gocardless_mandate_id}/associations',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List custom header fields for a customer invoice\n *\n * List custom header fields for a customer invoice\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly`\n */\nexport const getCustomerInvoiceCustomHeaderFields = <ThrowOnError extends boolean = false>(options: Options<GetCustomerInvoiceCustomHeaderFieldsData, ThrowOnError>) => (options.client ?? client).get<GetCustomerInvoiceCustomHeaderFieldsResponses, GetCustomerInvoiceCustomHeaderFieldsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/custom_header_fields',\n ...options\n});\n\n/**\n * [BETA] Import e-invoices\n *\n * This endpoint allows you to import an e-invoice.\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `e_invoices:all`\n */\nexport const createEInvoiceImport = <ThrowOnError extends boolean = false>(options: Options<CreateEInvoiceImportData, ThrowOnError>) => (options.client ?? client).post<CreateEInvoiceImportResponses, CreateEInvoiceImportErrors, ThrowOnError>({\n ...formDataBodySerializer,\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/e-invoices/imports',\n ...options,\n headers: {\n 'Content-Type': null,\n ...options.headers\n }\n});\n\n/**\n * Import a purchase order.\n *\n * Import a purchase order. This will create a purchase request with an existing purchase order attached.\n * The purchase request will be **automatically validated**.\n *\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `purchase_requests:all`\n */\nexport const createPurchaseRequestImport = <ThrowOnError extends boolean = false>(options: Options<CreatePurchaseRequestImportData, ThrowOnError>) => (options.client ?? client).post<CreatePurchaseRequestImportResponses, CreatePurchaseRequestImportErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/purchase_requests/imports',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve a purchase request\n *\n * Retrieve a purchase request\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `purchase_requests:all`, `purchase_requests:readonly`\n */\nexport const getPurchaseRequest = <ThrowOnError extends boolean = false>(options: Options<GetPurchaseRequestData, ThrowOnError>) => (options.client ?? client).get<GetPurchaseRequestResponses, GetPurchaseRequestErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/purchase_requests/{id}',\n ...options\n});\n\n/**\n * List purchase requests\n *\n * List purchase requests\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `purchase_requests:all`, `purchase_requests:readonly`\n */\nexport const getPurchaseRequests = <ThrowOnError extends boolean = false>(options?: Options<GetPurchaseRequestsData, ThrowOnError>) => (options?.client ?? client).get<GetPurchaseRequestsResponses, GetPurchaseRequestsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/purchase_requests',\n ...options\n});\n\n/**\n * List bank establishments\n *\n * List bank establishments\n *\n * > ℹ️\n * > This endpoint requires one of the following scopes: `bank_establishments:readonly`\n */\nexport const getBankEstablishments = <ThrowOnError extends boolean = false>(options?: Options<GetBankEstablishmentsData, ThrowOnError>) => (options?.client ?? client).get<GetBankEstablishmentsResponses, GetBankEstablishmentsErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/external/v2/bank_establishments',\n ...options\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type ClientOptions = {\n baseUrl: 'https://app.pennylane.com' | (string & {});\n};\n\nexport type JournalsResponse = {\n code: string;\n id: number;\n label: string;\n type: string;\n};\n\nexport const BadRequestCodeEnum = {\n INVALID_DATE_FORMAT: 'InvalidDateFormat',\n INVALID_DATE_TIME_FORMAT: 'InvalidDateTimeFormat',\n INVALID_EMAIL_FORMAT: 'InvalidEmailFormat',\n INVALID_PATTERN: 'InvalidPattern',\n INVALID_UUID_FORMAT: 'InvalidUUIDFormat',\n LESS_THAN_EXCLUSIVE_MINIMUM: 'LessThanExclusiveMinimum',\n LESS_THAN_MINIMUM: 'LessThanMinimum',\n LESS_THAN_MIN_ITEMS: 'LessThanMinItems',\n LESS_THAN_MIN_LENGTH: 'LessThanMinLength',\n MORE_THAN_EXCLUSIVE_MAXIMUM: 'MoreThanExclusiveMaximum',\n MORE_THAN_MAXIMUM: 'MoreThanMaximum',\n MORE_THAN_MAX_ITEMS: 'MoreThanMaxItems',\n MORE_THAN_MAX_LENGTH: 'MoreThanMaxLength',\n NOT_A_MULTIPART_FILE: 'NotAMultipartFile',\n NOT_ANY_OF: 'NotAnyOf',\n NOT_ENUM_INCLUDE: 'NotEnumInclude',\n NOT_EXIST_CONTENT_TYPE_DEFINITION: 'NotExistContentTypeDefinition',\n NOT_EXIST_DISCRIMINATOR_MAPPED_SCHEMA: 'NotExistDiscriminatorMappedSchema',\n NOT_EXIST_DISCRIMINATOR_PROPERTY_NAME: 'NotExistDiscriminatorPropertyName',\n NOT_EXIST_PROPERTY_DEFINITION: 'NotExistPropertyDefinition',\n NOT_EXIST_REQUIRED_KEY: 'NotExistRequiredKey',\n NOT_EXIST_STATUS_CODE_DEFINITION: 'NotExistStatusCodeDefinition',\n NOT_NULL_ERROR: 'NotNullError',\n NOT_ONE_OF: 'NotOneOf',\n VALIDATE_ERROR: 'ValidateError'\n} as const;\n\nexport type BadRequestCodeEnum = typeof BadRequestCodeEnum[keyof typeof BadRequestCodeEnum];\n\nexport type LedgerAccountsResponse = {\n id: number;\n number: string;\n label: string;\n /**\n * Ledger Account's VAT rate in percentage\n */\n vat_rate: string;\n /**\n * Ledger Account's country code (alpha2)\n */\n country_alpha2: string;\n enabled: boolean;\n type: string;\n letterable: boolean;\n /**\n * The time the ledger account has been created\n */\n created_at: string;\n /**\n * The last time the ledger account has been updated\n */\n updated_at: string;\n};\n\nexport const VatRateWithAnyAndMixed = {\n FR_1_05: 'FR_1_05',\n FR_1_75: 'FR_1_75',\n FR_09: 'FR_09',\n FR_21: 'FR_21',\n FR_40: 'FR_40',\n FR_50: 'FR_50',\n FR_55: 'FR_55',\n FR_60: 'FR_60',\n FR_65: 'FR_65',\n FR_85: 'FR_85',\n FR_92: 'FR_92',\n FR_100: 'FR_100',\n FR_130: 'FR_130',\n FR_15_385: 'FR_15_385',\n FR_160: 'FR_160',\n FR_196: 'FR_196',\n FR_200: 'FR_200',\n AD_10: 'AD_10',\n AD_45: 'AD_45',\n AD_95: 'AD_95',\n AT_100: 'AT_100',\n AT_130: 'AT_130',\n AT_200: 'AT_200',\n BE_60: 'BE_60',\n BE_120: 'BE_120',\n BE_210: 'BE_210',\n BG_90: 'BG_90',\n BG_200: 'BG_200',\n CH_25: 'CH_25',\n CH_37: 'CH_37',\n CH_77: 'CH_77',\n CH_26: 'CH_26',\n CH_38: 'CH_38',\n CH_81: 'CH_81',\n CY_30: 'CY_30',\n CY_50: 'CY_50',\n CY_90: 'CY_90',\n CY_190: 'CY_190',\n CZ_100: 'CZ_100',\n CZ_120: 'CZ_120',\n CZ_150: 'CZ_150',\n CZ_210: 'CZ_210',\n DE_70: 'DE_70',\n DE_190: 'DE_190',\n DK_250: 'DK_250',\n EE_90: 'EE_90',\n EE_200: 'EE_200',\n EE_220: 'EE_220',\n EE_240: 'EE_240',\n ES_40: 'ES_40',\n ES_100: 'ES_100',\n ES_210: 'ES_210',\n FI_100: 'FI_100',\n FI_140: 'FI_140',\n FI_240: 'FI_240',\n FI_255: 'FI_255',\n GB_50: 'GB_50',\n GB_200: 'GB_200',\n GR_60: 'GR_60',\n GR_130: 'GR_130',\n GR_240: 'GR_240',\n HR_50: 'HR_50',\n HR_130: 'HR_130',\n HR_250: 'HR_250',\n HU_50: 'HU_50',\n HU_180: 'HU_180',\n HU_270: 'HU_270',\n IE_48: 'IE_48',\n IE_90: 'IE_90',\n IE_135: 'IE_135',\n IE_210: 'IE_210',\n IE_230: 'IE_230',\n IT_40: 'IT_40',\n IT_50: 'IT_50',\n IT_100: 'IT_100',\n IT_220: 'IT_220',\n LT_50: 'LT_50',\n LT_90: 'LT_90',\n LT_210: 'LT_210',\n LU_30: 'LU_30',\n LU_70: 'LU_70',\n LU_80: 'LU_80',\n LU_120: 'LU_120',\n LU_130: 'LU_130',\n LU_140: 'LU_140',\n LU_160: 'LU_160',\n LU_170: 'LU_170',\n LV_50: 'LV_50',\n LV_120: 'LV_120',\n LV_210: 'LV_210',\n MC_09: 'MC_09',\n MC_21: 'MC_21',\n MC_55: 'MC_55',\n MC_85: 'MC_85',\n MC_100: 'MC_100',\n MC_200: 'MC_200',\n MT_50: 'MT_50',\n MT_70: 'MT_70',\n MT_180: 'MT_180',\n MU_150: 'MU_150',\n NL_90: 'NL_90',\n NL_210: 'NL_210',\n PL_50: 'PL_50',\n PL_80: 'PL_80',\n PL_230: 'PL_230',\n PT_60: 'PT_60',\n PT_130: 'PT_130',\n PT_160: 'PT_160',\n PT_230: 'PT_230',\n RO_50: 'RO_50',\n RO_90: 'RO_90',\n RO_110: 'RO_110',\n RO_190: 'RO_190',\n RO_210: 'RO_210',\n SE_60: 'SE_60',\n SE_120: 'SE_120',\n SE_250: 'SE_250',\n SI_50: 'SI_50',\n SI_95: 'SI_95',\n SI_220: 'SI_220',\n SK_100: 'SK_100',\n SK_190: 'SK_190',\n SK_200: 'SK_200',\n SK_230: 'SK_230',\n NO_120: 'NO_120',\n NO_150: 'NO_150',\n NO_250: 'NO_250',\n EXEMPT: 'exempt',\n INTRACOM_21: 'intracom_21',\n INTRACOM_55: 'intracom_55',\n INTRACOM_85: 'intracom_85',\n INTRACOM_100: 'intracom_100',\n CROSSBORDER: 'crossborder',\n EXTRACOM: 'extracom',\n FR_85_CONSTRUCTION: 'FR_85_construction',\n FR_100_CONSTRUCTION: 'FR_100_construction',\n FR_200_CONSTRUCTION: 'FR_200_construction',\n ANY: 'any',\n MIXED: 'mixed'\n} as const;\n\nexport type VatRateWithAnyAndMixed = typeof VatRateWithAnyAndMixed[keyof typeof VatRateWithAnyAndMixed];\n\nexport const AuthorizedCountryAlpha2WithAny = {\n AT: 'AT',\n BE: 'BE',\n BG: 'BG',\n CY: 'CY',\n CZ: 'CZ',\n DE: 'DE',\n DK: 'DK',\n EE: 'EE',\n ES: 'ES',\n FI: 'FI',\n FR: 'FR',\n GR: 'GR',\n HR: 'HR',\n HU: 'HU',\n IE: 'IE',\n IT: 'IT',\n LT: 'LT',\n LU: 'LU',\n LV: 'LV',\n MT: 'MT',\n NL: 'NL',\n PL: 'PL',\n PT: 'PT',\n RO: 'RO',\n SE: 'SE',\n SI: 'SI',\n SK: 'SK',\n GB: 'GB',\n MC: 'MC',\n CH: 'CH',\n AD: 'AD',\n MU: 'MU',\n NO: 'NO',\n ANY: 'any'\n} as const;\n\nexport type AuthorizedCountryAlpha2WithAny = typeof AuthorizedCountryAlpha2WithAny[keyof typeof AuthorizedCountryAlpha2WithAny];\n\nexport type LedgerEntriesCategories = Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n}>;\n\nexport const Currency = {\n EUR: 'EUR',\n USD: 'USD',\n GBP: 'GBP',\n AED: 'AED',\n AFN: 'AFN',\n ALL: 'ALL',\n AMD: 'AMD',\n ANG: 'ANG',\n AOA: 'AOA',\n ARS: 'ARS',\n AUD: 'AUD',\n AWG: 'AWG',\n AZN: 'AZN',\n BAM: 'BAM',\n BBD: 'BBD',\n BDT: 'BDT',\n BGN: 'BGN',\n BHD: 'BHD',\n BIF: 'BIF',\n BMD: 'BMD',\n BND: 'BND',\n BOB: 'BOB',\n BRL: 'BRL',\n BSD: 'BSD',\n BTN: 'BTN',\n BWP: 'BWP',\n BYN: 'BYN',\n BYR: 'BYR',\n BZD: 'BZD',\n CAD: 'CAD',\n CDF: 'CDF',\n CHE: 'CHE',\n CHF: 'CHF',\n CLF: 'CLF',\n CLP: 'CLP',\n CNY: 'CNY',\n COP: 'COP',\n CRC: 'CRC',\n CUC: 'CUC',\n CUP: 'CUP',\n CVE: 'CVE',\n CZK: 'CZK',\n DJF: 'DJF',\n DKK: 'DKK',\n DOP: 'DOP',\n DZD: 'DZD',\n EGP: 'EGP',\n ERN: 'ERN',\n ETB: 'ETB',\n FJD: 'FJD',\n FKP: 'FKP',\n GEL: 'GEL',\n GGP: 'GGP',\n GHS: 'GHS',\n GIP: 'GIP',\n GMD: 'GMD',\n GNF: 'GNF',\n GTQ: 'GTQ',\n GYD: 'GYD',\n HKD: 'HKD',\n HNL: 'HNL',\n HRK: 'HRK',\n HTG: 'HTG',\n HUF: 'HUF',\n IDR: 'IDR',\n ILS: 'ILS',\n IMP: 'IMP',\n INR: 'INR',\n IQD: 'IQD',\n IRR: 'IRR',\n ISK: 'ISK',\n JEP: 'JEP',\n JMD: 'JMD',\n JOD: 'JOD',\n JPY: 'JPY',\n KES: 'KES',\n KGS: 'KGS',\n KHR: 'KHR',\n KMF: 'KMF',\n KPW: 'KPW',\n KRW: 'KRW',\n KWD: 'KWD',\n KYD: 'KYD',\n KZT: 'KZT',\n LAK: 'LAK',\n LBP: 'LBP',\n LKR: 'LKR',\n LRD: 'LRD',\n LSL: 'LSL',\n LTL: 'LTL',\n LVL: 'LVL',\n LYD: 'LYD',\n MAD: 'MAD',\n MDL: 'MDL',\n MGA: 'MGA',\n MKD: 'MKD',\n MMK: 'MMK',\n MNT: 'MNT',\n MOP: 'MOP',\n MRO: 'MRO',\n MRU: 'MRU',\n MUR: 'MUR',\n MVR: 'MVR',\n MWK: 'MWK',\n MXN: 'MXN',\n MYR: 'MYR',\n MZN: 'MZN',\n NAD: 'NAD',\n NGN: 'NGN',\n NIO: 'NIO',\n NOK: 'NOK',\n NPR: 'NPR',\n NZD: 'NZD',\n OMR: 'OMR',\n PAB: 'PAB',\n PEN: 'PEN',\n PGK: 'PGK',\n PHP: 'PHP',\n PKR: 'PKR',\n PLN: 'PLN',\n PYG: 'PYG',\n QAR: 'QAR',\n RON: 'RON',\n RSD: 'RSD',\n RUB: 'RUB',\n RWF: 'RWF',\n SAR: 'SAR',\n SBD: 'SBD',\n SCR: 'SCR',\n SDG: 'SDG',\n SEK: 'SEK',\n SGD: 'SGD',\n SHP: 'SHP',\n SLL: 'SLL',\n SLE: 'SLE',\n SOS: 'SOS',\n SRD: 'SRD',\n STD: 'STD',\n SVC: 'SVC',\n SYP: 'SYP',\n SZL: 'SZL',\n THB: 'THB',\n TJS: 'TJS',\n TMT: 'TMT',\n TND: 'TND',\n TOP: 'TOP',\n TRY: 'TRY',\n TTD: 'TTD',\n TWD: 'TWD',\n TZS: 'TZS',\n UAH: 'UAH',\n UGX: 'UGX',\n UYU: 'UYU',\n UZS: 'UZS',\n VEF: 'VEF',\n VND: 'VND',\n VUV: 'VUV',\n WST: 'WST',\n XAF: 'XAF',\n XCD: 'XCD',\n XDR: 'XDR',\n XOF: 'XOF',\n XPF: 'XPF',\n YER: 'YER',\n ZAR: 'ZAR',\n ZMK: 'ZMK',\n ZMW: 'ZMW',\n ZWL: 'ZWL'\n} as const;\n\nexport type Currency = typeof Currency[keyof typeof Currency];\n\nexport type LedgerEntriesResponse = {\n /**\n * ID of the ledger entry\n */\n id: number;\n /**\n * Label that describes the ledger entry\n */\n label: string;\n piece_number: string | null;\n /**\n * Date of the ledger entry (ISO 8601)\n */\n date: string;\n /**\n * The date the invoice is due\n */\n due_date: string | null;\n /**\n * This attribute is **deprecated**. Please use `journal` instead. The journal ID where the ledger entry was created\n *\n * @deprecated\n */\n journal_id: number;\n journal: {\n id: number;\n url: string;\n };\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n /**\n * This attribute is deprecated. Please use `filename` from `attachment` instead.\n *\n * @deprecated\n */\n ledger_attachment_filename: string | null;\n /**\n * This attribute is deprecated. Ledger attachment ID\n *\n * @deprecated\n */\n ledger_attachment_id: number | null;\n /**\n * The file attached to the ledger entry.\n */\n attachment: {\n filename: string;\n /**\n * URL to the uploaded file.\n */\n url: string;\n } | null;\n /**\n * Array of entry lines\n */\n ledger_entry_lines: Array<{\n /**\n * ID of the entry line\n */\n id: number;\n /**\n * Debit amount for the entry line\n */\n debit: string;\n /**\n * Credit amount for the entry line\n */\n credit: string;\n /**\n * This attribute is deprecated. Please use `id` from `ledger_account` instead.\n *\n * @deprecated\n */\n ledger_account_id: number;\n ledger_account: {\n /**\n * Ledger account ID\n */\n id: number;\n /**\n * Ledger account number\n */\n number: string;\n /**\n * The URL to the ledger account\n */\n url: string;\n };\n /**\n * Label that describes the entry line\n */\n label: string;\n }>;\n};\n\nexport type LedgerEntryLinesCategories = Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n}>;\n\nexport type LedgerEntryLinesResponse = {\n /**\n * ID of the entry line\n */\n id: number;\n /**\n * Debit amount for the entry line\n */\n debit: string;\n /**\n * Credit amount for the entry line\n */\n credit: string;\n /**\n * Label that describes the entry line\n */\n label: string;\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n ledger_account: {\n /**\n * Ledger account ID\n */\n id: number;\n /**\n * Ledger account number\n */\n number: string;\n /**\n * The URL to the ledger account\n */\n url: string;\n };\n journal: {\n /**\n * Journal ID\n */\n id: number;\n /**\n * The URL to the journal\n */\n url: string;\n };\n /**\n * Date of the ledger entry line (ISO 8601)\n */\n date: string;\n ledger_entry: {\n /**\n * The ledger entry ID of the ledger entry line\n */\n id: number;\n };\n /**\n * Ledger entry lines that are lettered with this entry line.\n */\n lettered_ledger_entry_lines: {\n /**\n * IDs of all ledger entry lines that share the same lettering, including the ID of this entry line itself. Will be empty if this entry line is not lettered.\n */\n ids: Array<number>;\n /**\n * URL to fetch the lettered ledger entry lines.\n */\n url: string;\n };\n /**\n * The time the entry line has been created\n */\n created_at: string;\n /**\n * The last time the entry line has been updated\n */\n updated_at: string;\n};\n\n/**\n * - `none`: the API won't let you create an unbalanced lettering\n * and will respond with an error.\n * - `partial`: a potentially unbalanced lettering will be created.\n *\n */\nexport const UnbalancedLetteringStrategy = { NONE: 'none', PARTIAL: 'partial' } as const;\n\n/**\n * - `none`: the API won't let you create an unbalanced lettering\n * and will respond with an error.\n * - `partial`: a potentially unbalanced lettering will be created.\n *\n */\nexport type UnbalancedLetteringStrategy = typeof UnbalancedLetteringStrategy[keyof typeof UnbalancedLetteringStrategy];\n\nexport type LedgerEntryLinesLetteredLedgerEntryLinesCategoriesResponse = Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n}>;\n\nexport type LedgerEntryLinesLetteredLedgerEntryLinesResponse = {\n /**\n * ID of the entry line\n */\n id: number;\n /**\n * Debit amount for the entry line\n */\n debit: string;\n /**\n * Credit amount for the entry line\n */\n credit: string;\n /**\n * Label that describes the entry line\n */\n label: string;\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n ledger_account: {\n /**\n * Ledger account ID\n */\n id: number;\n /**\n * Ledger account number\n */\n number: string;\n /**\n * The URL to the ledger account\n */\n url: string;\n };\n journal: {\n /**\n * Journal ID\n */\n id: number;\n /**\n * The URL to the journal\n */\n url: string;\n };\n /**\n * Date of the ledger entry line (ISO 8601)\n */\n date: string;\n ledger_entry: {\n /**\n * The ledger entry ID of the ledger entry line\n */\n id: number;\n };\n /**\n * Ledger entry lines that are lettered with this entry line.\n */\n lettered_ledger_entry_lines: {\n /**\n * IDs of all ledger entry lines that share the same lettering, including the ID of this entry line itself. Will be empty if this entry line is not lettered.\n */\n ids: Array<number>;\n /**\n * URL to fetch the lettered ledger entry lines.\n */\n url: string;\n };\n /**\n * The time the entry line has been created\n */\n created_at: string;\n /**\n * The last time the entry line has been updated\n */\n updated_at: string;\n};\n\nexport type LedgerEntryLinesCategoriesResponse = {\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n};\n\nexport const SchemasCurrency = {\n EUR: 'EUR',\n USD: 'USD',\n GBP: 'GBP',\n AED: 'AED',\n AFN: 'AFN',\n ALL: 'ALL',\n AMD: 'AMD',\n ANG: 'ANG',\n AOA: 'AOA',\n ARS: 'ARS',\n AUD: 'AUD',\n AWG: 'AWG',\n AZN: 'AZN',\n BAM: 'BAM',\n BBD: 'BBD',\n BDT: 'BDT',\n BGN: 'BGN',\n BHD: 'BHD',\n BIF: 'BIF',\n BMD: 'BMD',\n BND: 'BND',\n BOB: 'BOB',\n BRL: 'BRL',\n BSD: 'BSD',\n BTN: 'BTN',\n BWP: 'BWP',\n BYN: 'BYN',\n BYR: 'BYR',\n BZD: 'BZD',\n CAD: 'CAD',\n CDF: 'CDF',\n CHF: 'CHF',\n CLF: 'CLF',\n CLP: 'CLP',\n CNY: 'CNY',\n COP: 'COP',\n CRC: 'CRC',\n CUC: 'CUC',\n CUP: 'CUP',\n CVE: 'CVE',\n CZK: 'CZK',\n DJF: 'DJF',\n DKK: 'DKK',\n DOP: 'DOP',\n DZD: 'DZD',\n EGP: 'EGP',\n ERN: 'ERN',\n ETB: 'ETB',\n FJD: 'FJD',\n FKP: 'FKP',\n GEL: 'GEL',\n GGP: 'GGP',\n GHS: 'GHS',\n GIP: 'GIP',\n GMD: 'GMD',\n GNF: 'GNF',\n GTQ: 'GTQ',\n GYD: 'GYD',\n HKD: 'HKD',\n HNL: 'HNL',\n HRK: 'HRK',\n HTG: 'HTG',\n HUF: 'HUF',\n IDR: 'IDR',\n ILS: 'ILS',\n IMP: 'IMP',\n INR: 'INR',\n IQD: 'IQD',\n IRR: 'IRR',\n ISK: 'ISK',\n JEP: 'JEP',\n JMD: 'JMD',\n JOD: 'JOD',\n JPY: 'JPY',\n KES: 'KES',\n KGS: 'KGS',\n KHR: 'KHR',\n KMF: 'KMF',\n KPW: 'KPW',\n KRW: 'KRW',\n KWD: 'KWD',\n KYD: 'KYD',\n KZT: 'KZT',\n LAK: 'LAK',\n LBP: 'LBP',\n LKR: 'LKR',\n LRD: 'LRD',\n LSL: 'LSL',\n LTL: 'LTL',\n LVL: 'LVL',\n LYD: 'LYD',\n MAD: 'MAD',\n MDL: 'MDL',\n MGA: 'MGA',\n MKD: 'MKD',\n MMK: 'MMK',\n MNT: 'MNT',\n MOP: 'MOP',\n MRO: 'MRO',\n MUR: 'MUR',\n MVR: 'MVR',\n MWK: 'MWK',\n MXN: 'MXN',\n MYR: 'MYR',\n MZN: 'MZN',\n NAD: 'NAD',\n NGN: 'NGN',\n NIO: 'NIO',\n NOK: 'NOK',\n NPR: 'NPR',\n NZD: 'NZD',\n OMR: 'OMR',\n PAB: 'PAB',\n PEN: 'PEN',\n PGK: 'PGK',\n PHP: 'PHP',\n PKR: 'PKR',\n PLN: 'PLN',\n PYG: 'PYG',\n QAR: 'QAR',\n RON: 'RON',\n RSD: 'RSD',\n RUB: 'RUB',\n RWF: 'RWF',\n SAR: 'SAR',\n SBD: 'SBD',\n SCR: 'SCR',\n SDG: 'SDG',\n SEK: 'SEK',\n SGD: 'SGD',\n SHP: 'SHP',\n SLL: 'SLL',\n SOS: 'SOS',\n SRD: 'SRD',\n STD: 'STD',\n SVC: 'SVC',\n SYP: 'SYP',\n SZL: 'SZL',\n THB: 'THB',\n TJS: 'TJS',\n TMT: 'TMT',\n TND: 'TND',\n TOP: 'TOP',\n TRY: 'TRY',\n TTD: 'TTD',\n TWD: 'TWD',\n TZS: 'TZS',\n UAH: 'UAH',\n UGX: 'UGX',\n UYU: 'UYU',\n UZS: 'UZS',\n VEF: 'VEF',\n VND: 'VND',\n VUV: 'VUV',\n WST: 'WST',\n XAF: 'XAF',\n XCD: 'XCD',\n XDR: 'XDR',\n XOF: 'XOF',\n XPF: 'XPF',\n YER: 'YER',\n ZAR: 'ZAR',\n ZMK: 'ZMK',\n ZMW: 'ZMW',\n ZWL: 'ZWL'\n} as const;\n\nexport type SchemasCurrency = typeof SchemasCurrency[keyof typeof SchemasCurrency];\n\nexport const TemplatesAvailablesLocales = { FR_FR: 'fr_FR', EN_GB: 'en_GB' } as const;\n\nexport type TemplatesAvailablesLocales = typeof TemplatesAvailablesLocales[keyof typeof TemplatesAvailablesLocales];\n\nexport const InvoiceStatuses = {\n ARCHIVED: 'archived',\n INCOMPLETE: 'incomplete',\n CANCELLED: 'cancelled',\n PAID: 'paid',\n PARTIALLY_CANCELLED: 'partially_cancelled',\n UPCOMING: 'upcoming',\n LATE: 'late',\n DRAFT: 'draft',\n CREDIT_NOTE: 'credit_note'\n} as const;\n\nexport type InvoiceStatuses = typeof InvoiceStatuses[keyof typeof InvoiceStatuses];\n\n/**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\nexport const DiscountType = { ABSOLUTE: 'absolute', RELATIVE: 'relative' } as const;\n\n/**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\nexport type DiscountType = typeof DiscountType[keyof typeof DiscountType];\n\nexport type CustomerInvoicesResponse = {\n /**\n * Invoice identifier\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * Invoice paid status (set to True if the invoice is paid)\n */\n paid: boolean;\n status: 'archived' | 'incomplete' | 'cancelled' | 'paid' | 'partially_cancelled' | 'upcoming' | 'late' | 'draft' | 'credit_note';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n /**\n * Indicates if the invoice is in draft (has not been finalized)\n */\n draft: boolean;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the invoice.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n custom_header_fields: {\n /**\n * URL to get the custom header fields of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n billing_subscription: {\n id: number;\n } | null;\n /**\n * The credited invoice if the invoice is a credit note.\n */\n credited_invoice: {\n id: number;\n /**\n * URL to get the credited invoice.\n */\n url: string;\n } | null;\n customer_invoice_template: {\n id: number;\n } | null;\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n appendices: {\n /**\n * URL to get the appendices of the invoice.\n */\n url: string;\n };\n /**\n * The quote at the origin of the invoice\n */\n quote: {\n id: number;\n } | null;\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n};\n\n/**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\nexport const VatRate = {\n FR_1_05: 'FR_1_05',\n FR_1_75: 'FR_1_75',\n FR_09: 'FR_09',\n FR_21: 'FR_21',\n FR_40: 'FR_40',\n FR_50: 'FR_50',\n FR_55: 'FR_55',\n FR_60: 'FR_60',\n FR_65: 'FR_65',\n FR_85: 'FR_85',\n FR_92: 'FR_92',\n FR_100: 'FR_100',\n FR_130: 'FR_130',\n FR_15_385: 'FR_15_385',\n FR_160: 'FR_160',\n FR_196: 'FR_196',\n FR_200: 'FR_200',\n AD_10: 'AD_10',\n AD_45: 'AD_45',\n AD_95: 'AD_95',\n AT_100: 'AT_100',\n AT_130: 'AT_130',\n AT_200: 'AT_200',\n BE_60: 'BE_60',\n BE_120: 'BE_120',\n BE_210: 'BE_210',\n BG_90: 'BG_90',\n BG_200: 'BG_200',\n CH_25: 'CH_25',\n CH_26: 'CH_26',\n CH_37: 'CH_37',\n CH_38: 'CH_38',\n CH_77: 'CH_77',\n CH_81: 'CH_81',\n CY_30: 'CY_30',\n CY_50: 'CY_50',\n CY_90: 'CY_90',\n CY_190: 'CY_190',\n CZ_100: 'CZ_100',\n CZ_120: 'CZ_120',\n CZ_150: 'CZ_150',\n CZ_210: 'CZ_210',\n DE_70: 'DE_70',\n DE_190: 'DE_190',\n DK_250: 'DK_250',\n EE_90: 'EE_90',\n EE_200: 'EE_200',\n EE_220: 'EE_220',\n EE_240: 'EE_240',\n ES_40: 'ES_40',\n ES_100: 'ES_100',\n ES_210: 'ES_210',\n FI_100: 'FI_100',\n FI_140: 'FI_140',\n FI_240: 'FI_240',\n FI_255: 'FI_255',\n GB_50: 'GB_50',\n GB_200: 'GB_200',\n GR_60: 'GR_60',\n GR_130: 'GR_130',\n GR_240: 'GR_240',\n HR_50: 'HR_50',\n HR_130: 'HR_130',\n HR_250: 'HR_250',\n HU_50: 'HU_50',\n HU_180: 'HU_180',\n HU_270: 'HU_270',\n IE_48: 'IE_48',\n IE_90: 'IE_90',\n IE_135: 'IE_135',\n IE_210: 'IE_210',\n IE_230: 'IE_230',\n IT_40: 'IT_40',\n IT_50: 'IT_50',\n IT_100: 'IT_100',\n IT_220: 'IT_220',\n LT_50: 'LT_50',\n LT_90: 'LT_90',\n LT_210: 'LT_210',\n LU_30: 'LU_30',\n LU_70: 'LU_70',\n LU_80: 'LU_80',\n LU_120: 'LU_120',\n LU_130: 'LU_130',\n LU_140: 'LU_140',\n LU_160: 'LU_160',\n LU_170: 'LU_170',\n LV_50: 'LV_50',\n LV_120: 'LV_120',\n LV_210: 'LV_210',\n MC_09: 'MC_09',\n MC_21: 'MC_21',\n MC_55: 'MC_55',\n MC_85: 'MC_85',\n MC_100: 'MC_100',\n MC_200: 'MC_200',\n MT_50: 'MT_50',\n MT_70: 'MT_70',\n MT_180: 'MT_180',\n MU_150: 'MU_150',\n NL_90: 'NL_90',\n NL_210: 'NL_210',\n PL_50: 'PL_50',\n PL_80: 'PL_80',\n PL_230: 'PL_230',\n PT_60: 'PT_60',\n PT_130: 'PT_130',\n PT_160: 'PT_160',\n PT_230: 'PT_230',\n RO_50: 'RO_50',\n RO_90: 'RO_90',\n RO_110: 'RO_110',\n RO_190: 'RO_190',\n RO_210: 'RO_210',\n SE_60: 'SE_60',\n SE_120: 'SE_120',\n SE_250: 'SE_250',\n SI_50: 'SI_50',\n SI_95: 'SI_95',\n SI_220: 'SI_220',\n SK_100: 'SK_100',\n SK_190: 'SK_190',\n SK_200: 'SK_200',\n SK_230: 'SK_230',\n NO_120: 'NO_120',\n NO_150: 'NO_150',\n NO_250: 'NO_250',\n EXEMPT: 'exempt',\n EXTRACOM: 'extracom',\n INTRACOM_21: 'intracom_21',\n INTRACOM_55: 'intracom_55',\n INTRACOM_85: 'intracom_85',\n INTRACOM_100: 'intracom_100',\n CROSSBORDER: 'crossborder',\n FR_85_CONSTRUCTION: 'FR_85_construction',\n FR_100_CONSTRUCTION: 'FR_100_construction',\n FR_200_CONSTRUCTION: 'FR_200_construction',\n MIXED: 'mixed'\n} as const;\n\n/**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\nexport type VatRate = typeof VatRate[keyof typeof VatRate];\n\n/**\n * Customer Invoice Line\n */\nexport type CustomerInvoicesInvoiceLine = {\n /**\n * Invoice line id\n */\n id: number;\n /**\n * Invoice line label\n */\n label: string;\n /**\n * The kind of unit which applies to the amount\n */\n unit: string | null;\n /**\n * Invoice line item quantity (number of items)\n */\n quantity: string;\n /**\n * The total amount of the invoice lines in euros including taxes and deducting discounts\n */\n amount: string;\n /**\n * The total amount of the invoice lines in the document's currency including taxes and deducting discounts.\n * If the currency is euro, amount and currency_amount are identical.\n *\n */\n currency_amount: string;\n /**\n * Invoice line description\n */\n description: string;\n product: {\n /**\n * Product id\n */\n id: number;\n /**\n * URL to get the product.\n */\n url: string;\n } | null;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Total amount before tax in currency\n */\n currency_amount_before_tax: string;\n /**\n * Total tax amount in currency\n */\n currency_tax: string;\n /**\n * Total tax amount in euros\n */\n tax: string;\n /**\n * Unit price (excluding tax)\n */\n raw_currency_unit_price: string;\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the invoice\n */\n value: string;\n };\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank: number | null;\n imputation_dates: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n } | null;\n created_at: string;\n updated_at: string;\n};\n\n/**\n * Paginated collection of invoice lines for a specific invoice\n */\nexport type CustomerInvoicesIncludedInvoiceLinesCollection = {\n /**\n * Array of invoice lines (up to 20 items)\n */\n items: Array<{\n /**\n * Invoice line id\n */\n id: number;\n /**\n * Invoice line label\n */\n label: string;\n /**\n * The kind of unit which applies to the amount\n */\n unit: string | null;\n /**\n * Invoice line item quantity (number of items)\n */\n quantity: string;\n /**\n * The total amount of the invoice lines in euros including taxes and deducting discounts\n */\n amount: string;\n /**\n * The total amount of the invoice lines in the document's currency including taxes and deducting discounts.\n * If the currency is euro, amount and currency_amount are identical.\n *\n */\n currency_amount: string;\n /**\n * Invoice line description\n */\n description: string;\n product: {\n /**\n * Product id\n */\n id: number;\n /**\n * URL to get the product.\n */\n url: string;\n } | null;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Total amount before tax in currency\n */\n currency_amount_before_tax: string;\n /**\n * Total tax amount in currency\n */\n currency_tax: string;\n /**\n * Total tax amount in euros\n */\n tax: string;\n /**\n * Unit price (excluding tax)\n */\n raw_currency_unit_price: string;\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the invoice\n */\n value: string;\n };\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank: number | null;\n imputation_dates: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n } | null;\n created_at: string;\n updated_at: string;\n }>;\n /**\n * Whether more invoice lines exist beyond this set\n */\n has_more: boolean;\n /**\n * URL to fetch the next page of invoice lines (null if no more pages)\n */\n next_url: string | null;\n};\n\n/**\n * Optional included resources. Only present when the `include` parameter is used.\n * Each property corresponds to a requested inclusion and contains data keyed by parent invoice ID.\n *\n */\nexport type CustomerInvoicesInclusions = {\n /**\n * Container for all included resources\n */\n included?: {\n /**\n * Invoice lines grouped by parent invoice ID\n */\n invoice_lines?: {\n [key: string]: {\n /**\n * Array of invoice lines (up to 20 items)\n */\n items: Array<{\n /**\n * Invoice line id\n */\n id: number;\n /**\n * Invoice line label\n */\n label: string;\n /**\n * The kind of unit which applies to the amount\n */\n unit: string | null;\n /**\n * Invoice line item quantity (number of items)\n */\n quantity: string;\n /**\n * The total amount of the invoice lines in euros including taxes and deducting discounts\n */\n amount: string;\n /**\n * The total amount of the invoice lines in the document's currency including taxes and deducting discounts.\n * If the currency is euro, amount and currency_amount are identical.\n *\n */\n currency_amount: string;\n /**\n * Invoice line description\n */\n description: string;\n product: {\n /**\n * Product id\n */\n id: number;\n /**\n * URL to get the product.\n */\n url: string;\n } | null;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Total amount before tax in currency\n */\n currency_amount_before_tax: string;\n /**\n * Total tax amount in currency\n */\n currency_tax: string;\n /**\n * Total tax amount in euros\n */\n tax: string;\n /**\n * Unit price (excluding tax)\n */\n raw_currency_unit_price: string;\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the invoice\n */\n value: string;\n };\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank: number | null;\n imputation_dates: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n } | null;\n created_at: string;\n updated_at: string;\n }>;\n /**\n * Whether more invoice lines exist beyond this set\n */\n has_more: boolean;\n /**\n * URL to fetch the next page of invoice lines (null if no more pages)\n */\n next_url: string | null;\n };\n };\n };\n};\n\n/**\n * Product-based Invoice Line\n *\n * Provide only the product_id to automatically populate label,\n * raw_currency_unit_price, unit, vat_rate, and ledger_account_id.\n * You can override any of these fields by providing them explicitly.\n *\n */\nexport type CustomerInvoicesDraftInvoiceLineWithProductRequest = {\n /**\n * The product ID. Auto-fills label, raw_currency_unit_price, unit, vat_rate, and ledger_account_id from the product.\n */\n product_id: number;\n /**\n * Line item label\n */\n label?: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price?: string;\n /**\n * Line item unit (type of unit)\n */\n unit?: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n};\n\n/**\n * Standard Invoice Line\n *\n * Create an invoice line by providing all required fields explicitly\n * without referencing a product.\n *\n */\nexport type CustomerInvoicesDraftInvoiceLineWithoutProductRequest = {\n /**\n * Line item label\n */\n label: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Line item unit (type of unit)\n */\n unit: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n};\n\n/**\n * Draft Customer Invoice\n */\nexport type CustomerInvoicesPostDraftRequest = {\n /**\n * Invoice date (ISO 8601)\n */\n date: string;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string;\n /**\n * Customer identifier\n */\n customer_id: number;\n /**\n * The customer invoice template ID\n */\n customer_invoice_template_id?: number;\n /**\n * For example, the contact details of the person to contact\n */\n pdf_invoice_free_text?: string | null;\n /**\n * Invoice title\n */\n pdf_invoice_subject?: string | null;\n /**\n * Invoice description. Maximum 5,000 characters.\n */\n pdf_description?: string | null;\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Additional details. maximum 20,000 characters.\n */\n special_mention?: string | null;\n language?: 'fr_FR' | 'en_GB';\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the invoice\n */\n value: string;\n };\n invoice_line_sections?: Array<{\n /**\n * Title of the invoice line section\n */\n title?: string;\n /**\n * Description of the invoice line section\n */\n description?: string;\n /**\n * Defines the order in which sections will be displayed on the invoice. Each section has to have a different rank, starting from 1 and incrementing next values by 1\n */\n rank: number;\n }>;\n /**\n * A unique external reference you can provide to track this customer invoice. If not provided, Pennylane will generate an identifier for you.\n */\n external_reference?: string;\n /**\n * Indicates if the invoice is in draft status (has not been finalized)\n */\n draft: true;\n invoice_lines: Array<{\n /**\n * The product ID. Auto-fills label, raw_currency_unit_price, unit, vat_rate, and ledger_account_id from the product.\n */\n product_id: number;\n /**\n * Line item label\n */\n label?: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price?: string;\n /**\n * Line item unit (type of unit)\n */\n unit?: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n } | {\n /**\n * Line item label\n */\n label: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Line item unit (type of unit)\n */\n unit: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n }>;\n};\n\n/**\n * Product-based Invoice Line\n *\n * Provide only the product_id to automatically populate label,\n * raw_currency_unit_price, unit, vat_rate, and ledger_account_id.\n * You can override any of these fields by providing them explicitly.\n *\n */\nexport type CustomerInvoicesFinalizedInvoiceLineWithProductRequest = {\n /**\n * The product ID. Auto-fills label, raw_currency_unit_price, unit, vat_rate, and ledger_account_id from the product.\n */\n product_id: number;\n /**\n * Line item label\n */\n label?: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes\n */\n raw_currency_unit_price?: string;\n /**\n * Line item unit (type of unit)\n */\n unit?: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n imputation_dates?: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n } | null;\n};\n\n/**\n * Standard Invoice Line\n *\n * Create an invoice line by providing all required fields explicitly\n * without referencing a product.\n *\n */\nexport type CustomerInvoicesFinalizedInvoiceLineWithoutProductRequest = {\n /**\n * Line item label\n */\n label: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Line item unit (type of unit)\n */\n unit: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n imputation_dates?: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n } | null;\n};\n\n/**\n * Finalized Customer Invoice\n */\nexport type CustomerInvoicesPostFinalizedRequest = {\n /**\n * Invoice date (ISO 8601)\n */\n date: string;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string;\n /**\n * Customer identifier\n */\n customer_id: number;\n /**\n * The customer invoice template ID\n */\n customer_invoice_template_id?: number;\n /**\n * For example, the contact details of the person to contact\n */\n pdf_invoice_free_text?: string | null;\n /**\n * Invoice title\n */\n pdf_invoice_subject?: string | null;\n /**\n * Invoice description. Maximum 5,000 characters.\n */\n pdf_description?: string | null;\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Additional details. maximum 20,000 characters.\n */\n special_mention?: string | null;\n language?: 'fr_FR' | 'en_GB';\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the invoice\n */\n value: string;\n };\n invoice_line_sections?: Array<{\n /**\n * Title of the invoice line section\n */\n title?: string;\n /**\n * Description of the invoice line section\n */\n description?: string;\n /**\n * Defines the order in which sections will be displayed on the invoice. Each section has to have a different rank, starting from 1 and incrementing next values by 1\n */\n rank: number;\n }>;\n /**\n * A unique external reference you can provide to track this customer invoice. If not provided, Pennylane will generate an identifier for you.\n */\n external_reference?: string;\n /**\n * Indicates if the invoice is in draft status (has not been finalized)\n */\n draft?: false;\n /**\n * By adding this field you can automatically reconcile the newly created invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference?: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n };\n invoice_lines: Array<{\n /**\n * The product ID. Auto-fills label, raw_currency_unit_price, unit, vat_rate, and ledger_account_id from the product.\n */\n product_id: number;\n /**\n * Line item label\n */\n label?: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes\n */\n raw_currency_unit_price?: string;\n /**\n * Line item unit (type of unit)\n */\n unit?: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n imputation_dates?: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n } | null;\n } | {\n /**\n * Line item label\n */\n label: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Line item unit (type of unit)\n */\n unit: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n imputation_dates?: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n } | null;\n }>;\n};\n\nexport const BillingSubscriptionStatus = {\n DRAFT: 'draft',\n STOPPED: 'stopped',\n FINISHED: 'finished',\n PENDING: 'pending',\n NOT_STARTED: 'not_started',\n IN_PROGRESS: 'in_progress'\n} as const;\n\nexport type BillingSubscriptionStatus = typeof BillingSubscriptionStatus[keyof typeof BillingSubscriptionStatus];\n\n/**\n * - `awaiting_validation`: generated invoices will be in draft\n * - `finalized`: generated invoices will be finalized\n * - `email`: generated invoices will be finalized and sent by email to the recipients configured on the subscription\n *\n */\nexport const BillingSubscriptionMode = {\n AWAITING_VALIDATION: 'awaiting_validation',\n FINALIZED: 'finalized',\n EMAIL: 'email'\n} as const;\n\n/**\n * - `awaiting_validation`: generated invoices will be in draft\n * - `finalized`: generated invoices will be finalized\n * - `email`: generated invoices will be finalized and sent by email to the recipients configured on the subscription\n *\n */\nexport type BillingSubscriptionMode = typeof BillingSubscriptionMode[keyof typeof BillingSubscriptionMode];\n\nexport const BillingSubscriptionPaymentConditions = {\n UPON_RECEIPT: 'upon_receipt',\n '7_DAYS': '7_days',\n '15_DAYS': '15_days',\n '30_DAYS': '30_days',\n '30_DAYS_END_OF_MONTH': '30_days_end_of_month',\n '45_DAYS': '45_days',\n '45_DAYS_END_OF_MONTH': '45_days_end_of_month',\n '60_DAYS': '60_days'\n} as const;\n\nexport type BillingSubscriptionPaymentConditions = typeof BillingSubscriptionPaymentConditions[keyof typeof BillingSubscriptionPaymentConditions];\n\nexport const Null = { NULL: null } as const;\n\nexport type Null = typeof Null[keyof typeof Null];\n\n/**\n * Payment method\n * offline means the subscription is not linked to a payment method\n * gocardless_direct-debit means at each new occurrence the client will be automatically debited thanks to GoCardless. To do so, you need a GoCardless account properly configured.\n *\n */\nexport const BillingSubscriptionPaymentMethod = { OFFLINE: 'offline', GOCARDLESS_DIRECT_DEBIT: 'gocardless_direct_debit' } as const;\n\n/**\n * Payment method\n * offline means the subscription is not linked to a payment method\n * gocardless_direct-debit means at each new occurrence the client will be automatically debited thanks to GoCardless. To do so, you need a GoCardless account properly configured.\n *\n */\nexport type BillingSubscriptionPaymentMethod = typeof BillingSubscriptionPaymentMethod[keyof typeof BillingSubscriptionPaymentMethod];\n\nexport const BillingSubscriptionOcurrenceRuleType = {\n WEEKLY: 'weekly',\n MONTHLY: 'monthly',\n YEARLY: 'yearly'\n} as const;\n\nexport type BillingSubscriptionOcurrenceRuleType = typeof BillingSubscriptionOcurrenceRuleType[keyof typeof BillingSubscriptionOcurrenceRuleType];\n\nexport type BillingSubscriptionsResponse = {\n /**\n * Billing subscription identifier\n */\n id: number;\n /**\n * The date for the next subscription renewal\n */\n next_occurrence: string | null;\n /**\n * The date of the previous subscription renewal\n */\n prev_occurrence: string | null;\n /**\n * The exact timestamp when the subscription was terminated\n */\n stopped_at: string | null;\n /**\n * The subscription start date\n */\n start: string;\n /**\n * The date for when the subscription will end\n */\n finish: string | null;\n status: 'draft' | 'stopped' | 'finished' | 'pending' | 'not_started' | 'in_progress';\n /**\n * - `awaiting_validation`: generated invoices will be in draft\n * - `finalized`: generated invoices will be finalized\n * - `email`: generated invoices will be finalized and sent by email to the recipients configured on the subscription\n *\n */\n mode: 'awaiting_validation' | 'finalized' | 'email';\n /**\n * The exact timestamp for when the subscription was activated\n */\n activated_at: string | null;\n payment_conditions: 'upon_receipt' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days' | null;\n /**\n * Payment method\n * offline means the subscription is not linked to a payment method\n * gocardless_direct-debit means at each new occurrence the client will be automatically debited thanks to GoCardless. To do so, you need a GoCardless account properly configured.\n *\n */\n payment_method: 'offline' | 'gocardless_direct_debit';\n label: string | null;\n email_settings: {\n /**\n * Primary email recipients for invoice delivery\n */\n recipients: Array<string>;\n billing_email_template: {\n id: number;\n label: string;\n } | null;\n } | null;\n recurring_rule: {\n day_of_month: Array<number> | null;\n month_of_year: Array<number> | null;\n week_start: number | null;\n day: Array<number> | null;\n rule_type: 'weekly' | 'monthly' | 'yearly';\n interval: number | null;\n /**\n * Number of occurrences of the recurring rule\n */\n count: number | null;\n until: string | null;\n };\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n customer_invoice_data: {\n /**\n * Invoice label\n */\n label: string | null;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n language: 'fr_FR' | 'en_GB';\n customer_invoice_template: {\n id: number;\n } | null;\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax\n */\n value: string | null;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n /**\n * Additional details\n */\n special_mention: string | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the invoice.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n };\n /**\n * The time the subscription has been created\n */\n created_at: string;\n /**\n * The last time the subscription has been updated\n */\n updated_at: string;\n};\n\nexport type ProductsResponse = {\n id: number;\n /**\n * Product label\n */\n label: string;\n /**\n * Product description\n */\n description: string;\n /**\n * The unique external reference assigned to this Product, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * Product price without taxes\n */\n price_before_tax: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n price: string;\n /**\n * Product unit\n */\n unit: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Product reference\n */\n reference: string | null;\n ledger_account: {\n id: number;\n } | null;\n /**\n * The time the product has been archived\n */\n archived_at: string | null;\n created_at: string;\n updated_at: string;\n};\n\nexport type FileAttachmentsResponse = {\n id: number;\n /**\n * URL to the uploaded file.\n */\n url: string;\n filename: string;\n created_at: string;\n updated_at: string;\n};\n\nexport type CustomerInvoiceTemplatesResponse = {\n id: number;\n name: string;\n created_at: string;\n updated_at: string;\n};\n\n/**\n * The state of the export\n */\nexport const ExportStatus = {\n PENDING: 'pending',\n READY: 'ready',\n ERROR: 'error'\n} as const;\n\n/**\n * The state of the export\n */\nexport type ExportStatus = typeof ExportStatus[keyof typeof ExportStatus];\n\n/**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\nexport const PaymentConditions = {\n UPON_RECEIPT: 'upon_receipt',\n CUSTOM: 'custom',\n '7_DAYS': '7_days',\n '15_DAYS': '15_days',\n '30_DAYS': '30_days',\n '30_DAYS_END_OF_MONTH': '30_days_end_of_month',\n '45_DAYS': '45_days',\n '45_DAYS_END_OF_MONTH': '45_days_end_of_month',\n '60_DAYS': '60_days'\n} as const;\n\n/**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\nexport type PaymentConditions = typeof PaymentConditions[keyof typeof PaymentConditions];\n\n/**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\nexport const CustomerBillingLanguage = {\n FR_FR: 'fr_FR',\n EN_GB: 'en_GB',\n DE_DE: 'de_DE'\n} as const;\n\n/**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\nexport type CustomerBillingLanguage = typeof CustomerBillingLanguage[keyof typeof CustomerBillingLanguage];\n\nexport type CompanyCustomersResponse = {\n id: number;\n name: string;\n billing_iban: string | null;\n /**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\n payment_conditions: 'upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n /**\n * The name of the person to whom the invoice is addressed\n */\n recipient: string;\n phone: string;\n reference: string | null;\n notes: string | null;\n vat_number: string;\n reg_no: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n created_at: string;\n updated_at: string;\n /**\n * The unique external reference assigned to this customer, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language: 'fr_FR' | 'en_GB' | 'de_DE';\n /**\n * GoCardless mandates associated with this customer\n */\n mandates: {\n /**\n * URL to list GoCardless mandates associated with this customer\n */\n url: string;\n };\n contacts: {\n /**\n * URL to get the contacts of the customer.\n */\n url: string;\n };\n};\n\nexport type IndividualCustomersResponse = {\n id: number;\n name: string;\n billing_iban: string | null;\n /**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\n payment_conditions: 'upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n recipient: string;\n phone: string;\n reference: string | null;\n notes: string | null;\n first_name: string;\n last_name: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n created_at: string;\n updated_at: string;\n /**\n * The unique external reference assigned to this customer, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language: 'fr_FR' | 'en_GB' | 'de_DE';\n /**\n * GoCardless mandates associated with this customer\n */\n mandates: {\n /**\n * URL to list GoCardless mandates associated with this customer\n */\n url: string;\n };\n contacts: {\n /**\n * URL to get the contacts of the customer.\n */\n url: string;\n };\n};\n\nexport type CustomersResponse = {\n id: number;\n name: string;\n billing_iban: string | null;\n /**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\n payment_conditions: 'upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n /**\n * The name of the person to whom the invoice is addressed\n */\n recipient: string;\n phone: string;\n reference: string | null;\n notes: string | null;\n vat_number: string;\n reg_no: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n created_at: string;\n updated_at: string;\n customer_type: 'company';\n /**\n * The unique external reference assigned to this customer, assigned on creation either by you or Pennylane.\n */\n external_reference: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language: 'fr_FR' | 'en_GB' | 'de_DE';\n /**\n * GoCardless mandates associated with this customer\n */\n mandates: {\n /**\n * URL to list GoCardless mandates associated with this customer\n */\n url: string;\n };\n contacts: {\n /**\n * URL to get the contacts of the customer.\n */\n url: string;\n };\n} | {\n id: number;\n name: string;\n billing_iban: string | null;\n /**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\n payment_conditions: 'upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n recipient: string;\n phone: string;\n reference: string | null;\n notes: string | null;\n first_name: string;\n last_name: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n created_at: string;\n updated_at: string;\n customer_type: 'individual';\n /**\n * The unique external reference assigned to this customer, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language: 'fr_FR' | 'en_GB' | 'de_DE';\n /**\n * GoCardless mandates associated with this customer\n */\n mandates: {\n /**\n * URL to list GoCardless mandates associated with this customer\n */\n url: string;\n };\n contacts: {\n /**\n * URL to get the contacts of the customer.\n */\n url: string;\n };\n};\n\nexport type CustomersContactsResponse = {\n id: number;\n first_name: string;\n last_name: string;\n role: string;\n email: string;\n telephone_number: string;\n mobile_number: string;\n created_at: string;\n updated_at: string;\n};\n\nexport const SupplierPaymentMethod = {\n AUTOMATIC_TRANSFER: 'automatic_transfer',\n MANUAL_TRANSFER: 'manual_transfer',\n AUTOMATIC_DEBITING: 'automatic_debiting',\n BILL_OF_EXCHANGE: 'bill_of_exchange',\n CHECK: 'check',\n CASH: 'cash',\n CARD: 'card'\n} as const;\n\nexport type SupplierPaymentMethod = typeof SupplierPaymentMethod[keyof typeof SupplierPaymentMethod];\n\nexport const SupplierDueDateRule = { DAYS: 'days', DAYS_OR_END_OF_MONTH: 'days_or_end_of_month' } as const;\n\nexport type SupplierDueDateRule = typeof SupplierDueDateRule[keyof typeof SupplierDueDateRule];\n\nexport type SuppliersResponse = {\n id: number;\n name: string;\n /**\n * Supplier identification number (SIRET).\n * - 14-digit number combining SIREN (9 digits) and NIC (5 digits)\n * - Only applicable for French companies\n *\n */\n establishment_no: string | null;\n /**\n * Supplier registration number (SIREN).\n * - 9-digit number\n * - Only applicable for French companies\n *\n */\n reg_no: string | null;\n vat_number: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n /**\n * The IBAN of the supplier\n */\n iban: string;\n postal_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n supplier_payment_method: 'automatic_transfer' | 'manual_transfer' | 'automatic_debiting' | 'bill_of_exchange' | 'check' | 'cash' | 'card';\n supplier_due_date_delay: number | null;\n supplier_due_date_rule: 'days' | 'days_or_end_of_month';\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane\n */\n external_reference: string;\n created_at: string;\n updated_at: string;\n};\n\nexport const PaymentStatus = {\n INITIATED: 'initiated',\n PENDING: 'pending',\n EMITTED: 'emitted',\n FOUND: 'found',\n NOT_FOUND: 'not_found',\n ABORTED: 'aborted',\n ERROR: 'error',\n REFUNDED: 'refunded',\n PREPARED: 'prepared',\n PENDING_CUSTOMER_APPROVAL: 'pending_customer_approval',\n PENDING_SUBMISSION: 'pending_submission',\n SUBMITTED: 'submitted',\n CONFIRMED: 'confirmed',\n PAID_OUT: 'paid_out',\n CANCELLED: 'cancelled',\n CUSTOMER_APPROVAL_DENIED: 'customer_approval_denied',\n FAILED: 'failed',\n CHARGED_BACK: 'charged_back',\n RESUBMISSION_REQUESTED: 'resubmission_requested'\n} as const;\n\nexport type PaymentStatus = typeof PaymentStatus[keyof typeof PaymentStatus];\n\nexport type CustomerInvoicesMatchedTransactionsCategoriesResponse = {\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n};\n\nexport type CustomerInvoicesMatchedTransactionsResponse = {\n /**\n * Bank transaction identifier\n */\n id: number;\n label: string | null;\n /**\n * When `true`, the transaction need to be justified and matched with an invoice\n */\n attachment_required: boolean;\n date: string;\n /**\n * This is the balance of the bank transaction after it has been\n * processed.\n *\n */\n outstanding_balance: string | null;\n created_at: string;\n updated_at: string;\n archived_at: string | null;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL' | null;\n /**\n * Amount in the currency of the transaction.\n */\n currency_amount: string;\n /**\n * Transaction amount in euros. If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount: string;\n /**\n * Fee in the currency of the transaction.\n */\n currency_fee: string | null;\n /**\n * Transaction fee in euros. If the currency is euro, `currency_fee` and `fee`\n * are identical.\n *\n */\n fee: string | null;\n journal: {\n id: number;\n };\n bank_account: {\n id: number;\n url: string;\n };\n pro_account_expense: {\n employee: {\n id: number;\n first_name: string;\n last_name: string;\n } | null;\n card_masked_number: string;\n } | null;\n customer: {\n id: number;\n url: string;\n } | null;\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n};\n\nexport type CustomerInvoicesAppendicesResponse = {\n id: number;\n /**\n * URL to the uploaded file.\n */\n url: string;\n filename: string;\n created_at: string;\n updated_at: string;\n};\n\n/**\n * Draft Customer Invoice\n */\nexport type CustomerInvoicesPutDraftRequest = {\n /**\n * Invoice date (ISO 8601)\n */\n date?: string;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline?: string;\n /**\n * Customer identifier\n */\n customer_id?: number;\n /**\n * The customer invoice template ID\n */\n customer_invoice_template_id?: number;\n /**\n * For example, the contact details of the person to contact\n */\n pdf_invoice_free_text?: string | null;\n /**\n * Invoice title\n */\n pdf_invoice_subject?: string | null;\n /**\n * Invoice description. Maximum 5,000 characters.\n */\n pdf_description?: string | null;\n /**\n * Invoice Currency (ISO 4217). Default is EUR.\n */\n currency?: string;\n /**\n * Additional details. maximum 20,000 characters.\n */\n special_mention?: string | null;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string | null;\n };\n language?: 'fr_FR' | 'en_GB';\n /**\n * Add, update, delete invoice lines.\n */\n invoice_lines?: {\n create?: Array<{\n /**\n * The product ID. Auto-fills label, raw_currency_unit_price, unit, vat_rate, and ledger_account_id from the product.\n */\n product_id: number;\n /**\n * Line item label\n */\n label?: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price?: string;\n /**\n * Line item unit (type of unit)\n */\n unit?: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n } | {\n /**\n * Line item label\n */\n label: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Line item unit (type of unit)\n */\n unit: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n }>;\n update?: Array<{\n /**\n * ID of the invoice line\n */\n id: number;\n /**\n * Line item label\n */\n label?: string;\n /**\n * Line item quantity (number of items)\n */\n quantity?: number;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes. Can be set up to 6 decimals.\n */\n raw_currency_unit_price?: string;\n /**\n * Line item unit (type of unit)\n */\n unit?: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * The description of the invoice line\n */\n description?: string | null;\n /**\n * The product ID\n */\n product_id?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * Has to correspond to the rank number of an invoice line section in which the invoice line should be\n */\n section_rank?: number;\n }>;\n /**\n * Delete invoice lines. Any cutoffs (deferrals, assets, or advances)\n * associated with the deleted invoice lines will be automatically destroyed\n * unless they have generated ledger events, in which case deletion will fail.\n *\n */\n delete?: Array<{\n /**\n * ID of the invoice line\n */\n id: number;\n }>;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane.\n */\n external_reference?: string;\n};\n\n/**\n * Finalized Customer Invoice\n */\nexport type CustomerInvoicesPutFinalizedRequest = {\n /**\n * Schema for creating/updating a transaction reference\n */\n transaction_reference?: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n /**\n * Update invoice lines.\n */\n invoice_lines?: {\n update?: Array<{\n /**\n * Invoice line identifier\n */\n id: number;\n imputation_dates?: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n };\n }>;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane.\n */\n external_reference?: string;\n};\n\nexport type CustomerInvoicesCategoriesResponse = {\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n};\n\n/**\n * The accounting state of the invoice.\n * - `draft`: The invoice is not yet sent to the accountant.\n * - `archived`: The invoice has been archived.\n * - `entry`: The invoice is incomplete. Some information is missing on the invoice and needs to be completed by SME.\n * - `validation_needed`: The invoice is sent to the accountant and needs validation.\n * - `complete`: The invoice has been validated by the accountant.\n *\n */\nexport const InvoiceAccountantsStatus = {\n DRAFT: 'draft',\n ARCHIVED: 'archived',\n ENTRY: 'entry',\n VALIDATION_NEEDED: 'validation_needed',\n COMPLETE: 'complete'\n} as const;\n\n/**\n * The accounting state of the invoice.\n * - `draft`: The invoice is not yet sent to the accountant.\n * - `archived`: The invoice has been archived.\n * - `entry`: The invoice is incomplete. Some information is missing on the invoice and needs to be completed by SME.\n * - `validation_needed`: The invoice is sent to the accountant and needs validation.\n * - `complete`: The invoice has been validated by the accountant.\n *\n */\nexport type InvoiceAccountantsStatus = typeof InvoiceAccountantsStatus[keyof typeof InvoiceAccountantsStatus];\n\nexport const InvoicePaymentStatus = {\n TO_BE_PROCESSED: 'to_be_processed',\n TO_BE_PAID: 'to_be_paid',\n PARTIALLY_PAID: 'partially_paid',\n PAYMENT_ERROR: 'payment_error',\n PAYMENT_SCHEDULED: 'payment_scheduled',\n PAYMENT_IN_PROGRESS: 'payment_in_progress',\n PAYMENT_EMITTED: 'payment_emitted',\n PAYMENT_FOUND: 'payment_found',\n PAID_OFFLINE: 'paid_offline',\n FULLY_PAID: 'fully_paid'\n} as const;\n\nexport type InvoicePaymentStatus = typeof InvoicePaymentStatus[keyof typeof InvoicePaymentStatus];\n\nexport type SupplierInvoicesResponse = {\n /**\n * The ID of the supplier invoice\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros). If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros). If the currency is euro, `currency_tax` and `tax` are identical.\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n /**\n * Whether the invoice has been reconciled or not\n */\n reconciled: boolean;\n /**\n * The accounting state of the invoice.\n * - `draft`: The invoice is not yet sent to the accountant.\n * - `archived`: The invoice has been archived.\n * - `entry`: The invoice is incomplete. Some information is missing on the invoice and needs to be completed by SME.\n * - `validation_needed`: The invoice is sent to the accountant and needs validation.\n * - `complete`: The invoice has been validated by the accountant.\n *\n */\n accounting_status: 'draft' | 'archived' | 'entry' | 'validation_needed' | 'complete';\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n supplier: {\n id: number;\n /**\n * URL to get the supplier.\n */\n url: string;\n } | null;\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payment_status: 'to_be_processed' | 'to_be_paid' | 'partially_paid' | 'payment_error' | 'payment_scheduled' | 'payment_in_progress' | 'payment_emitted' | 'payment_found' | 'paid_offline' | 'fully_paid';\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n};\n\nexport type SupplierInvoicesCategoriesResponse = {\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n};\n\nexport type SupplierInvoicesMatchedTransactionsCategoriesResponse = {\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n};\n\nexport type SupplierInvoicesMatchedTransactionsResponse = {\n /**\n * Transaction identifier\n */\n id: number;\n label: string | null;\n /**\n * When `true`, the transaction need to be justified and matched with an invoice\n */\n attachment_required: boolean;\n date: string;\n /**\n * This is the balance of the transaction after it has been\n * processed.\n *\n */\n outstanding_balance: string | null;\n created_at: string;\n updated_at: string;\n archived_at: string | null;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL' | null;\n /**\n * Amount in the currency of the transaction.\n */\n currency_amount: string;\n /**\n * Transaction amount in euros. If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount: string;\n /**\n * Fee in the currency of the transaction.\n */\n currency_fee: string | null;\n /**\n * Transaction fee in euros. If the currency is euro, `currency_fee` and `fee`\n * are identical.\n *\n */\n fee: string | null;\n journal: {\n id: number;\n };\n bank_account: {\n id: number;\n url: string;\n };\n pro_account_expense: {\n employee: {\n id: number;\n first_name: string;\n last_name: string;\n } | null;\n card_masked_number: string;\n } | null;\n supplier: {\n id: number;\n url: string;\n } | null;\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n};\n\nexport type CategoryGroupsResponse = {\n id: number;\n label: string;\n categories: {\n /**\n * URL to get the categories of the group.\n */\n url: string;\n };\n created_at: string;\n updated_at: string;\n};\n\n/**\n * Only applicable for _treasury_ categories\n */\nexport const CategoryDirection = { CASH_IN: 'cash_in', CASH_OUT: 'cash_out' } as const;\n\n/**\n * Only applicable for _treasury_ categories\n */\nexport type CategoryDirection = typeof CategoryDirection[keyof typeof CategoryDirection];\n\nexport const Null2 = { NULL: null } as const;\n\nexport type Null2 = typeof Null2[keyof typeof Null2];\n\nexport type CategoriesResponse = {\n id: number;\n label: string;\n direction: 'cash_in' | 'cash_out' | null;\n created_at: string;\n updated_at: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n};\n\nexport type BankAccountsResponse = {\n id: number;\n name: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n created_at: string;\n updated_at: string;\n bank_establishment: {\n id: number;\n };\n journal: {\n id: number;\n url: string;\n } | null;\n ledger_account: {\n id: number;\n url: string;\n };\n};\n\nexport const AccountType = {\n CARD: 'card',\n SAVINGS: 'savings',\n SHARES: 'shares',\n LOAN: 'loan',\n LIFE_INSURANCE: 'life_insurance',\n OTHER: 'other',\n CHECKING: 'checking'\n} as const;\n\nexport type AccountType = typeof AccountType[keyof typeof AccountType];\n\nexport type TransactionsCategoriesResponse = {\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n};\n\nexport type TransactionsResponse = {\n /**\n * Transaction identifier\n */\n id: number;\n label: string | null;\n /**\n * When `true`, the transaction need to be justified and matched with an invoice\n */\n attachment_required: boolean;\n date: string;\n /**\n * This is the balance of the transaction after it has been\n * processed.\n *\n */\n outstanding_balance: string | null;\n created_at: string;\n updated_at: string;\n archived_at: string | null;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL' | null;\n /**\n * Amount in the currency of the transaction.\n */\n currency_amount: string;\n /**\n * Transaction amount in euros. If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount: string;\n /**\n * Fee in the currency of the transaction.\n */\n currency_fee: string | null;\n /**\n * Transaction fee in euros. If the currency is euro, `currency_fee` and `fee`\n * are identical.\n *\n */\n fee: string | null;\n journal: {\n id: number;\n url: string;\n };\n bank_account: {\n id: number;\n url: string;\n };\n pro_account_expense: {\n employee: {\n id: number;\n first_name: string;\n last_name: string;\n } | null;\n card_masked_number: string;\n } | null;\n customer: {\n id: number;\n url: string;\n } | null;\n supplier: {\n id: number;\n url: string;\n } | null;\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n matched_invoices: {\n url: string;\n };\n interbank_code: string | null;\n};\n\nexport type TransactionsCategoriesResponse2 = {\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n};\n\n/**\n * - accepted: quote has been accepted\n * - denied: quote has been denied\n * - expired: quote has expired\n * - invoiced: quote has been invoiced\n * - pending: quote to be denied or accepted\n *\n */\nexport const QuoteStatus = {\n PENDING: 'pending',\n ACCEPTED: 'accepted',\n DENIED: 'denied',\n INVOICED: 'invoiced',\n EXPIRED: 'expired'\n} as const;\n\n/**\n * - accepted: quote has been accepted\n * - denied: quote has been denied\n * - expired: quote has expired\n * - invoiced: quote has been invoiced\n * - pending: quote to be denied or accepted\n *\n */\nexport type QuoteStatus = typeof QuoteStatus[keyof typeof QuoteStatus];\n\nexport type QuotesResponse = {\n /**\n * Quote identifier\n */\n id: number;\n label: string | null;\n quote_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Quote amount (total value of the quote in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Quote currency amount (total value of the quote in the currency of the quote)\n */\n currency_amount: string;\n /**\n * Quote currency amount before tax (total value before tax of the quote in the currency of the quote)\n */\n currency_amount_before_tax: string;\n /**\n * Quote exchange rate (used to convert the quote to euros. If the quote currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Quote issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Quote expiration deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Quote taxable amount (in quote currency)\n */\n currency_tax: string;\n /**\n * Quote taxable amount (in quote currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * - accepted: quote has been accepted\n * - denied: quote has been denied\n * - expired: quote has expired\n * - invoiced: quote has been invoiced\n * - pending: quote to be denied or accepted\n *\n */\n status: 'pending' | 'accepted' | 'denied' | 'invoiced' | 'expired';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * Public URL of the quote file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the quote\n */\n filename: string | null;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the quote.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the quote.\n */\n url: string;\n };\n linked_invoices: {\n /**\n * URL to get the invoices linked to the quote.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n quote_template: {\n id: number;\n } | null;\n appendices: {\n /**\n * URL to get the appendices of the quote.\n */\n url: string;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the quote has been archived\n */\n archived_at: string | null;\n /**\n * The time the quote has been created\n */\n created_at: string;\n /**\n * The last time the quote has been updated\n */\n updated_at: string;\n};\n\n/**\n * Quote Request\n */\nexport type QuotesPostRequest = {\n /**\n * Quote date (ISO 8601)\n */\n date: string;\n /**\n * Quote validity deadline (ISO 8601)\n */\n deadline: string;\n /**\n * Customer identifier\n */\n customer_id: number;\n /**\n * The quote template ID\n */\n quote_template_id?: number;\n /**\n * For example, the contact details of the person to contact\n */\n pdf_invoice_free_text?: string | null;\n /**\n * Quote title\n */\n pdf_invoice_subject?: string | null;\n /**\n * Quote description\n */\n pdf_description?: string | null;\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Additional details\n */\n special_mention?: string | null;\n language?: 'fr_FR' | 'en_GB';\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the quote\n */\n value: string;\n };\n invoice_line_sections?: Array<{\n /**\n * Title of the invoice line section\n */\n title?: string;\n /**\n * Description of the invoice line section\n */\n description?: string;\n /**\n * Defines the order in which sections will be displayed on the quote. Each section has to have a different rank, starting from 1 and incrementing next values by 1\n */\n rank: number;\n }>;\n /**\n * A unique external reference you can provide to track this quote. If not provided, Pennylane will generate an identifier for you.\n */\n external_reference?: string;\n invoice_lines: Array<{\n /**\n * Line item label\n */\n label: string;\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Line item unit (type of unit)\n */\n unit: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * The description of the invoice line\n */\n description?: string | null;\n /**\n * The product ID\n */\n product_id?: number;\n }>;\n};\n\nexport type QuotesPutRequest = {\n /**\n * Quote date (ISO 8601)\n */\n date?: string;\n /**\n * Quote validity deadline (ISO 8601)\n */\n deadline?: string;\n /**\n * Customer identifier\n */\n customer_id?: number;\n /**\n * The quote template ID\n */\n quote_template_id?: number;\n /**\n * For example, the contact details of the person to contact\n */\n pdf_invoice_free_text?: string | null;\n /**\n * Quote title\n */\n pdf_invoice_subject?: string | null;\n /**\n * Quote description\n */\n pdf_description?: string | null;\n /**\n * Quote Currency (ISO 4217). Default is EUR.\n */\n currency?: string;\n /**\n * Additional details\n */\n special_mention?: string | null;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n language?: 'fr_FR' | 'en_GB';\n /**\n * Add, update, delete invoice lines.\n */\n invoice_lines?: {\n create?: Array<{\n /**\n * Invoice line label\n */\n label: string;\n /**\n * Invoice line quantity (number of items)\n */\n quantity: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes. Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Invoice line unit (type of unit)\n */\n unit: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * The description of the invoice line\n */\n description?: string | null;\n /**\n * The product ID\n */\n product_id?: number;\n /**\n * Has to correspond to the rank number of a quote line section in which the invoice line should be\n */\n section_rank?: number;\n }>;\n update?: Array<{\n /**\n * ID of the invoice line\n */\n id: number;\n /**\n * Line item label\n */\n label?: string;\n /**\n * Line item quantity (number of items)\n */\n quantity?: number;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes. Can be set up to 6 decimals.\n */\n raw_currency_unit_price?: string;\n /**\n * Line item unit (type of unit)\n */\n unit?: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * The description of the invoice line\n */\n description?: string | null;\n /**\n * The product ID\n */\n product_id?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * Has to correspond to the rank number of a quote line section in which the invoice line should be\n */\n section_rank?: number;\n }>;\n delete?: Array<{\n /**\n * ID of the invoice line\n */\n id: number;\n }>;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane.\n */\n external_reference?: string;\n};\n\nexport type QuotesAppendicesResponse = {\n id: number;\n /**\n * URL to the uploaded file.\n */\n url: string;\n filename: string;\n created_at: string;\n updated_at: string;\n};\n\nexport type QuotesInvoiceLinesResponse = {\n /**\n * Invoice line id\n */\n id: number;\n /**\n * Invoice line label\n */\n label: string;\n /**\n * The kind of unit which applies to the amount\n */\n unit: string | null;\n /**\n * Invoice line item quantity (number of items)\n */\n quantity: string;\n /**\n * The total amount of the invoice lines in euros including taxes and deducting discounts\n */\n amount: string;\n /**\n * The total amount of the invoice lines in the document's currency including taxes and deducting discounts.\n * If the currency is euro, amount and currency_amount are identical.\n *\n */\n currency_amount: string;\n /**\n * Invoice line description\n */\n description: string;\n product: {\n /**\n * Product id\n */\n id: number;\n /**\n * URL to get the product.\n */\n url: string;\n } | null;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Total amount before tax in currency\n */\n currency_amount_before_tax: string;\n /**\n * Total tax amount in currency\n */\n currency_tax: string;\n /**\n * Total tax amount in euros\n */\n tax: string;\n /**\n * Unit price (excluding tax)\n */\n raw_currency_unit_price: string;\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the invoice\n */\n value: string;\n };\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank: number | null;\n created_at: string;\n updated_at: string;\n};\n\nexport type QuotesInvoiceLineSectionsResponse = {\n /**\n * Invoice line section id\n */\n id: number;\n /**\n * Invoice line section label\n */\n title: string | null;\n /**\n * Invoice line section description\n */\n description: string | null;\n /**\n * The rank of the section in the quote. The rank is used to order the sections in the quote.\n */\n rank: number;\n created_at: string;\n updated_at: string;\n};\n\nexport const CommercialDocumentType = {\n PROFORMA: 'proforma',\n SHIPPING_ORDER: 'shipping_order',\n PURCHASING_ORDER: 'purchasing_order'\n} as const;\n\nexport type CommercialDocumentType = typeof CommercialDocumentType[keyof typeof CommercialDocumentType];\n\nexport type CommercialDocumentsResponse = {\n /**\n * Commercial document identifier\n */\n id: number;\n label: string | null;\n document_number: string;\n document_type: 'proforma' | 'shipping_order' | 'purchasing_order';\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Document amount (total value of the document in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Document currency amount (total value of the document in the currency of the document)\n */\n currency_amount: string;\n /**\n * Document currency amount before tax (total value before tax of the document in the currency of the document)\n */\n currency_amount_before_tax: string;\n /**\n * Document exchange rate (used to convert the document to euros. If the document currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Document issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Document deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Document taxable amount (in document currency)\n */\n currency_tax: string;\n /**\n * Document taxable amount (in document currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string | null;\n };\n /**\n * Public URL of the document file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the document\n */\n filename: string | null;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the document.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the document.\n */\n url: string;\n };\n quote: {\n id: number;\n /**\n * URL to get the quote.\n */\n url: string;\n } | null;\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n commercial_document_template: {\n id: number;\n } | null;\n appendices: {\n /**\n * URL to get the appendices of the document.\n */\n url: string;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the document has been archived\n */\n archived_at: string | null;\n /**\n * The time the document has been created\n */\n created_at: string;\n /**\n * The last time the document has been updated\n */\n updated_at: string;\n};\n\nexport type CommercialDocumentsAppendicesResponse = {\n id: number;\n /**\n * URL to the uploaded file.\n */\n url: string;\n filename: string;\n created_at: string;\n updated_at: string;\n};\n\n/**\n * SEPA mandate sequence type that defines the payment process.\n * - `FRST`: First payment in a series of recurring payments\n * - `OOFF`: One-off payment\n * - `RCUR`: Recurring payment that is not the first payment\n * - `FNAL`: Final payment in a series of recurring payments\n *\n */\nexport const SepaSequenceType = {\n FRST: 'FRST',\n OOFF: 'OOFF',\n RCUR: 'RCUR',\n FNAL: 'FNAL'\n} as const;\n\n/**\n * SEPA mandate sequence type that defines the payment process.\n * - `FRST`: First payment in a series of recurring payments\n * - `OOFF`: One-off payment\n * - `RCUR`: Recurring payment that is not the first payment\n * - `FNAL`: Final payment in a series of recurring payments\n *\n */\nexport type SepaSequenceType = typeof SepaSequenceType[keyof typeof SepaSequenceType];\n\nexport type SepaMandatesResponse = {\n /**\n * ID of the created SEPA mandate\n */\n id: number;\n /**\n * Name of the customer's bank\n */\n bank: string | null;\n /**\n * Bank Identifier Code (BIC) of the customer's bank\n */\n bic: string;\n /**\n * International Bank Account Number (IBAN) of the customer\n */\n iban: string;\n /**\n * SEPA mandate sequence type that defines the payment process.\n * - `FRST`: First payment in a series of recurring payments\n * - `OOFF`: One-off payment\n * - `RCUR`: Recurring payment that is not the first payment\n * - `FNAL`: Final payment in a series of recurring payments\n *\n */\n sequence_type: 'FRST' | 'OOFF' | 'RCUR' | 'FNAL';\n /**\n * Date when the mandate was signed\n */\n signed_at: string;\n /**\n * Unique identifier for the mandate\n */\n identifier: string;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n };\n /**\n * Creation date of the SEPA mandate\n */\n created_at: string;\n /**\n * Last update date of the SEPA mandate\n */\n updated_at: string;\n};\n\nexport const MandateStatus = {\n PENDING_CUSTOMER_APPROVAL: 'pending_customer_approval',\n PENDING_SUBMISSION: 'pending_submission',\n SUBMITTED: 'submitted',\n ACTIVE: 'active',\n FAILED: 'failed',\n CANCELLED: 'cancelled',\n EXPIRED: 'expired',\n CONSUMED: 'consumed',\n REPLACED: 'replaced',\n BLOCKED: 'blocked',\n BANK_DISCONNECTED: 'bank_disconnected'\n} as const;\n\nexport type MandateStatus = typeof MandateStatus[keyof typeof MandateStatus];\n\nexport type GocardlessMandatesResponse = {\n id: number;\n /**\n * Unique external identifier for the Gocardless mandate.\n */\n external_reference: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n status: 'pending_customer_approval' | 'pending_submission' | 'submitted' | 'active' | 'failed' | 'cancelled' | 'expired' | 'consumed' | 'replaced' | 'blocked' | 'bank_disconnected';\n /**\n * Identifier for the Gocardless customer account.\n */\n external_customer_account: string;\n /**\n * Label for the Gocardless customer account.\n */\n external_customer_label: string | null;\n /**\n * Creation date of the Gocardless mandate\n */\n created_at: string;\n /**\n * Last update date of the Gocardless mandate\n */\n updated_at: string;\n};\n\nexport const PurchaseRequestLineUnit = {\n PIECE: 'piece',\n HOUR: 'hour',\n DAY: 'day',\n MONTH: 'month',\n KILOGRAM: 'kilogram',\n M2: 'm2',\n M3: 'm3',\n TON: 'ton',\n MG: 'mg',\n NO_UNIT: 'no_unit'\n} as const;\n\nexport type PurchaseRequestLineUnit = typeof PurchaseRequestLineUnit[keyof typeof PurchaseRequestLineUnit];\n\nexport const PurchaseRequestStatuses = {\n TO_BE_VALIDATED: 'to_be_validated',\n APPROVED: 'approved',\n REJECTED: 'rejected',\n INVOICED: 'invoiced'\n} as const;\n\nexport type PurchaseRequestStatuses = typeof PurchaseRequestStatuses[keyof typeof PurchaseRequestStatuses];\n\nexport type PurchaseRequestsResponse = {\n /**\n * Purchase request identifier\n */\n id: number;\n /**\n * Purchase order number\n */\n purchase_order_number: string | null;\n supplier: {\n id: number;\n /**\n * URL to get the supplier.\n */\n url: string;\n };\n delivery_address: {\n address: string | null;\n postal_code: string | null;\n city: string | null;\n country_alpha2: string | null;\n };\n status: 'to_be_validated' | 'approved' | 'rejected' | 'invoiced';\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Reason of the request\n */\n reason: string;\n /**\n * Estimated delivery date for the purchase request\n */\n estimated_delivery_date: string | null;\n amount: unknown;\n /**\n * Purchase Request currency amount (total value of the purchase request in the currency of the purchase request)\n */\n currency_amount: string;\n /**\n * Purchase Request currency amount before tax (total value before tax of the purchase request in the currency of the purchase request)\n */\n currency_amount_before_tax: string;\n /**\n * Purchase request exchange rate (used to convert the purchase request to euros. If the purchase request currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Purchase request taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n /**\n * Purchase request taxable amount (in purchase request currency)\n */\n tax: string;\n purchase_order: {\n filename: string;\n url: string;\n } | null;\n linked_invoices: {\n /**\n * List of linked supplier invoices\n */\n items: Array<{\n id: number;\n /**\n * URL to get the supplier invoice.\n */\n url: string;\n }>;\n };\n /**\n * The time the purchase request has been created\n */\n created_at: string;\n /**\n * The last time the purchase request has been updated\n */\n updated_at: string;\n};\n\nexport type BankEstablishmentsResponse = {\n id: number;\n /**\n * Bank establishment name\n */\n name: string;\n created_at: string;\n updated_at: string;\n};\n\nexport type GetJournalsData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated, this is the current page which will be returned. The page index is starting at 1. This parameter is deprecated.\n *\n * @deprecated\n */\n page?: number;\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated. By default, you get 20 items per page. You can specify another number of items per page.\n *\n * @deprecated\n */\n per_page?: number;\n /**\n * This pagination system is only available in the new version of the API. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Use this to fetch the next set of results. The cursor is an opaque string returned in the previous response's metadata. Leave empty for the first request.\n */\n cursor?: string;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and values:\n * - `type`: `eq`, `not_eq`, `in`, `not_in`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields :\n * - `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/journals';\n};\n\nexport type GetJournalsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetJournalsError = GetJournalsErrors[keyof GetJournalsErrors];\n\nexport type GetJournalsResponses = {\n /**\n * List journals\n *\n * **DEPRECATED BEHAVIOR:**\n * By default, returns journals ordered by ascending IDs\n *\n * **NEW BEHAVIOR:**\n * By default, returns journals ordered by descending IDs\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n */\n 200: {\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The total number of pages available\n *\n *\n * @deprecated\n */\n total_pages: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The current page returned\n *\n *\n * @deprecated\n */\n current_page: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The total number of items available\n *\n *\n * @deprecated\n */\n total_items: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The number of items returned per page\n *\n *\n * @deprecated\n */\n per_page: number | null;\n items: Array<{\n code: string;\n id: number;\n label: string;\n type: string;\n }>;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean | null;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type GetJournalsResponse = GetJournalsResponses[keyof GetJournalsResponses];\n\nexport type PostJournalsData = {\n body: {\n /**\n * 2 to 5 letters that represents the journal\n */\n code: string;\n /**\n * Label that describes the journal\n */\n label: string;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/journals';\n};\n\nexport type PostJournalsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostJournalsError = PostJournalsErrors[keyof PostJournalsErrors];\n\nexport type PostJournalsResponses = {\n /**\n * Returns the created journal\n */\n 201: {\n code: string;\n id: number;\n label: string;\n type: string;\n };\n};\n\nexport type PostJournalsResponse = PostJournalsResponses[keyof PostJournalsResponses];\n\nexport type GetJournalData = {\n body?: never;\n path: {\n /**\n * The unique identifier of the journal\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/journals/{id}';\n};\n\nexport type GetJournalErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetJournalError = GetJournalErrors[keyof GetJournalErrors];\n\nexport type GetJournalResponses = {\n /**\n * Returns a journal\n */\n 200: {\n code: string;\n id: number;\n label: string;\n type: string;\n };\n};\n\nexport type GetJournalResponse = GetJournalResponses[keyof GetJournalResponses];\n\nexport type GetLedgerAccountsData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated, this is the current page which will be returned. The page index is starting at 1.\n *\n * @deprecated\n */\n page?: number;\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated. By default, you get 20 items per page. You can specify another number of items per page.\n *\n * @deprecated\n */\n per_page?: number;\n /**\n * This pagination system is only available in the new version of the API. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Use this to fetch the next set of results. The cursor is an opaque string returned in the previous response's metadata. Leave empty for the first request.\n */\n cursor?: string;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 1000.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and values:\n * - `id`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `number`: `start_with`, `eq`, `in`\n * - `enabled`: `eq`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields :\n * - `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/ledger_accounts';\n};\n\nexport type GetLedgerAccountsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetLedgerAccountsError = GetLedgerAccountsErrors[keyof GetLedgerAccountsErrors];\n\nexport type GetLedgerAccountsResponses = {\n /**\n * Returns a list of ledger accounts\n *\n * **DEPRECATED BEHAVIOR:**\n * By default, returns ledger accounts ordered by ascending IDs\n * **NEW BEHAVIOR:**\n * By default, returns ledger accounts ordered by descending IDs\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n */\n 200: {\n /**\n * The total number of pages available\n *\n * @deprecated\n */\n total_pages: number | null;\n /**\n * The current page returned\n *\n * @deprecated\n */\n current_page: number | null;\n /**\n * The total number of items available\n *\n * @deprecated\n */\n total_items: number | null;\n /**\n * The number of items returned per page\n *\n * @deprecated\n */\n per_page: number | null;\n items: Array<{\n id: number;\n number: string;\n label: string;\n /**\n * Ledger Account's VAT rate in percentage\n */\n vat_rate: string;\n /**\n * Ledger Account's country code (alpha2)\n */\n country_alpha2: string;\n enabled: boolean;\n type: string;\n letterable: boolean;\n /**\n * The time the ledger account has been created\n */\n created_at: string;\n /**\n * The last time the ledger account has been updated\n */\n updated_at: string;\n }>;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean | null;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type GetLedgerAccountsResponse = GetLedgerAccountsResponses[keyof GetLedgerAccountsResponses];\n\nexport type PostLedgerAccountsData = {\n body?: {\n /**\n * Ledger Account's number.\n * If the number starts with 401 (supplier) or 411 (customer) a corresponding supplier or company customer will also be created.\n *\n */\n number: string;\n /**\n * Ledger Account's label\n */\n label: string;\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_37' | 'CH_77' | 'CH_26' | 'CH_38' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'extracom' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'any' | 'mixed';\n country_alpha2?: 'AT' | 'BE' | 'BG' | 'CY' | 'CZ' | 'DE' | 'DK' | 'EE' | 'ES' | 'FI' | 'FR' | 'GR' | 'HR' | 'HU' | 'IE' | 'IT' | 'LT' | 'LU' | 'LV' | 'MT' | 'NL' | 'PL' | 'PT' | 'RO' | 'SE' | 'SI' | 'SK' | 'GB' | 'MC' | 'CH' | 'AD' | 'MU' | 'NO' | 'any';\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/ledger_accounts';\n};\n\nexport type PostLedgerAccountsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostLedgerAccountsError = PostLedgerAccountsErrors[keyof PostLedgerAccountsErrors];\n\nexport type PostLedgerAccountsResponses = {\n /**\n * Returns the created ledger account\n */\n 201: {\n id: number;\n number: string;\n label: string;\n /**\n * Ledger Account's VAT rate in percentage\n */\n vat_rate: string;\n /**\n * Ledger Account's country code (alpha2)\n */\n country_alpha2: string;\n enabled: boolean;\n type: string;\n letterable: boolean;\n /**\n * The time the ledger account has been created\n */\n created_at: string;\n /**\n * The last time the ledger account has been updated\n */\n updated_at: string;\n };\n};\n\nexport type PostLedgerAccountsResponse = PostLedgerAccountsResponses[keyof PostLedgerAccountsResponses];\n\nexport type GetLedgerAccountData = {\n body?: never;\n path: {\n /**\n * Ledger Account ID\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/ledger_accounts/{id}';\n};\n\nexport type GetLedgerAccountErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetLedgerAccountError = GetLedgerAccountErrors[keyof GetLedgerAccountErrors];\n\nexport type GetLedgerAccountResponses = {\n /**\n * Returns the ledger account\n */\n 200: {\n id: number;\n number: string;\n label: string;\n /**\n * Ledger Account's VAT rate in percentage\n */\n vat_rate: string;\n /**\n * Ledger Account's country code (alpha2)\n */\n country_alpha2: string;\n enabled: boolean;\n type: string;\n letterable: boolean;\n /**\n * The time the ledger account has been created\n */\n created_at: string;\n /**\n * The last time the ledger account has been updated\n */\n updated_at: string;\n };\n};\n\nexport type GetLedgerAccountResponse = GetLedgerAccountResponses[keyof GetLedgerAccountResponses];\n\nexport type UpdateLedgerAccountData = {\n body: {\n /**\n * Label that describes the ledger account\n */\n label?: string;\n /**\n * Whether the ledger entries of this ledger account are letterable\n */\n letterable?: boolean;\n };\n path: {\n /**\n * Ledger Account ID\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/ledger_accounts/{id}';\n};\n\nexport type UpdateLedgerAccountErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type UpdateLedgerAccountError = UpdateLedgerAccountErrors[keyof UpdateLedgerAccountErrors];\n\nexport type UpdateLedgerAccountResponses = {\n /**\n * Returns the updated ledger account\n */\n 200: {\n id: number;\n number: string;\n label: string;\n /**\n * Ledger Account's VAT rate in percentage\n */\n vat_rate: string;\n /**\n * Ledger Account's country code (alpha2)\n */\n country_alpha2: string;\n enabled: boolean;\n type: string;\n letterable: boolean;\n /**\n * The time the ledger account has been created\n */\n created_at: string;\n /**\n * The last time the ledger account has been updated\n */\n updated_at: string;\n };\n};\n\nexport type UpdateLedgerAccountResponse = UpdateLedgerAccountResponses[keyof UpdateLedgerAccountResponses];\n\nexport type GetLedgerAttachmentsData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Attachments are paginated, this is the current page which will be returned. The page index is starting at 1.\n */\n page?: number;\n /**\n * Attachments are paginated. By default, you get 20 attachments per page. You can specify another number of attachments per page.\n */\n per_page?: number;\n };\n url: '/api/external/v2/ledger_attachments';\n};\n\nexport type GetLedgerAttachmentsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetLedgerAttachmentsError = GetLedgerAttachmentsErrors[keyof GetLedgerAttachmentsErrors];\n\nexport type GetLedgerAttachmentsResponses = {\n /**\n * Returns a list of attachments\n */\n 200: {\n /**\n * The total number of pages available\n */\n total_pages: number;\n /**\n * The current page returned\n */\n current_page: number;\n /**\n * The number of items returned per page\n */\n per_page: number;\n /**\n * The total number of items available\n */\n total_items: number;\n items: Array<{\n id: number;\n filename: string;\n }>;\n };\n};\n\nexport type GetLedgerAttachmentsResponse = GetLedgerAttachmentsResponses[keyof GetLedgerAttachmentsResponses];\n\nexport type PostLedgerAttachmentsData = {\n body?: {\n /**\n * The file you want to upload.\n * Allowed content types:\n * - image/png\n * - image/jpeg\n * - image/tiff\n * - image/bmp\n * - image/gif\n * - application/pdf\n *\n */\n file: Blob | File;\n /**\n * Name of the file. If not provided, the default value will be the uploaded file name.\n */\n filename?: string;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/ledger_attachments';\n};\n\nexport type PostLedgerAttachmentsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type PostLedgerAttachmentsError = PostLedgerAttachmentsErrors[keyof PostLedgerAttachmentsErrors];\n\nexport type PostLedgerAttachmentsResponses = {\n /**\n * Returns the created attachment\n */\n 201: {\n url: string;\n id: number;\n filename: string;\n };\n};\n\nexport type PostLedgerAttachmentsResponse = PostLedgerAttachmentsResponses[keyof PostLedgerAttachmentsResponses];\n\nexport type GetLedgerEntriesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated, this is the current page which will be returned. The page index is starting at 1. This parameter is deprecated.\n *\n * @deprecated\n */\n page?: number;\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated. By default, you get 20 items per page. You can specify another number of items per page.\n *\n * @deprecated\n */\n per_page?: number;\n /**\n * This pagination system is only available in the new version of the API. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Use this to fetch the next set of results. The cursor is an opaque string returned in the previous response's metadata. Leave empty for the first request.\n */\n cursor?: string;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and values:\n * - 🆕 `id`: `lt, lteq, gt, gteq, eq, not_eq`, `in`, `not_in` (only available on the new version of the API : For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.)\n * - `date` `lt, lteq, gt, gteq, eq, not_eq`\n * - `journal_id`: `lt, lteq, gt, gteq, eq, not_eq`, `in`, `not_in`\n *\n * DEPRECATED :\n * - `updated_at`, `created_at`: `lt, lteq, gt, gteq, eq, not_eq`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `date` will sort by ascending order, `-date` will sort by descending order.\n * Available fields :\n * - 🆕 `id` (only available on the new version of the API : For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.)\n * - `date`\n *\n * DEPRECATED : `updated_at`, `created_at`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/ledger_entries';\n};\n\nexport type GetLedgerEntriesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetLedgerEntriesError = GetLedgerEntriesErrors[keyof GetLedgerEntriesErrors];\n\nexport type GetLedgerEntriesResponses = {\n /**\n * **DEPRECATED BEHAVIOR:**\n * Draft entries are filtered out.\n * By default, entries from fiscal periods that are closed or frozen are excluded.\n * However, if a 'date' filter is provided, it will return all entries within the specified date range, even if they fall within a closed or frozen fiscal period.\n *\n * **NEW BEHAVIOR :**\n * By default, all entries (including draft ones) are rendered regardless of their fiscal year status (open, closed, or frozen).\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n */\n 200: {\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The total number of pages available\n *\n *\n * @deprecated\n */\n total_pages: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The current page returned\n *\n *\n * @deprecated\n */\n current_page: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The total number of items available\n *\n *\n * @deprecated\n */\n total_items: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The number of items per page\n *\n *\n * @deprecated\n */\n per_page: number | null;\n items: Array<{\n /**\n * ID of the ledger entry\n */\n id: number;\n /**\n * Created at\n */\n created_at: string;\n /**\n * Last update\n */\n updated_at: string;\n /**\n * Label that describes the ledger entry\n */\n label: string | null;\n piece_number: string | null;\n /**\n * Date of the ledger entry (ISO 8601)\n */\n date: string | null;\n /**\n * The date the invoice is due\n */\n due_date: string | null;\n /**\n * This attribute is **deprecated**. Please use `journal` instead. The journal ID where the ledger entry was created\n *\n * @deprecated\n */\n journal_id: number;\n journal: {\n id: number;\n url: string;\n };\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n /**\n * This attribute is deprecated. Please use `filename` from `attachment` instead.\n *\n * @deprecated\n */\n ledger_attachment_filename: string | null;\n /**\n * The file attached to the ledger entry.\n */\n attachment: {\n filename: string;\n /**\n * URL to the uploaded file.\n */\n url: string;\n } | null;\n }>;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean | null;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type GetLedgerEntriesResponse = GetLedgerEntriesResponses[keyof GetLedgerEntriesResponses];\n\nexport type PostLedgerEntriesData = {\n body: {\n /**\n * Date of the ledger entry (ISO 8601)\n */\n date: string;\n /**\n * Due date of the ledger entry (ISO 8601)\n */\n due_date?: string | null;\n /**\n * Label that describes the ledger entry\n */\n label: string;\n /**\n * The journal ID where you want to create the ledger entry\n */\n journal_id: number;\n /**\n * Ledger attachment ID.\n *\n * > ⚠️ This attribute is deprecated and will be removed soon. Please use `file_attachment_id` instead.\n *\n *\n * @deprecated\n */\n ledger_attachment_id?: number;\n /**\n * File attachment ID (replaces deprecated `ledger_attachment_id`)\n */\n file_attachment_id?: number;\n /**\n * Currency code of the ledger entry as per ISO 4217. If not provided, EUR will be used. This currency is applicable to all ledger_entry_lines\n */\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHE' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MRU' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SLE' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * A piece number you can provide to track this ledger entry. If not provided, Pennylane will generate an identifier for you.\n */\n piece_number?: string;\n /**\n * Array of ledger entry lines. The entry lines must be\n * balanced. The max number of ledger entry lines that you can create\n * using this endpoint is 1000 per request.\n *\n */\n ledger_entry_lines: Array<{\n /**\n * Debit amount for the entry line\n */\n debit: string;\n /**\n * Credit amount for the entry line\n */\n credit: string;\n /**\n * Ledger account ID\n */\n ledger_account_id: number;\n /**\n * Label that describes the entry line\n */\n label?: string;\n }>;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/ledger_entries';\n};\n\nexport type PostLedgerEntriesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostLedgerEntriesError = PostLedgerEntriesErrors[keyof PostLedgerEntriesErrors];\n\nexport type PostLedgerEntriesResponses = {\n /**\n * Returns the created ledger entry\n */\n 201: {\n /**\n * ID of the ledger entry\n */\n id: number;\n /**\n * Label that describes the ledger entry\n */\n label: string;\n piece_number: string | null;\n /**\n * Date of the ledger entry (ISO 8601)\n */\n date: string;\n /**\n * The date the invoice is due\n */\n due_date: string | null;\n /**\n * This attribute is **deprecated**. Please use `journal` instead. The journal ID where the ledger entry was created\n *\n * @deprecated\n */\n journal_id: number;\n journal: {\n id: number;\n url: string;\n };\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n /**\n * This attribute is deprecated. Please use `filename` from `attachment` instead.\n *\n * @deprecated\n */\n ledger_attachment_filename: string | null;\n /**\n * This attribute is deprecated. Ledger attachment ID\n *\n * @deprecated\n */\n ledger_attachment_id: number | null;\n /**\n * The file attached to the ledger entry.\n */\n attachment: {\n filename: string;\n /**\n * URL to the uploaded file.\n */\n url: string;\n } | null;\n /**\n * Array of entry lines\n */\n ledger_entry_lines: Array<{\n /**\n * ID of the entry line\n */\n id: number;\n /**\n * Debit amount for the entry line\n */\n debit: string;\n /**\n * Credit amount for the entry line\n */\n credit: string;\n /**\n * This attribute is deprecated. Please use `id` from `ledger_account` instead.\n *\n * @deprecated\n */\n ledger_account_id: number;\n ledger_account: {\n /**\n * Ledger account ID\n */\n id: number;\n /**\n * Ledger account number\n */\n number: string;\n /**\n * The URL to the ledger account\n */\n url: string;\n };\n /**\n * Label that describes the entry line\n */\n label: string;\n }>;\n };\n};\n\nexport type PostLedgerEntriesResponse = PostLedgerEntriesResponses[keyof PostLedgerEntriesResponses];\n\nexport type GetLedgerEntryData = {\n body?: never;\n path: {\n /**\n * The unique identifier of the ledger entry\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/ledger_entries/{id}';\n};\n\nexport type GetLedgerEntryErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetLedgerEntryError = GetLedgerEntryErrors[keyof GetLedgerEntryErrors];\n\nexport type GetLedgerEntryResponses = {\n /**\n * Ledger entry details\n */\n 200: {\n /**\n * ID of the ledger entry\n */\n id: number;\n /**\n * Label that describes the ledger entry\n */\n label: string;\n piece_number: string | null;\n /**\n * Date of the ledger entry (ISO 8601)\n */\n date: string;\n /**\n * The date the invoice is due\n */\n due_date: string | null;\n /**\n * Created at\n */\n created_at: string;\n /**\n * Last update\n */\n updated_at: string;\n journal: {\n id: number;\n url: string;\n };\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n /**\n * The file attached to the ledger entry.\n */\n attachment: {\n filename: string;\n /**\n * URL to the uploaded file.\n */\n url: string;\n } | null;\n /**\n * Array of entry lines\n */\n ledger_entry_lines: Array<{\n /**\n * ID of the entry line\n */\n id: number;\n /**\n * Debit amount for the entry line\n */\n debit: string;\n /**\n * Credit amount for the entry line\n */\n credit: string;\n ledger_account: {\n /**\n * Ledger account ID\n */\n id: number;\n /**\n * Ledger account number\n */\n number: string;\n /**\n * The URL to the ledger account\n */\n url: string;\n };\n /**\n * Label that describes the entry line\n */\n label: string;\n }>;\n };\n};\n\nexport type GetLedgerEntryResponse = GetLedgerEntryResponses[keyof GetLedgerEntryResponses];\n\nexport type PutLedgerEntriesData = {\n body?: {\n /**\n * Date of the ledger entry (ISO 8601)\n */\n date?: string;\n /**\n * Label that describes the ledger entry\n */\n label?: string;\n /**\n * The journal ID where you want to create the ledger entry\n */\n journal_id?: number;\n /**\n * Ledger attachment ID.\n *\n * > ⚠️ This attribute is deprecated and will be removed soon. Please use `file_attachment_id` instead.\n *\n *\n * @deprecated\n */\n ledger_attachment_id?: number;\n /**\n * File attachment ID (replaces deprecated `ledger_attachment_id`)\n */\n file_attachment_id?: number;\n /**\n * Currency code of the ledger entry as per ISO 4217. This currency is applicable to all ledger_entry_lines\n */\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHE' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MRU' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SLE' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * The piece number that was assigned during creation either by you or Pennylane.\n */\n piece_number?: string;\n /**\n * Add, update, delete ledger entry lines. The entry lines must be balanced.\n * **In total**, max number of entry lines that you can create, update or delete using this endpoint is 1000 per request.\n *\n */\n ledger_entry_lines?: {\n create?: Array<{\n /**\n * Debit amount for the entry line\n */\n debit: string;\n /**\n * Credit amount for the entry line\n */\n credit: string;\n /**\n * Ledger account ID\n */\n ledger_account_id: number;\n /**\n * Label that describes the entry line\n */\n label?: string;\n }>;\n update?: Array<{\n /**\n * ID of the entry line\n */\n id: number;\n /**\n * Debit amount for the entry line\n */\n debit?: string;\n /**\n * Credit amount for the entry line\n */\n credit?: string;\n /**\n * Ledger account ID\n */\n ledger_account_id?: number;\n /**\n * Label that describes the entry line\n */\n label?: string;\n }>;\n delete?: Array<{\n /**\n * ID of the entry line\n */\n id: number;\n }>;\n };\n };\n path: {\n /**\n * The unique identifier of the ledger entry\n */\n id: string;\n };\n query?: never;\n url: '/api/external/v2/ledger_entries/{id}';\n};\n\nexport type PutLedgerEntriesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PutLedgerEntriesError = PutLedgerEntriesErrors[keyof PutLedgerEntriesErrors];\n\nexport type PutLedgerEntriesResponses = {\n /**\n * Returns the updated ledger entry\n */\n 200: {\n /**\n * ID of the ledger entry\n */\n id: number;\n /**\n * Label that describes the ledger entry\n */\n label: string;\n piece_number: string | null;\n /**\n * Date of the ledger entry (ISO 8601)\n */\n date: string;\n /**\n * The date the invoice is due\n */\n due_date: string | null;\n /**\n * This attribute is **deprecated**. Please use `journal` instead. The journal ID where the ledger entry was created\n *\n * @deprecated\n */\n journal_id: number;\n journal: {\n id: number;\n url: string;\n };\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n /**\n * This attribute is deprecated. Please use `filename` from `attachment` instead.\n *\n * @deprecated\n */\n ledger_attachment_filename: string | null;\n /**\n * This attribute is deprecated. Ledger attachment ID\n *\n * @deprecated\n */\n ledger_attachment_id: number | null;\n /**\n * The file attached to the ledger entry.\n */\n attachment: {\n filename: string;\n /**\n * URL to the uploaded file.\n */\n url: string;\n } | null;\n /**\n * Array of entry lines\n */\n ledger_entry_lines: Array<{\n /**\n * ID of the entry line\n */\n id: number;\n /**\n * Debit amount for the entry line\n */\n debit: string;\n /**\n * Credit amount for the entry line\n */\n credit: string;\n /**\n * This attribute is deprecated. Please use `id` from `ledger_account` instead.\n *\n * @deprecated\n */\n ledger_account_id: number;\n ledger_account: {\n /**\n * Ledger account ID\n */\n id: number;\n /**\n * Ledger account number\n */\n number: string;\n /**\n * The URL to the ledger account\n */\n url: string;\n };\n /**\n * Label that describes the entry line\n */\n label: string;\n }>;\n };\n};\n\nexport type PutLedgerEntriesResponse = PutLedgerEntriesResponses[keyof PutLedgerEntriesResponses];\n\nexport type GetLedgerEntriesLedgerEntryLinesData = {\n body?: never;\n path: {\n /**\n * Existing Ledger Entry (id)\n */\n ledger_entry_id: number;\n };\n query?: {\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated, this is the current page which will be returned. The page index is starting at 1.\n *\n * @deprecated\n */\n page?: number;\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated. By default, you get 20 items per page. You can specify another number of items per page.\n *\n * @deprecated\n */\n per_page?: number;\n /**\n * This pagination system is only available in the new version of the API. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Use this to fetch the next set of results. The cursor is an opaque string returned in the previous response's metadata. Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields : `ledger_account_id`\n * Available operators : `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields :\n * - `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/ledger_entries/{ledger_entry_id}/ledger_entry_lines';\n};\n\nexport type GetLedgerEntriesLedgerEntryLinesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetLedgerEntriesLedgerEntryLinesError = GetLedgerEntriesLedgerEntryLinesErrors[keyof GetLedgerEntriesLedgerEntryLinesErrors];\n\nexport type GetLedgerEntriesLedgerEntryLinesResponses = {\n /**\n * Returns Ledger Entry lines of requested Ledger Entry\n *\n * **DEPRECATED BEHAVIOR:**\n * By default, returns ledger entry lines ordered by ascending IDs\n * **NEW BEHAVIOR:**\n * By default, returns ledger entry lines ordered by descending IDs\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n */\n 200: {\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The total number of pages available\n *\n *\n * @deprecated\n */\n total_pages: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The current page returned\n *\n *\n * @deprecated\n */\n current_page: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The total number of items available\n *\n *\n * @deprecated\n */\n total_items: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The number of items per page\n *\n *\n * @deprecated\n */\n per_page: number | null;\n /**\n * Array of entry lines of requested Ledger Entry\n */\n items: Array<{\n /**\n * ID of the entry line\n */\n id: number;\n /**\n * Debit amount for the entry line\n */\n debit: string;\n /**\n * Credit amount for the entry line\n */\n credit: string;\n /**\n * Label that describes the entry line\n */\n label: string;\n /**\n * This attribute is deprecated. Please use `id` from `ledger_account` instead.\n *\n * @deprecated\n */\n ledger_account_id: number;\n ledger_account: {\n /**\n * Ledger account ID\n */\n id: number;\n /**\n * Ledger account number\n */\n number: string;\n /**\n * The URL to the ledger account\n */\n url: string;\n };\n }>;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean | null;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type GetLedgerEntriesLedgerEntryLinesResponse = GetLedgerEntriesLedgerEntryLinesResponses[keyof GetLedgerEntriesLedgerEntryLinesResponses];\n\nexport type GetLedgerEntryLinesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields : `id`, `journal_id`, `ledger_account_id`, `date`\n * Available operators : `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`, `date`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/ledger_entry_lines';\n};\n\nexport type GetLedgerEntryLinesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetLedgerEntryLinesError = GetLedgerEntryLinesErrors[keyof GetLedgerEntryLinesErrors];\n\nexport type GetLedgerEntryLinesResponses = {\n /**\n * Returns ledger entry lines\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * ID of the entry line\n */\n id: number;\n /**\n * Debit amount for the entry line\n */\n debit: string;\n /**\n * Credit amount for the entry line\n */\n credit: string;\n /**\n * Label that describes the entry line\n */\n label: string;\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n ledger_account: {\n /**\n * Ledger account ID\n */\n id: number;\n /**\n * Ledger account number\n */\n number: string;\n /**\n * The URL to the ledger account\n */\n url: string;\n };\n journal: {\n /**\n * Journal ID\n */\n id: number;\n /**\n * The URL to the journal\n */\n url: string;\n };\n /**\n * Date of the ledger entry line (ISO 8601)\n */\n date: string;\n ledger_entry: {\n /**\n * The ledger entry ID of the ledger entry line\n */\n id: number;\n };\n /**\n * Ledger entry lines that are lettered with this entry line.\n */\n lettered_ledger_entry_lines: {\n /**\n * IDs of all ledger entry lines that share the same lettering, including the ID of this entry line itself. Will be empty if this entry line is not lettered.\n */\n ids: Array<number>;\n /**\n * URL to fetch the lettered ledger entry lines.\n */\n url: string;\n };\n /**\n * The time the entry line has been created\n */\n created_at: string;\n /**\n * The last time the entry line has been updated\n */\n updated_at: string;\n }>;\n };\n};\n\nexport type GetLedgerEntryLinesResponse = GetLedgerEntryLinesResponses[keyof GetLedgerEntryLinesResponses];\n\nexport type GetLedgerEntryLineData = {\n body?: never;\n path: {\n /**\n * The unique identifier of the ledger entry line\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/ledger_entry_lines/{id}';\n};\n\nexport type GetLedgerEntryLineErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetLedgerEntryLineError = GetLedgerEntryLineErrors[keyof GetLedgerEntryLineErrors];\n\nexport type GetLedgerEntryLineResponses = {\n /**\n * A ledger entry line\n */\n 200: {\n /**\n * ID of the entry line\n */\n id: number;\n /**\n * Debit amount for the entry line\n */\n debit: string;\n /**\n * Credit amount for the entry line\n */\n credit: string;\n /**\n * Label that describes the entry line\n */\n label: string;\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n ledger_account: {\n /**\n * Ledger account ID\n */\n id: number;\n /**\n * Ledger account number\n */\n number: string;\n /**\n * The URL to the ledger account\n */\n url: string;\n };\n journal: {\n /**\n * Journal ID\n */\n id: number;\n /**\n * The URL to the journal\n */\n url: string;\n };\n /**\n * Date of the ledger entry line (ISO 8601)\n */\n date: string;\n ledger_entry: {\n /**\n * The ledger entry ID of the ledger entry line\n */\n id: number;\n };\n /**\n * Ledger entry lines that are lettered with this entry line.\n */\n lettered_ledger_entry_lines: {\n /**\n * IDs of all ledger entry lines that share the same lettering, including the ID of this entry line itself. Will be empty if this entry line is not lettered.\n */\n ids: Array<number>;\n /**\n * URL to fetch the lettered ledger entry lines.\n */\n url: string;\n };\n /**\n * The time the entry line has been created\n */\n created_at: string;\n /**\n * The last time the entry line has been updated\n */\n updated_at: string;\n };\n};\n\nexport type GetLedgerEntryLineResponse = GetLedgerEntryLineResponses[keyof GetLedgerEntryLineResponses];\n\nexport type DeleteLedgerEntryLinesUnletterData = {\n body?: {\n /**\n * - `none`: the API won't let you create an unbalanced lettering\n * and will respond with an error.\n * - `partial`: a potentially unbalanced lettering will be created.\n *\n */\n unbalanced_lettering_strategy: 'none' | 'partial';\n /**\n * The list of ledger entry lines you want to unletter.\n */\n ledger_entry_lines: Array<{\n /**\n * Id of the ledger entry line\n */\n id: number;\n }>;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/ledger_entry_lines/lettering';\n};\n\nexport type DeleteLedgerEntryLinesUnletterErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type DeleteLedgerEntryLinesUnletterError = DeleteLedgerEntryLinesUnletterErrors[keyof DeleteLedgerEntryLinesUnletterErrors];\n\nexport type DeleteLedgerEntryLinesUnletterResponses = {\n /**\n * No content\n */\n 204: void;\n};\n\nexport type DeleteLedgerEntryLinesUnletterResponse = DeleteLedgerEntryLinesUnletterResponses[keyof DeleteLedgerEntryLinesUnletterResponses];\n\nexport type PostLedgerEntryLinesLetterData = {\n body?: {\n /**\n * - `none`: the API won't let you create an unbalanced lettering\n * and will respond with an error.\n * - `partial`: a potentially unbalanced lettering will be created.\n *\n */\n unbalanced_lettering_strategy: 'none' | 'partial';\n /**\n * The list of ledger entry lines you want to letter together.\n *\n * You can provide ledger entry lines already lettered and they don't have to be part of the same lettering.\n *\n * All received entry lines will be lettered together. If a passed entry line is already lettered, then the lettering will be applied to its lettered entry lines as well. For example:\n * Ledger entry lines `A` and `B` are already lettered together. `C` in not lettered.\n * When requesting `[A, C]` to be lettered, the final lettering will be `[A, B, C]`.\n *\n */\n ledger_entry_lines: Array<{\n /**\n * Id of the ledger entry line\n */\n id: number;\n }>;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/ledger_entry_lines/lettering';\n};\n\nexport type PostLedgerEntryLinesLetterErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostLedgerEntryLinesLetterError = PostLedgerEntryLinesLetterErrors[keyof PostLedgerEntryLinesLetterErrors];\n\nexport type PostLedgerEntryLinesLetterResponses = {\n /**\n * An array containing all the ledger entry lines of the new lettering\n */\n 200: Array<{\n /**\n * Id of the ledger entry line\n */\n id: number;\n }>;\n};\n\nexport type PostLedgerEntryLinesLetterResponse = PostLedgerEntryLinesLetterResponses[keyof PostLedgerEntryLinesLetterResponses];\n\nexport type GetLedgerEntryLinesLetteredLedgerEntryLinesData = {\n body?: never;\n path: {\n /**\n * Ledger Entry line (id)\n */\n ledger_entry_line_id: number;\n };\n query?: {\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated, this is the current page which will be returned. The page index is starting at 1. This parameter is deprecated.\n *\n * @deprecated\n */\n page?: number;\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated. By default, you get 20 items per page. You can specify another number of items per page.\n * deprecated: true\n */\n per_page?: number;\n /**\n * This pagination system is only available in the new version of the API. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Use this to fetch the next set of results. The cursor is an opaque string returned in the previous response's metadata. Leave empty for the first request.\n */\n cursor?: string;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * Only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`, `date`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/ledger_entry_lines/{ledger_entry_line_id}/lettered_ledger_entry_lines';\n};\n\nexport type GetLedgerEntryLinesLetteredLedgerEntryLinesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetLedgerEntryLinesLetteredLedgerEntryLinesError = GetLedgerEntryLinesLetteredLedgerEntryLinesErrors[keyof GetLedgerEntryLinesLetteredLedgerEntryLinesErrors];\n\nexport type GetLedgerEntryLinesLetteredLedgerEntryLinesResponses = {\n /**\n * Returns a list of ledger entry lines\n */\n 200: {\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The total number of pages available\n *\n *\n * @deprecated\n */\n total_pages: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The current page returned\n *\n *\n * @deprecated\n */\n current_page: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The number of items returned per page\n *\n *\n * @deprecated\n */\n per_page: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The total number of items available\n *\n *\n * @deprecated\n */\n total_items: number | null;\n items: Array<{\n /**\n * ID of the entry line\n */\n id: number;\n /**\n * Debit amount for the entry line\n */\n debit: string;\n /**\n * Credit amount for the entry line\n */\n credit: string;\n /**\n * Label that describes the entry line\n */\n label: string;\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n ledger_account: {\n /**\n * Ledger account ID\n */\n id: number;\n /**\n * Ledger account number\n */\n number: string;\n /**\n * The URL to the ledger account\n */\n url: string;\n };\n journal: {\n /**\n * Journal ID\n */\n id: number;\n /**\n * The URL to the journal\n */\n url: string;\n };\n /**\n * Date of the ledger entry line (ISO 8601)\n */\n date: string;\n ledger_entry: {\n /**\n * The ledger entry ID of the ledger entry line\n */\n id: number;\n };\n /**\n * Ledger entry lines that are lettered with this entry line.\n */\n lettered_ledger_entry_lines: {\n /**\n * IDs of all ledger entry lines that share the same lettering, including the ID of this entry line itself. Will be empty if this entry line is not lettered.\n */\n ids: Array<number>;\n /**\n * URL to fetch the lettered ledger entry lines.\n */\n url: string;\n };\n /**\n * The time the entry line has been created\n */\n created_at: string;\n /**\n * The last time the entry line has been updated\n */\n updated_at: string;\n }>;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean | null;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type GetLedgerEntryLinesLetteredLedgerEntryLinesResponse = GetLedgerEntryLinesLetteredLedgerEntryLinesResponses[keyof GetLedgerEntryLinesLetteredLedgerEntryLinesResponses];\n\nexport type GetLedgerEntryLinesCategoriesData = {\n body?: never;\n path: {\n /**\n * Existing Ledger Entry line (id)\n */\n ledger_entry_line_id: number;\n };\n query?: {\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated, this is the current page which will be returned. The page index is starting at 1.\n *\n * @deprecated\n */\n page?: number;\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated. By default, you get 20 items per page. You can specify another number of items per page.\n *\n * @deprecated\n */\n per_page?: number;\n /**\n * This pagination system is only available in the new version of the API. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Use this to fetch the next set of results. The cursor is an opaque string returned in the previous response's metadata. Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields :\n * - `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/ledger_entry_lines/{ledger_entry_line_id}/categories';\n};\n\nexport type GetLedgerEntryLinesCategoriesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetLedgerEntryLinesCategoriesError = GetLedgerEntryLinesCategoriesErrors[keyof GetLedgerEntryLinesCategoriesErrors];\n\nexport type GetLedgerEntryLinesCategoriesResponses = {\n /**\n * The list of categories of the Ledger Entry line\n */\n 200: {\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The total number of pages available\n *\n *\n * @deprecated\n */\n total_pages: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The current page returned\n *\n *\n * @deprecated\n */\n current_page: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The total number of items available\n *\n *\n * @deprecated\n */\n total_items: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The number of items per page\n *\n *\n * @deprecated\n */\n per_page: number | null;\n items: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean | null;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type GetLedgerEntryLinesCategoriesResponse = GetLedgerEntryLinesCategoriesResponses[keyof GetLedgerEntryLinesCategoriesResponses];\n\nexport type PutLedgerEntryLinesCategoriesData = {\n body: Array<{\n id: number;\n /**\n * A number between `0` and `1`, including `1`. It must have a maximum of 4 decimals. `0.85` means 85%.\n */\n weight: string;\n }> | {\n /**\n * Analytical Categories IDs linked to the Ledger Entry line\n */\n categories_ids: Array<number>;\n };\n path: {\n /**\n * Existing Ledger Entry line (id)\n */\n ledger_entry_line_id: number;\n };\n query?: never;\n url: '/api/external/v2/ledger_entry_lines/{ledger_entry_line_id}/categories';\n};\n\nexport type PutLedgerEntryLinesCategoriesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PutLedgerEntryLinesCategoriesError = PutLedgerEntryLinesCategoriesErrors[keyof PutLedgerEntryLinesCategoriesErrors];\n\nexport type PutLedgerEntryLinesCategoriesResponses = {\n /**\n * Returns the Ledger Entry line with attached Analytical Categories\n */\n 200: {\n ledger_entry_line: {\n id: number;\n label: string;\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n };\n };\n};\n\nexport type PutLedgerEntryLinesCategoriesResponse = PutLedgerEntryLinesCategoriesResponses[keyof PutLedgerEntryLinesCategoriesResponses];\n\nexport type GetCustomerInvoicesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and values:\n * - `id`, `date`, `customer_id`, `billing_subscription_id`, `quote_id`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `invoice_number`: `eq`, `not_eq`, `in`, `not_in`\n * - `draft`: `eq` (boolean)\n * - `credit_note`: `eq` (boolean)\n * - `external_reference`: `eq`\n * - `category_id`: `in`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`, `date`\n *\n */\n sort?: string;\n /**\n * You can choose to include additional related resources in the response.\n * When specified, related resources will be returned in a separate `included` section.\n * Available includes: `invoice_lines`\n *\n * ⚠️ **Warning**: This feature is currently experimental and may change or be removed in future releases.\n * We recommend using it with caution in production environments.\n *\n */\n include?: string;\n };\n url: '/api/external/v2/customer_invoices';\n};\n\nexport type GetCustomerInvoicesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCustomerInvoicesError = GetCustomerInvoicesErrors[keyof GetCustomerInvoicesErrors];\n\nexport type GetCustomerInvoicesResponses = {\n /**\n * A list of Customer Invoices and/or credit notes\n */\n 200: {\n /**\n * Array of customer invoices\n */\n items: Array<{\n /**\n * Invoice identifier\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * Invoice paid status (set to True if the invoice is paid)\n */\n paid: boolean;\n status: 'archived' | 'incomplete' | 'cancelled' | 'paid' | 'partially_cancelled' | 'upcoming' | 'late' | 'draft' | 'credit_note';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n /**\n * Indicates if the invoice is in draft (has not been finalized)\n */\n draft: boolean;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the invoice.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n custom_header_fields: {\n /**\n * URL to get the custom header fields of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n billing_subscription: {\n id: number;\n } | null;\n /**\n * The credited invoice if the invoice is a credit note.\n */\n credited_invoice: {\n id: number;\n /**\n * URL to get the credited invoice.\n */\n url: string;\n } | null;\n customer_invoice_template: {\n id: number;\n } | null;\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n appendices: {\n /**\n * URL to get the appendices of the invoice.\n */\n url: string;\n };\n /**\n * The quote at the origin of the invoice\n */\n quote: {\n id: number;\n } | null;\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n }>;\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n } & {\n /**\n * Container for all included resources\n */\n included?: {\n /**\n * Invoice lines grouped by parent invoice ID\n */\n invoice_lines?: {\n [key: string]: {\n /**\n * Array of invoice lines (up to 20 items)\n */\n items: Array<{\n /**\n * Invoice line id\n */\n id: number;\n /**\n * Invoice line label\n */\n label: string;\n /**\n * The kind of unit which applies to the amount\n */\n unit: string | null;\n /**\n * Invoice line item quantity (number of items)\n */\n quantity: string;\n /**\n * The total amount of the invoice lines in euros including taxes and deducting discounts\n */\n amount: string;\n /**\n * The total amount of the invoice lines in the document's currency including taxes and deducting discounts.\n * If the currency is euro, amount and currency_amount are identical.\n *\n */\n currency_amount: string;\n /**\n * Invoice line description\n */\n description: string;\n product: {\n /**\n * Product id\n */\n id: number;\n /**\n * URL to get the product.\n */\n url: string;\n } | null;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Total amount before tax in currency\n */\n currency_amount_before_tax: string;\n /**\n * Total tax amount in currency\n */\n currency_tax: string;\n /**\n * Total tax amount in euros\n */\n tax: string;\n /**\n * Unit price (excluding tax)\n */\n raw_currency_unit_price: string;\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the invoice\n */\n value: string;\n };\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank: number | null;\n imputation_dates: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n } | null;\n created_at: string;\n updated_at: string;\n }>;\n /**\n * Whether more invoice lines exist beyond this set\n */\n has_more: boolean;\n /**\n * URL to fetch the next page of invoice lines (null if no more pages)\n */\n next_url: string | null;\n };\n };\n };\n };\n};\n\nexport type GetCustomerInvoicesResponse = GetCustomerInvoicesResponses[keyof GetCustomerInvoicesResponses];\n\nexport type PostCustomerInvoicesData = {\n body: {\n /**\n * Invoice date (ISO 8601)\n */\n date: string;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string;\n /**\n * Customer identifier\n */\n customer_id: number;\n /**\n * The customer invoice template ID\n */\n customer_invoice_template_id?: number;\n /**\n * For example, the contact details of the person to contact\n */\n pdf_invoice_free_text?: string | null;\n /**\n * Invoice title\n */\n pdf_invoice_subject?: string | null;\n /**\n * Invoice description. Maximum 5,000 characters.\n */\n pdf_description?: string | null;\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Additional details. maximum 20,000 characters.\n */\n special_mention?: string | null;\n language?: 'fr_FR' | 'en_GB';\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the invoice\n */\n value: string;\n };\n invoice_line_sections?: Array<{\n /**\n * Title of the invoice line section\n */\n title?: string;\n /**\n * Description of the invoice line section\n */\n description?: string;\n /**\n * Defines the order in which sections will be displayed on the invoice. Each section has to have a different rank, starting from 1 and incrementing next values by 1\n */\n rank: number;\n }>;\n /**\n * A unique external reference you can provide to track this customer invoice. If not provided, Pennylane will generate an identifier for you.\n */\n external_reference?: string;\n /**\n * Indicates if the invoice is in draft status (has not been finalized)\n */\n draft: true;\n invoice_lines: Array<{\n /**\n * The product ID. Auto-fills label, raw_currency_unit_price, unit, vat_rate, and ledger_account_id from the product.\n */\n product_id: number;\n /**\n * Line item label\n */\n label?: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price?: string;\n /**\n * Line item unit (type of unit)\n */\n unit?: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n } | {\n /**\n * Line item label\n */\n label: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Line item unit (type of unit)\n */\n unit: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n }>;\n } | {\n /**\n * Invoice date (ISO 8601)\n */\n date: string;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string;\n /**\n * Customer identifier\n */\n customer_id: number;\n /**\n * The customer invoice template ID\n */\n customer_invoice_template_id?: number;\n /**\n * For example, the contact details of the person to contact\n */\n pdf_invoice_free_text?: string | null;\n /**\n * Invoice title\n */\n pdf_invoice_subject?: string | null;\n /**\n * Invoice description. Maximum 5,000 characters.\n */\n pdf_description?: string | null;\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Additional details. maximum 20,000 characters.\n */\n special_mention?: string | null;\n language?: 'fr_FR' | 'en_GB';\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the invoice\n */\n value: string;\n };\n invoice_line_sections?: Array<{\n /**\n * Title of the invoice line section\n */\n title?: string;\n /**\n * Description of the invoice line section\n */\n description?: string;\n /**\n * Defines the order in which sections will be displayed on the invoice. Each section has to have a different rank, starting from 1 and incrementing next values by 1\n */\n rank: number;\n }>;\n /**\n * A unique external reference you can provide to track this customer invoice. If not provided, Pennylane will generate an identifier for you.\n */\n external_reference?: string;\n /**\n * Indicates if the invoice is in draft status (has not been finalized)\n */\n draft?: false;\n /**\n * By adding this field you can automatically reconcile the newly created invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference?: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n };\n invoice_lines: Array<{\n /**\n * The product ID. Auto-fills label, raw_currency_unit_price, unit, vat_rate, and ledger_account_id from the product.\n */\n product_id: number;\n /**\n * Line item label\n */\n label?: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes\n */\n raw_currency_unit_price?: string;\n /**\n * Line item unit (type of unit)\n */\n unit?: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n imputation_dates?: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n } | null;\n } | {\n /**\n * Line item label\n */\n label: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Line item unit (type of unit)\n */\n unit: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n imputation_dates?: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n } | null;\n }>;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/customer_invoices';\n};\n\nexport type PostCustomerInvoicesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostCustomerInvoicesError = PostCustomerInvoicesErrors[keyof PostCustomerInvoicesErrors];\n\nexport type PostCustomerInvoicesResponses = {\n /**\n * Renders the created finalized invoice\n */\n 201: {\n /**\n * Invoice identifier\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * Invoice paid status (set to True if the invoice is paid)\n */\n paid: boolean;\n status: 'archived' | 'incomplete' | 'cancelled' | 'paid' | 'partially_cancelled' | 'upcoming' | 'late' | 'draft' | 'credit_note';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n /**\n * Indicates if the invoice is in draft (has not been finalized)\n */\n draft: boolean;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the invoice.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n custom_header_fields: {\n /**\n * URL to get the custom header fields of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n billing_subscription: {\n id: number;\n } | null;\n /**\n * The credited invoice if the invoice is a credit note.\n */\n credited_invoice: {\n id: number;\n /**\n * URL to get the credited invoice.\n */\n url: string;\n } | null;\n customer_invoice_template: {\n id: number;\n } | null;\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n appendices: {\n /**\n * URL to get the appendices of the invoice.\n */\n url: string;\n };\n /**\n * The quote at the origin of the invoice\n */\n quote: {\n id: number;\n } | null;\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n };\n};\n\nexport type PostCustomerInvoicesResponse = PostCustomerInvoicesResponses[keyof PostCustomerInvoicesResponses];\n\nexport type ImportCustomerInvoicesData = {\n body: {\n /**\n * File attachment id\n */\n file_attachment_id: number;\n /**\n * This will set the invoice to Incomplete status\n */\n import_as_incomplete?: boolean;\n /**\n * Invoice date (ISO 8601)\n */\n date: string;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string;\n /**\n * Customer identifier\n */\n customer_id: number;\n /**\n * Invoice number\n */\n invoice_number?: string;\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice amount in euros (total value of the invoice in euros). If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount?: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in euros). If the currency is euro, `currency_tax` and `tax` are identical.\n */\n tax?: string;\n /**\n * By adding this field you can automatically reconcile the newly imported invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference?: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n };\n invoice_lines: Array<{\n /**\n * Invoice line total amount in the currency of the invoice.\n */\n currency_amount: string;\n /**\n * Invoice line amount in euros. If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount?: string;\n /**\n * Invoice line taxable amount (in invoice currency)\n */\n currency_tax: string;\n /**\n * Invoice line taxable amount (in euros). If the currency is euro, currency_tax and tax are identical.\n */\n tax?: string;\n /**\n * Line item label.\n *\n * > ⚠️ This attribute is deprecated and will be removed soon.\n *\n *\n * @deprecated\n */\n label?: string;\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes. Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Line item unit (type of unit)\n */\n unit: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * The description of the invoice line\n *\n * > ⚠️ This attribute is deprecated and will be removed soon.\n *\n *\n * @deprecated\n */\n description?: string | null;\n /**\n * The product ID\n */\n product_id?: number;\n imputation_dates?: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n } | null;\n ledger_entry_line?: {\n /**\n * Ledger entry line label.\n * Ledger entry lines with identical labels, tax, and ledger accounts will be automatically compacted into a single line.\n *\n */\n label: string;\n };\n }>;\n /**\n * A unique external reference you can provide to track this customer invoice. If not provided, Pennylane will generate an identifier for you.\n */\n external_reference?: string;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/customer_invoices/import';\n};\n\nexport type ImportCustomerInvoicesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Conflict with the current state of the target resource, such as when trying to create a resource that already exists.\n */\n 409: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type ImportCustomerInvoicesError = ImportCustomerInvoicesErrors[keyof ImportCustomerInvoicesErrors];\n\nexport type ImportCustomerInvoicesResponses = {\n /**\n * The imported customer invoice\n */\n 201: {\n /**\n * Invoice identifier\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * Invoice paid status (set to True if the invoice is paid)\n */\n paid: boolean;\n status: 'archived' | 'incomplete' | 'cancelled' | 'paid' | 'partially_cancelled' | 'upcoming' | 'late' | 'draft' | 'credit_note';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n /**\n * Indicates if the invoice is in draft (has not been finalized)\n */\n draft: boolean;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the invoice.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n custom_header_fields: {\n /**\n * URL to get the custom header fields of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n billing_subscription: {\n id: number;\n } | null;\n /**\n * The credited invoice if the invoice is a credit note.\n */\n credited_invoice: {\n id: number;\n /**\n * URL to get the credited invoice.\n */\n url: string;\n } | null;\n customer_invoice_template: {\n id: number;\n } | null;\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n appendices: {\n /**\n * URL to get the appendices of the invoice.\n */\n url: string;\n };\n /**\n * The quote at the origin of the invoice\n */\n quote: {\n id: number;\n } | null;\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n };\n};\n\nexport type ImportCustomerInvoicesResponse = ImportCustomerInvoicesResponses[keyof ImportCustomerInvoicesResponses];\n\nexport type CreateCustomerInvoiceFromQuoteData = {\n body: {\n /**\n * Quote identifier to create the invoice from\n */\n quote_id: number;\n /**\n * Indicates if the invoice should be created as draft (has not been finalized)\n */\n draft: boolean;\n /**\n * A unique external reference you can provide to track this customer invoice. If not provided, Pennylane will generate an identifier for you.\n */\n external_reference?: string;\n /**\n * The customer invoice template ID\n */\n customer_invoice_template_id?: number;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/customer_invoices/create_from_quote';\n};\n\nexport type CreateCustomerInvoiceFromQuoteErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type CreateCustomerInvoiceFromQuoteError = CreateCustomerInvoiceFromQuoteErrors[keyof CreateCustomerInvoiceFromQuoteErrors];\n\nexport type CreateCustomerInvoiceFromQuoteResponses = {\n /**\n * Renders the created invoice from quote\n */\n 201: {\n /**\n * Invoice identifier\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * Invoice paid status (set to True if the invoice is paid)\n */\n paid: boolean;\n status: 'archived' | 'incomplete' | 'cancelled' | 'paid' | 'partially_cancelled' | 'upcoming' | 'late' | 'draft' | 'credit_note';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n /**\n * Indicates if the invoice is in draft (has not been finalized)\n */\n draft: boolean;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the invoice.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n custom_header_fields: {\n /**\n * URL to get the custom header fields of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n billing_subscription: {\n id: number;\n } | null;\n /**\n * The credited invoice if the invoice is a credit note.\n */\n credited_invoice: {\n id: number;\n /**\n * URL to get the credited invoice.\n */\n url: string;\n } | null;\n customer_invoice_template: {\n id: number;\n } | null;\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n appendices: {\n /**\n * URL to get the appendices of the invoice.\n */\n url: string;\n };\n /**\n * The quote at the origin of the invoice\n */\n quote: {\n id: number;\n } | null;\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n };\n};\n\nexport type CreateCustomerInvoiceFromQuoteResponse = CreateCustomerInvoiceFromQuoteResponses[keyof CreateCustomerInvoiceFromQuoteResponses];\n\nexport type GetBillingSubscriptionsData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and values:\n * - `id`, `start`, `customer_id`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `status`: `eq`, `not_eq`, `in`, `not_in`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/billing_subscriptions';\n};\n\nexport type GetBillingSubscriptionsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetBillingSubscriptionsError = GetBillingSubscriptionsErrors[keyof GetBillingSubscriptionsErrors];\n\nexport type GetBillingSubscriptionsResponses = {\n /**\n * Returns a list of billing subscriptions\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Billing subscription identifier\n */\n id: number;\n /**\n * The date for the next subscription renewal\n */\n next_occurrence: string | null;\n /**\n * The date of the previous subscription renewal\n */\n prev_occurrence: string | null;\n /**\n * The exact timestamp when the subscription was terminated\n */\n stopped_at: string | null;\n /**\n * The subscription start date\n */\n start: string;\n /**\n * The date for when the subscription will end\n */\n finish: string | null;\n status: 'draft' | 'stopped' | 'finished' | 'pending' | 'not_started' | 'in_progress';\n /**\n * - `awaiting_validation`: generated invoices will be in draft\n * - `finalized`: generated invoices will be finalized\n * - `email`: generated invoices will be finalized and sent by email to the recipients configured on the subscription\n *\n */\n mode: 'awaiting_validation' | 'finalized' | 'email';\n /**\n * The exact timestamp for when the subscription was activated\n */\n activated_at: string | null;\n payment_conditions: 'upon_receipt' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days' | null;\n /**\n * Payment method\n * offline means the subscription is not linked to a payment method\n * gocardless_direct-debit means at each new occurrence the client will be automatically debited thanks to GoCardless. To do so, you need a GoCardless account properly configured.\n *\n */\n payment_method: 'offline' | 'gocardless_direct_debit';\n label: string | null;\n email_settings: {\n /**\n * Primary email recipients for invoice delivery\n */\n recipients: Array<string>;\n billing_email_template: {\n id: number;\n label: string;\n } | null;\n } | null;\n recurring_rule: {\n day_of_month: Array<number> | null;\n month_of_year: Array<number> | null;\n week_start: number | null;\n day: Array<number> | null;\n rule_type: 'weekly' | 'monthly' | 'yearly';\n interval: number | null;\n /**\n * Number of occurrences of the recurring rule\n */\n count: number | null;\n until: string | null;\n };\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n customer_invoice_data: {\n /**\n * Invoice label\n */\n label: string | null;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n language: 'fr_FR' | 'en_GB';\n customer_invoice_template: {\n id: number;\n } | null;\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax\n */\n value: string | null;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n /**\n * Additional details\n */\n special_mention: string | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the invoice.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n };\n /**\n * The time the subscription has been created\n */\n created_at: string;\n /**\n * The last time the subscription has been updated\n */\n updated_at: string;\n }>;\n };\n};\n\nexport type GetBillingSubscriptionsResponse = GetBillingSubscriptionsResponses[keyof GetBillingSubscriptionsResponses];\n\nexport type PostBillingSubscriptionsData = {\n body: {\n start: string;\n mode: {\n /**\n * - `email`: generated invoices will be finalized\n * and sent by email to the recipients configured on the subscription\n *\n */\n type: 'email';\n /**\n * Email settings for sending invoices.\n * The total number of email addresses must not exceed 25.\n * An email template with both a subject and body content must be configured in the company settings.\n * A GoCardless subscription requires a dedicated GoCardless email template configured in the company settings.\n *\n */\n email_settings: {\n /**\n * Primary email recipients for invoice delivery.\n * If not provided, the recipients configured on the customer will be used instead.\n *\n */\n recipients?: Array<string>;\n };\n } | {\n /**\n * - `awaiting_validation`: generated invoices will be in draft\n * - `finalized`: generated invoices will be finalized\n *\n */\n type: 'awaiting_validation' | 'finalized';\n };\n payment_conditions: 'upon_receipt' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n /**\n * Payment method\n * offline means the subscription is not linked to a payment method\n * gocardless_direct-debit means at each new occurrence the client will be automatically debited thanks to GoCardless. To do so, you need a GoCardless account properly configured.\n *\n */\n payment_method: 'offline' | 'gocardless_direct_debit';\n label?: string | null;\n recurring_rule: {\n type: 'yearly';\n /**\n * Interval between each occurrence in years.\n */\n interval?: number;\n /**\n * Number of occurrences\n */\n count?: number;\n } | {\n type: 'monthly';\n /**\n * Interval between each occurrence in months.\n */\n interval?: number;\n /**\n * Number of occurrences\n */\n count?: number;\n day_of_month?: number;\n } | {\n type: 'weekly';\n /**\n * Interval between each occurrence in weeks.\n */\n interval?: number;\n /**\n * Number of occurrences\n */\n count?: number;\n day_of_week?: 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday';\n };\n /**\n * Customer identifier\n */\n customer_id: number;\n customer_invoice_data: {\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * The customer invoice template ID\n */\n customer_invoice_template_id?: number;\n /**\n * For example, the contact details of the person to contact\n */\n pdf_invoice_free_text?: string | null;\n /**\n * Invoice title\n */\n pdf_invoice_subject?: string | null;\n /**\n * Invoice description\n */\n pdf_description?: string | null;\n /**\n * Additional details\n */\n special_mention?: string | null;\n language?: 'fr_FR' | 'en_GB';\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax\n */\n value: string;\n };\n invoice_line_sections?: Array<{\n /**\n * Title of the invoice line section\n */\n title?: string;\n /**\n * Description of the invoice line section\n */\n description?: string;\n /**\n * Defines the order in which sections will be displayed on the invoice. Each section has to have a different rank, starting from 1 and incrementing next values by 1\n */\n rank: number;\n }>;\n invoice_lines: Array<{\n /**\n * Line item label\n */\n label: string;\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Line item unit (type of unit)\n */\n unit: string;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * The description of the invoice line\n */\n description?: string | null;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The product ID\n */\n product_id?: number;\n }>;\n };\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/billing_subscriptions';\n};\n\nexport type PostBillingSubscriptionsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostBillingSubscriptionsError = PostBillingSubscriptionsErrors[keyof PostBillingSubscriptionsErrors];\n\nexport type PostBillingSubscriptionsResponses = {\n /**\n * Renders the created billing subscription\n */\n 201: {\n /**\n * Billing subscription identifier\n */\n id: number;\n /**\n * The date for the next subscription renewal\n */\n next_occurrence: string | null;\n /**\n * The date of the previous subscription renewal\n */\n prev_occurrence: string | null;\n /**\n * The exact timestamp when the subscription was terminated\n */\n stopped_at: string | null;\n /**\n * The subscription start date\n */\n start: string;\n /**\n * The date for when the subscription will end\n */\n finish: string | null;\n status: 'draft' | 'stopped' | 'finished' | 'pending' | 'not_started' | 'in_progress';\n /**\n * - `awaiting_validation`: generated invoices will be in draft\n * - `finalized`: generated invoices will be finalized\n * - `email`: generated invoices will be finalized and sent by email to the recipients configured on the subscription\n *\n */\n mode: 'awaiting_validation' | 'finalized' | 'email';\n /**\n * The exact timestamp for when the subscription was activated\n */\n activated_at: string | null;\n payment_conditions: 'upon_receipt' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days' | null;\n /**\n * Payment method\n * offline means the subscription is not linked to a payment method\n * gocardless_direct-debit means at each new occurrence the client will be automatically debited thanks to GoCardless. To do so, you need a GoCardless account properly configured.\n *\n */\n payment_method: 'offline' | 'gocardless_direct_debit';\n label: string | null;\n email_settings: {\n /**\n * Primary email recipients for invoice delivery\n */\n recipients: Array<string>;\n billing_email_template: {\n id: number;\n label: string;\n } | null;\n } | null;\n recurring_rule: {\n day_of_month: Array<number> | null;\n month_of_year: Array<number> | null;\n week_start: number | null;\n day: Array<number> | null;\n rule_type: 'weekly' | 'monthly' | 'yearly';\n interval: number | null;\n /**\n * Number of occurrences of the recurring rule\n */\n count: number | null;\n until: string | null;\n };\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n customer_invoice_data: {\n /**\n * Invoice label\n */\n label: string | null;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n language: 'fr_FR' | 'en_GB';\n customer_invoice_template: {\n id: number;\n } | null;\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax\n */\n value: string | null;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n /**\n * Additional details\n */\n special_mention: string | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the invoice.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n };\n /**\n * The time the subscription has been created\n */\n created_at: string;\n /**\n * The last time the subscription has been updated\n */\n updated_at: string;\n };\n};\n\nexport type PostBillingSubscriptionsResponse = PostBillingSubscriptionsResponses[keyof PostBillingSubscriptionsResponses];\n\nexport type GetBillingSubscriptionData = {\n body?: never;\n path: {\n /**\n * The ID of the billing subscription to retrieve\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/billing_subscriptions/{id}';\n};\n\nexport type GetBillingSubscriptionErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetBillingSubscriptionError = GetBillingSubscriptionErrors[keyof GetBillingSubscriptionErrors];\n\nexport type GetBillingSubscriptionResponses = {\n /**\n * Returns the requested billing subscription\n */\n 200: {\n /**\n * Billing subscription identifier\n */\n id: number;\n /**\n * The date for the next subscription renewal\n */\n next_occurrence: string | null;\n /**\n * The date of the previous subscription renewal\n */\n prev_occurrence: string | null;\n /**\n * The exact timestamp when the subscription was terminated\n */\n stopped_at: string | null;\n /**\n * The subscription start date\n */\n start: string;\n /**\n * The date for when the subscription will end\n */\n finish: string | null;\n status: 'draft' | 'stopped' | 'finished' | 'pending' | 'not_started' | 'in_progress';\n /**\n * - `awaiting_validation`: generated invoices will be in draft\n * - `finalized`: generated invoices will be finalized\n * - `email`: generated invoices will be finalized and sent by email to the recipients configured on the subscription\n *\n */\n mode: 'awaiting_validation' | 'finalized' | 'email';\n /**\n * The exact timestamp for when the subscription was activated\n */\n activated_at: string | null;\n payment_conditions: 'upon_receipt' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days' | null;\n /**\n * Payment method\n * offline means the subscription is not linked to a payment method\n * gocardless_direct-debit means at each new occurrence the client will be automatically debited thanks to GoCardless. To do so, you need a GoCardless account properly configured.\n *\n */\n payment_method: 'offline' | 'gocardless_direct_debit';\n label: string | null;\n email_settings: {\n /**\n * Primary email recipients for invoice delivery\n */\n recipients: Array<string>;\n billing_email_template: {\n id: number;\n label: string;\n } | null;\n } | null;\n recurring_rule: {\n day_of_month: Array<number> | null;\n month_of_year: Array<number> | null;\n week_start: number | null;\n day: Array<number> | null;\n rule_type: 'weekly' | 'monthly' | 'yearly';\n interval: number | null;\n /**\n * Number of occurrences of the recurring rule\n */\n count: number | null;\n until: string | null;\n };\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n customer_invoice_data: {\n /**\n * Invoice label\n */\n label: string | null;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n language: 'fr_FR' | 'en_GB';\n customer_invoice_template: {\n id: number;\n } | null;\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax\n */\n value: string | null;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n /**\n * Additional details\n */\n special_mention: string | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the invoice.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n };\n /**\n * The time the subscription has been created\n */\n created_at: string;\n /**\n * The last time the subscription has been updated\n */\n updated_at: string;\n };\n};\n\nexport type GetBillingSubscriptionResponse = GetBillingSubscriptionResponses[keyof GetBillingSubscriptionResponses];\n\nexport type PutBillingSubscriptionsData = {\n body: {\n /**\n * To stop an `in_progress` billing subscription use value `true`.\n * To resume a `stopped` billing subscription use value `false`\n *\n */\n stop?: boolean;\n mode?: {\n /**\n * - `email`: generated invoices will be finalized\n * and sent by email to the recipients configured on the subscription\n *\n */\n type: 'email';\n /**\n * Email settings for sending invoices.\n * The total number of email addresses must not exceed 25.\n * An email template with both a subject and body content must be configured in the company settings.\n * A GoCardless subscription requires a dedicated GoCardless email template configured in the company settings.\n *\n */\n email_settings: {\n /**\n * Primary email recipients for invoice delivery.\n */\n recipients?: Array<string>;\n };\n } | {\n /**\n * - `awaiting_validation`: generated invoices will be in draft\n * - `finalized`: generated invoices will be finalized\n *\n */\n type: 'awaiting_validation' | 'finalized';\n };\n payment_conditions?: 'upon_receipt' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n /**\n * Payment method\n * offline means the subscription is not linked to a payment method\n * gocardless_direct-debit means at each new occurrence the client will be automatically debited thanks to GoCardless. To do so, you need a GoCardless account properly configured.\n *\n */\n payment_method?: 'offline' | 'gocardless_direct_debit';\n label?: string | null;\n recurring_rule?: {\n type: 'yearly';\n /**\n * Interval between each occurrence in years.\n */\n interval?: number;\n /**\n * Number of occurrences\n */\n count?: number;\n } | {\n type: 'monthly';\n /**\n * Interval between each occurrence in months.\n */\n interval?: number;\n /**\n * Number of occurrences\n */\n count?: number;\n day_of_month?: number;\n } | {\n type: 'weekly';\n /**\n * Interval between each occurrence in weeks.\n */\n interval?: number;\n /**\n * Number of occurrences\n */\n count?: number;\n day_of_week?: 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday';\n };\n /**\n * Customer identifier\n */\n customer_id?: number;\n customer_invoice_data?: {\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * The customer invoice template ID\n */\n customer_invoice_template_id?: number;\n /**\n * For example, the contact details of the person to contact\n */\n pdf_invoice_free_text?: string | null;\n /**\n * Invoice title\n */\n pdf_invoice_subject?: string | null;\n /**\n * Invoice description\n */\n pdf_description?: string | null;\n /**\n * Additional details\n */\n special_mention?: string | null;\n language?: 'fr_FR' | 'en_GB';\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax\n */\n value: string;\n };\n /**\n * Add, update, delete invoice line sections.\n */\n invoice_line_sections?: {\n create?: Array<{\n /**\n * Title of the invoice line section\n */\n title?: string;\n /**\n * Description of the invoice line section\n */\n description?: string;\n /**\n * Defines the order in which sections will be displayed on the invoice. Each section has to have a different rank, starting from 1 and incrementing next values by 1\n */\n rank: number;\n }>;\n update?: Array<{\n /**\n * ID of the invoice line section\n */\n id: number;\n /**\n * Title of the invoice line section\n */\n title?: string | null;\n /**\n * Description of the invoice line section\n */\n description?: string | null;\n /**\n * Defines the order in which sections will be displayed on the invoice. Each section has to have a different rank, starting from 1 and incrementing next values by 1\n */\n rank?: number;\n }>;\n delete?: Array<{\n /**\n * ID of the invoice line section\n */\n id: number;\n }>;\n };\n /**\n * Add, update, delete invoice lines.\n */\n invoice_lines?: {\n create?: Array<{\n /**\n * Line item label\n */\n label: string;\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Line item unit (type of unit)\n */\n unit: string;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * The description of the invoice line\n */\n description?: string | null;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The product ID\n */\n product_id?: number;\n }>;\n update?: Array<{\n /**\n * ID of the invoice line\n */\n id: number;\n /**\n * Line item label\n */\n label?: string;\n /**\n * Line item quantity (number of items)\n */\n quantity?: number;\n /**\n * Line item unit (type of unit)\n */\n unit?: string;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price?: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * The description of the invoice line\n */\n description?: string | null;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The product ID\n */\n product_id?: number;\n }>;\n delete?: Array<{\n /**\n * ID of the invoice line\n */\n id: number;\n }>;\n };\n };\n };\n path: {\n /**\n * The ID of the billing subscription to retrieve\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/billing_subscriptions/{id}';\n};\n\nexport type PutBillingSubscriptionsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PutBillingSubscriptionsError = PutBillingSubscriptionsErrors[keyof PutBillingSubscriptionsErrors];\n\nexport type PutBillingSubscriptionsResponses = {\n /**\n * Renders the updated billing subscription\n */\n 200: {\n /**\n * Billing subscription identifier\n */\n id: number;\n /**\n * The date for the next subscription renewal\n */\n next_occurrence: string | null;\n /**\n * The date of the previous subscription renewal\n */\n prev_occurrence: string | null;\n /**\n * The exact timestamp when the subscription was terminated\n */\n stopped_at: string | null;\n /**\n * The subscription start date\n */\n start: string;\n /**\n * The date for when the subscription will end\n */\n finish: string | null;\n status: 'draft' | 'stopped' | 'finished' | 'pending' | 'not_started' | 'in_progress';\n /**\n * - `awaiting_validation`: generated invoices will be in draft\n * - `finalized`: generated invoices will be finalized\n * - `email`: generated invoices will be finalized and sent by email to the recipients configured on the subscription\n *\n */\n mode: 'awaiting_validation' | 'finalized' | 'email';\n /**\n * The exact timestamp for when the subscription was activated\n */\n activated_at: string | null;\n payment_conditions: 'upon_receipt' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days' | null;\n /**\n * Payment method\n * offline means the subscription is not linked to a payment method\n * gocardless_direct-debit means at each new occurrence the client will be automatically debited thanks to GoCardless. To do so, you need a GoCardless account properly configured.\n *\n */\n payment_method: 'offline' | 'gocardless_direct_debit';\n label: string | null;\n email_settings: {\n /**\n * Primary email recipients for invoice delivery\n */\n recipients: Array<string>;\n billing_email_template: {\n id: number;\n label: string;\n } | null;\n } | null;\n recurring_rule: {\n day_of_month: Array<number> | null;\n month_of_year: Array<number> | null;\n week_start: number | null;\n day: Array<number> | null;\n rule_type: 'weekly' | 'monthly' | 'yearly';\n interval: number | null;\n /**\n * Number of occurrences of the recurring rule\n */\n count: number | null;\n until: string | null;\n };\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n customer_invoice_data: {\n /**\n * Invoice label\n */\n label: string | null;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n language: 'fr_FR' | 'en_GB';\n customer_invoice_template: {\n id: number;\n } | null;\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax\n */\n value: string | null;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n /**\n * Additional details\n */\n special_mention: string | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the invoice.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n };\n /**\n * The time the subscription has been created\n */\n created_at: string;\n /**\n * The last time the subscription has been updated\n */\n updated_at: string;\n };\n};\n\nexport type PutBillingSubscriptionsResponse = PutBillingSubscriptionsResponses[keyof PutBillingSubscriptionsResponses];\n\nexport type GetBillingSubscriptionInvoiceLineSectionsData = {\n body?: never;\n path: {\n billing_subscription_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/billing_subscriptions/{billing_subscription_id}/invoice_line_sections';\n};\n\nexport type GetBillingSubscriptionInvoiceLineSectionsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetBillingSubscriptionInvoiceLineSectionsError = GetBillingSubscriptionInvoiceLineSectionsErrors[keyof GetBillingSubscriptionInvoiceLineSectionsErrors];\n\nexport type GetBillingSubscriptionInvoiceLineSectionsResponses = {\n /**\n * Returns the list of invoice line sections of a billing subscription\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Invoice line section id\n */\n id: number;\n /**\n * Invoice line section title\n */\n title: string | null;\n /**\n * Invoice line section description\n */\n description: string | null;\n /**\n * Invoice line section rank\n */\n rank: number;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetBillingSubscriptionInvoiceLineSectionsResponse = GetBillingSubscriptionInvoiceLineSectionsResponses[keyof GetBillingSubscriptionInvoiceLineSectionsResponses];\n\nexport type GetBillingSubscriptionInvoiceLinesData = {\n body?: never;\n path: {\n billing_subscription_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/billing_subscriptions/{billing_subscription_id}/invoice_lines';\n};\n\nexport type GetBillingSubscriptionInvoiceLinesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetBillingSubscriptionInvoiceLinesError = GetBillingSubscriptionInvoiceLinesErrors[keyof GetBillingSubscriptionInvoiceLinesErrors];\n\nexport type GetBillingSubscriptionInvoiceLinesResponses = {\n /**\n * Returns the list of invoice lines for a billing subscription\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Invoice line id\n */\n id: number;\n /**\n * Invoice line label\n */\n label: string;\n /**\n * The kind of unit which applies to the amount\n */\n unit: string | null;\n /**\n * Invoice line item quantity (number of items)\n */\n quantity: string;\n /**\n * The total amount of the invoice lines in euros including taxes and deducting discounts\n */\n amount: string;\n /**\n * The total amount of the invoice lines in the document's currency including taxes and deducting discounts.\n * If the currency is euro, amount and currency_amount are identical.\n *\n */\n currency_amount: string;\n /**\n * Invoice line description\n */\n description: string;\n product: {\n /**\n * Product id\n */\n id: number;\n /**\n * URL to get the product.\n */\n url: string;\n } | null;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Total amount before tax in currency\n */\n currency_amount_before_tax: string;\n /**\n * Total tax amount in currency\n */\n currency_tax: string;\n /**\n * Total tax amount in euros\n */\n tax: string;\n /**\n * Unit price (excluding tax)\n */\n raw_currency_unit_price: string;\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the invoice\n */\n value: string;\n };\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank: number | null;\n imputation_dates: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n } | null;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetBillingSubscriptionInvoiceLinesResponse = GetBillingSubscriptionInvoiceLinesResponses[keyof GetBillingSubscriptionInvoiceLinesResponses];\n\nexport type GetProductsData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and values:\n * - `id` : `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `label` : `eq`, `in`\n * - `reference` : `eq`, `in`\n * - `external_reference` : `eq`, `not_eq`, `in`, `not_in`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/products';\n};\n\nexport type GetProductsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetProductsError = GetProductsErrors[keyof GetProductsErrors];\n\nexport type GetProductsResponses = {\n /**\n * A list of Products\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n /**\n * Product label\n */\n label: string;\n /**\n * Product description\n */\n description: string;\n /**\n * The unique external reference assigned to this Product, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * Product price without taxes\n */\n price_before_tax: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n price: string;\n /**\n * Product unit\n */\n unit: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Product reference\n */\n reference: string | null;\n ledger_account: {\n id: number;\n } | null;\n /**\n * The time the product has been archived\n */\n archived_at: string | null;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetProductsResponse = GetProductsResponses[keyof GetProductsResponses];\n\nexport type PostProductsData = {\n body: {\n /**\n * Product label\n */\n label: string;\n /**\n * Product description. Maximum 5,000 characters.\n */\n description?: string;\n /**\n * You can use your own unique value when creating the product. If not provided, Pennylane will pick one for you. Value must be unique\n */\n external_reference?: string;\n /**\n * Product price without taxes\n */\n price_before_tax: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Product unit\n */\n unit?: string;\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Product reference\n */\n reference?: string;\n ledger_account_id?: number;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/products';\n};\n\nexport type PostProductsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostProductsError = PostProductsErrors[keyof PostProductsErrors];\n\nexport type PostProductsResponses = {\n /**\n * The created product\n */\n 201: {\n id: number;\n /**\n * Product label\n */\n label: string;\n /**\n * Product description\n */\n description: string;\n /**\n * The unique external reference assigned to this Product, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * Product price without taxes\n */\n price_before_tax: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n price: string;\n /**\n * Product unit\n */\n unit: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Product reference\n */\n reference: string | null;\n ledger_account: {\n id: number;\n } | null;\n /**\n * The time the product has been archived\n */\n archived_at: string | null;\n created_at: string;\n updated_at: string;\n };\n};\n\nexport type PostProductsResponse = PostProductsResponses[keyof PostProductsResponses];\n\nexport type GetProductData = {\n body?: never;\n path: {\n id: number;\n };\n query?: never;\n url: '/api/external/v2/products/{id}';\n};\n\nexport type GetProductErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type GetProductError = GetProductErrors[keyof GetProductErrors];\n\nexport type GetProductResponses = {\n /**\n * The requested Product\n */\n 200: {\n id: number;\n /**\n * Product label\n */\n label: string;\n /**\n * Product description\n */\n description: string;\n /**\n * The unique external reference assigned to this Product, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * Product price without taxes\n */\n price_before_tax: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n price: string;\n /**\n * Product unit\n */\n unit: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Product reference\n */\n reference: string | null;\n ledger_account: {\n id: number;\n } | null;\n /**\n * The time the product has been archived\n */\n archived_at: string | null;\n created_at: string;\n updated_at: string;\n };\n};\n\nexport type GetProductResponse = GetProductResponses[keyof GetProductResponses];\n\nexport type PutProductData = {\n body: {\n label?: string;\n /**\n * Product description. Maximum 5,000 characters.\n */\n description?: string;\n /**\n * The unique external reference assigned to this Product, assigned on creation either by you or Pennylane.\n */\n external_reference?: string;\n price_before_tax?: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Product unit\n */\n unit?: string;\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n reference?: string;\n ledger_account_id?: number;\n };\n path: {\n id: number;\n };\n query?: never;\n url: '/api/external/v2/products/{id}';\n};\n\nexport type PutProductErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PutProductError = PutProductErrors[keyof PutProductErrors];\n\nexport type PutProductResponses = {\n /**\n * The updated Product\n */\n 200: {\n id: number;\n /**\n * Product label\n */\n label: string;\n /**\n * Product description\n */\n description: string;\n /**\n * The unique external reference assigned to this Product, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * Product price without taxes\n */\n price_before_tax: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n price: string;\n /**\n * Product unit\n */\n unit: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Product reference\n */\n reference: string | null;\n ledger_account: {\n id: number;\n } | null;\n /**\n * The time the product has been archived\n */\n archived_at: string | null;\n created_at: string;\n updated_at: string;\n };\n};\n\nexport type PutProductResponse = PutProductResponses[keyof PutProductResponses];\n\nexport type GetFileAttachmentsData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/file_attachments';\n};\n\nexport type GetFileAttachmentsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetFileAttachmentsError = GetFileAttachmentsErrors[keyof GetFileAttachmentsErrors];\n\nexport type GetFileAttachmentsResponses = {\n /**\n * A list of attachments\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n /**\n * URL to the uploaded file.\n */\n url: string;\n filename: string;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetFileAttachmentsResponse = GetFileAttachmentsResponses[keyof GetFileAttachmentsResponses];\n\nexport type PostFileAttachmentsData = {\n body: {\n /**\n * The file you want to upload.\n * Allowed content types:\n * - image/png\n * - image/jpeg\n * - image/tiff\n * - image/bmp\n * - image/gif\n * - application/pdf\n *\n */\n file: Blob | File;\n /**\n * Name of the file. If not provided, the default value will be the uploaded file name.\n */\n filename?: string;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/file_attachments';\n};\n\nexport type PostFileAttachmentsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostFileAttachmentsError = PostFileAttachmentsErrors[keyof PostFileAttachmentsErrors];\n\nexport type PostFileAttachmentsResponses = {\n /**\n * Returns the created attachment\n */\n 201: {\n id: number;\n /**\n * URL to the uploaded file.\n */\n url: string;\n filename: string;\n created_at: string;\n updated_at: string;\n };\n};\n\nexport type PostFileAttachmentsResponse = PostFileAttachmentsResponses[keyof PostFileAttachmentsResponses];\n\nexport type GetCustomerInvoiceTemplatesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/customer_invoice_templates';\n};\n\nexport type GetCustomerInvoiceTemplatesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCustomerInvoiceTemplatesError = GetCustomerInvoiceTemplatesErrors[keyof GetCustomerInvoiceTemplatesErrors];\n\nexport type GetCustomerInvoiceTemplatesResponses = {\n /**\n * A list of customer invoice templates\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n name: string;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetCustomerInvoiceTemplatesResponse = GetCustomerInvoiceTemplatesResponses[keyof GetCustomerInvoiceTemplatesResponses];\n\nexport type ExportAnalyticalGeneralLedgerData = {\n body: {\n /**\n * Start date of the period to export\n */\n period_start: string;\n /**\n * End date of the period to export\n */\n period_end: string;\n /**\n * The mode of the export. The export can be in lines or in columns. If this parameter is not provided, it will use the default `in_line` mode.\n */\n mode?: 'in_line' | 'in_column';\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/exports/analytical_general_ledgers';\n};\n\nexport type ExportAnalyticalGeneralLedgerErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type ExportAnalyticalGeneralLedgerError = ExportAnalyticalGeneralLedgerErrors[keyof ExportAnalyticalGeneralLedgerErrors];\n\nexport type ExportAnalyticalGeneralLedgerResponses = {\n /**\n * Returns the generated export status\n */\n 201: {\n /**\n * ID of the export\n */\n id: number;\n /**\n * The state of the export\n */\n status: 'pending' | 'ready' | 'error';\n created_at: string;\n updated_at: string;\n };\n};\n\nexport type ExportAnalyticalGeneralLedgerResponse = ExportAnalyticalGeneralLedgerResponses[keyof ExportAnalyticalGeneralLedgerResponses];\n\nexport type GetAnalyticalGeneralLedgerExportData = {\n body?: never;\n path: {\n /**\n * Existing export identifier (id)\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/exports/analytical_general_ledgers/{id}';\n};\n\nexport type GetAnalyticalGeneralLedgerExportErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetAnalyticalGeneralLedgerExportError = GetAnalyticalGeneralLedgerExportErrors[keyof GetAnalyticalGeneralLedgerExportErrors];\n\nexport type GetAnalyticalGeneralLedgerExportResponses = {\n /**\n * Returns the export\n */\n 200: {\n /**\n * ID of the export\n */\n id: number;\n /**\n * URL to download the export file. The URL will expire after 10 minutes.\n */\n file_url: string | null;\n /**\n * The state of the export\n */\n status: 'pending' | 'ready' | 'error';\n created_at: string;\n updated_at: string;\n };\n};\n\nexport type GetAnalyticalGeneralLedgerExportResponse = GetAnalyticalGeneralLedgerExportResponses[keyof GetAnalyticalGeneralLedgerExportResponses];\n\nexport type ExportFecData = {\n body: {\n /**\n * Start date of the period to export\n */\n period_start: string;\n /**\n * End date of the period to export\n */\n period_end: string;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/exports/fecs';\n};\n\nexport type ExportFecErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type ExportFecError = ExportFecErrors[keyof ExportFecErrors];\n\nexport type ExportFecResponses = {\n /**\n * Returns the generated export status\n */\n 201: {\n /**\n * ID of the export\n */\n id: number;\n /**\n * The state of the export\n */\n status: 'pending' | 'ready' | 'error';\n created_at: string;\n updated_at: string;\n };\n};\n\nexport type ExportFecResponse = ExportFecResponses[keyof ExportFecResponses];\n\nexport type GetFecExportData = {\n body?: never;\n path: {\n /**\n * Existing export identifier (id)\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/exports/fecs/{id}';\n};\n\nexport type GetFecExportErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetFecExportError = GetFecExportErrors[keyof GetFecExportErrors];\n\nexport type GetFecExportResponses = {\n /**\n * Returns the export\n */\n 200: {\n /**\n * ID of the export\n */\n id: number;\n /**\n * URL to download the export file. The URL will expire after 10 minutes.\n */\n file_url: string | null;\n /**\n * The state of the export\n */\n status: 'pending' | 'ready' | 'error';\n created_at: string;\n updated_at: string;\n };\n};\n\nexport type GetFecExportResponse = GetFecExportResponses[keyof GetFecExportResponses];\n\nexport type PostCompanyCustomerData = {\n body: {\n name: string;\n vat_number?: string;\n reg_no?: string;\n ledger_account?: {\n number: string;\n } | null;\n phone?: string;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address?: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n payment_conditions?: ('upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days') & unknown;\n billing_iban?: string | null;\n /**\n * The name of the person to whom the invoice is addressed\n */\n recipient?: string;\n reference?: string | null;\n notes?: string | null;\n emails?: Array<string>;\n /**\n * You can use your own unique value when creating the customer. If not provided, Pennylane will pick one for you. Value must be unique\n */\n external_reference?: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language?: 'fr_FR' | 'en_GB' | 'de_DE';\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/company_customers';\n};\n\nexport type PostCompanyCustomerErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Conflict with the current state of the target resource, such as when trying to create a resource that already exists.\n */\n 409: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostCompanyCustomerError = PostCompanyCustomerErrors[keyof PostCompanyCustomerErrors];\n\nexport type PostCompanyCustomerResponses = {\n /**\n * Returns the created company customer\n */\n 201: {\n id: number;\n name: string;\n billing_iban: string | null;\n /**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\n payment_conditions: 'upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n /**\n * The name of the person to whom the invoice is addressed\n */\n recipient: string;\n phone: string;\n reference: string | null;\n notes: string | null;\n vat_number: string;\n reg_no: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n created_at: string;\n updated_at: string;\n /**\n * The unique external reference assigned to this customer, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language: 'fr_FR' | 'en_GB' | 'de_DE';\n /**\n * GoCardless mandates associated with this customer\n */\n mandates: {\n /**\n * URL to list GoCardless mandates associated with this customer\n */\n url: string;\n };\n contacts: {\n /**\n * URL to get the contacts of the customer.\n */\n url: string;\n };\n };\n};\n\nexport type PostCompanyCustomerResponse = PostCompanyCustomerResponses[keyof PostCompanyCustomerResponses];\n\nexport type GetCompanyCustomerData = {\n body?: never;\n path: {\n /**\n * Company customer identifier\n */\n id: string;\n };\n query?: never;\n url: '/api/external/v2/company_customers/{id}';\n};\n\nexport type GetCompanyCustomerErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCompanyCustomerError = GetCompanyCustomerErrors[keyof GetCompanyCustomerErrors];\n\nexport type GetCompanyCustomerResponses = {\n /**\n * Returns a company customer\n */\n 200: {\n id: number;\n name: string;\n billing_iban: string | null;\n /**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\n payment_conditions: 'upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n /**\n * The name of the person to whom the invoice is addressed\n */\n recipient: string;\n phone: string;\n reference: string | null;\n notes: string | null;\n vat_number: string;\n reg_no: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n created_at: string;\n updated_at: string;\n /**\n * The unique external reference assigned to this customer, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language: 'fr_FR' | 'en_GB' | 'de_DE';\n /**\n * GoCardless mandates associated with this customer\n */\n mandates: {\n /**\n * URL to list GoCardless mandates associated with this customer\n */\n url: string;\n };\n contacts: {\n /**\n * URL to get the contacts of the customer.\n */\n url: string;\n };\n };\n};\n\nexport type GetCompanyCustomerResponse = GetCompanyCustomerResponses[keyof GetCompanyCustomerResponses];\n\nexport type PutCompanyCustomerData = {\n body: {\n name?: string;\n vat_number?: string;\n reg_no?: string;\n phone?: string;\n billing_address?: {\n address?: string;\n postal_code?: string;\n city?: string;\n country_alpha2?: string;\n };\n delivery_address?: {\n address?: string;\n postal_code?: string;\n city?: string;\n country_alpha2?: string;\n } | null;\n payment_conditions?: ('upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days') & unknown;\n billing_iban?: string | null;\n /**\n * The name of the person to whom the invoice is addressed\n */\n recipient?: string;\n reference?: string | null;\n notes?: string | null;\n emails?: Array<string>;\n /**\n * You can use your own unique value when creating the customer. If not provided, Pennylane will pick one for you. Value must be unique\n */\n external_reference?: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language?: 'fr_FR' | 'en_GB' | 'de_DE';\n };\n path: {\n /**\n * Company customer identifier\n */\n id: string;\n };\n query?: never;\n url: '/api/external/v2/company_customers/{id}';\n};\n\nexport type PutCompanyCustomerErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Conflict with the current state of the target resource, such as when trying to create a resource that already exists.\n */\n 409: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PutCompanyCustomerError = PutCompanyCustomerErrors[keyof PutCompanyCustomerErrors];\n\nexport type PutCompanyCustomerResponses = {\n /**\n * Returns the updated company customer\n */\n 200: {\n id: number;\n name: string;\n billing_iban: string | null;\n /**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\n payment_conditions: 'upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n /**\n * The name of the person to whom the invoice is addressed\n */\n recipient: string;\n phone: string;\n reference: string | null;\n notes: string | null;\n vat_number: string;\n reg_no: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n created_at: string;\n updated_at: string;\n /**\n * The unique external reference assigned to this customer, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language: 'fr_FR' | 'en_GB' | 'de_DE';\n /**\n * GoCardless mandates associated with this customer\n */\n mandates: {\n /**\n * URL to list GoCardless mandates associated with this customer\n */\n url: string;\n };\n contacts: {\n /**\n * URL to get the contacts of the customer.\n */\n url: string;\n };\n };\n};\n\nexport type PutCompanyCustomerResponse = PutCompanyCustomerResponses[keyof PutCompanyCustomerResponses];\n\nexport type PostIndividualCustomerData = {\n body: {\n first_name: string;\n last_name: string;\n phone?: string;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address?: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n payment_conditions?: ('upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days') & unknown;\n billing_iban?: string | null;\n recipient?: string;\n reference?: string | null;\n ledger_account?: {\n number: string;\n } | null;\n notes?: string | null;\n emails?: Array<string>;\n /**\n * You can use your own unique value when creating the product. If not provided, Pennylane will pick one for you. Value must be unique\n */\n external_reference?: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language?: 'fr_FR' | 'en_GB' | 'de_DE';\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/individual_customers';\n};\n\nexport type PostIndividualCustomerErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Conflict with the current state of the target resource, such as when trying to create a resource that already exists.\n */\n 409: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostIndividualCustomerError = PostIndividualCustomerErrors[keyof PostIndividualCustomerErrors];\n\nexport type PostIndividualCustomerResponses = {\n /**\n * Returns the created individual customer\n */\n 201: {\n id: number;\n name: string;\n billing_iban: string | null;\n /**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\n payment_conditions: 'upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n recipient: string;\n phone: string;\n reference: string | null;\n notes: string | null;\n first_name: string;\n last_name: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n created_at: string;\n updated_at: string;\n /**\n * The unique external reference assigned to this customer, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language: 'fr_FR' | 'en_GB' | 'de_DE';\n /**\n * GoCardless mandates associated with this customer\n */\n mandates: {\n /**\n * URL to list GoCardless mandates associated with this customer\n */\n url: string;\n };\n contacts: {\n /**\n * URL to get the contacts of the customer.\n */\n url: string;\n };\n };\n};\n\nexport type PostIndividualCustomerResponse = PostIndividualCustomerResponses[keyof PostIndividualCustomerResponses];\n\nexport type GetIndividualCustomerData = {\n body?: never;\n path: {\n /**\n * Individual customer identifier\n */\n id: string;\n };\n query?: never;\n url: '/api/external/v2/individual_customers/{id}';\n};\n\nexport type GetIndividualCustomerErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetIndividualCustomerError = GetIndividualCustomerErrors[keyof GetIndividualCustomerErrors];\n\nexport type GetIndividualCustomerResponses = {\n /**\n * Returns an individual customer\n */\n 200: {\n id: number;\n name: string;\n billing_iban: string | null;\n /**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\n payment_conditions: 'upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n recipient: string;\n phone: string;\n reference: string | null;\n notes: string | null;\n first_name: string;\n last_name: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n created_at: string;\n updated_at: string;\n /**\n * The unique external reference assigned to this customer, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language: 'fr_FR' | 'en_GB' | 'de_DE';\n /**\n * GoCardless mandates associated with this customer\n */\n mandates: {\n /**\n * URL to list GoCardless mandates associated with this customer\n */\n url: string;\n };\n contacts: {\n /**\n * URL to get the contacts of the customer.\n */\n url: string;\n };\n };\n};\n\nexport type GetIndividualCustomerResponse = GetIndividualCustomerResponses[keyof GetIndividualCustomerResponses];\n\nexport type PutIndividualCustomerData = {\n body: {\n first_name?: string;\n last_name?: string;\n phone?: string;\n billing_address?: {\n address?: string;\n postal_code?: string;\n city?: string;\n country_alpha2?: string;\n };\n delivery_address?: {\n address?: string;\n postal_code?: string;\n city?: string;\n country_alpha2?: string;\n } | null;\n /**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\n payment_conditions?: 'upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n billing_iban?: string | null;\n recipient?: string;\n reference?: string | null;\n notes?: string | null;\n emails?: Array<string>;\n /**\n * The unique external reference assigned to this customer, assigned on creation either by you or Pennylane.\n */\n external_reference?: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language?: 'fr_FR' | 'en_GB' | 'de_DE';\n };\n path: {\n /**\n * Individual customer identifier\n */\n id: string;\n };\n query?: never;\n url: '/api/external/v2/individual_customers/{id}';\n};\n\nexport type PutIndividualCustomerErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Conflict with the current state of the target resource, such as when trying to create a resource that already exists.\n */\n 409: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PutIndividualCustomerError = PutIndividualCustomerErrors[keyof PutIndividualCustomerErrors];\n\nexport type PutIndividualCustomerResponses = {\n /**\n * Returns the updated individual customer\n */\n 200: {\n id: number;\n name: string;\n billing_iban: string | null;\n /**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\n payment_conditions: 'upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n recipient: string;\n phone: string;\n reference: string | null;\n notes: string | null;\n first_name: string;\n last_name: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n created_at: string;\n updated_at: string;\n /**\n * The unique external reference assigned to this customer, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language: 'fr_FR' | 'en_GB' | 'de_DE';\n /**\n * GoCardless mandates associated with this customer\n */\n mandates: {\n /**\n * URL to list GoCardless mandates associated with this customer\n */\n url: string;\n };\n contacts: {\n /**\n * URL to get the contacts of the customer.\n */\n url: string;\n };\n };\n};\n\nexport type PutIndividualCustomerResponse = PutIndividualCustomerResponses[keyof PutIndividualCustomerResponses];\n\nexport type GetCustomersData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and values:\n * - `id`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `customer_type`: `eq`, `not_eq`\n * - `ledger_account_id`: `eq`, `not_eq`\n * - `name`: `start_with`, `eq`\n * - `external_reference`: `start_with`, `eq`, `not_eq`, `in`, `not_in`\n * - `reg_no`: `eq`, `not_eq`, `in`, `not_in`\n * - `emails`: `in`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/customers';\n};\n\nexport type GetCustomersErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCustomersError = GetCustomersErrors[keyof GetCustomersErrors];\n\nexport type GetCustomersResponses = {\n /**\n * Returns a list of both company and individual customers\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n name: string;\n billing_iban: string | null;\n /**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\n payment_conditions: 'upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n /**\n * The name of the person to whom the invoice is addressed\n */\n recipient: string;\n phone: string;\n reference: string | null;\n notes: string | null;\n vat_number: string;\n reg_no: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n created_at: string;\n updated_at: string;\n customer_type: 'company';\n /**\n * The unique external reference assigned to this customer, assigned on creation either by you or Pennylane.\n */\n external_reference: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language: 'fr_FR' | 'en_GB' | 'de_DE';\n /**\n * GoCardless mandates associated with this customer\n */\n mandates: {\n /**\n * URL to list GoCardless mandates associated with this customer\n */\n url: string;\n };\n contacts: {\n /**\n * URL to get the contacts of the customer.\n */\n url: string;\n };\n } | {\n id: number;\n name: string;\n billing_iban: string | null;\n /**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\n payment_conditions: 'upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n recipient: string;\n phone: string;\n reference: string | null;\n notes: string | null;\n first_name: string;\n last_name: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n created_at: string;\n updated_at: string;\n customer_type: 'individual';\n /**\n * The unique external reference assigned to this customer, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language: 'fr_FR' | 'en_GB' | 'de_DE';\n /**\n * GoCardless mandates associated with this customer\n */\n mandates: {\n /**\n * URL to list GoCardless mandates associated with this customer\n */\n url: string;\n };\n contacts: {\n /**\n * URL to get the contacts of the customer.\n */\n url: string;\n };\n }>;\n };\n};\n\nexport type GetCustomersResponse = GetCustomersResponses[keyof GetCustomersResponses];\n\nexport type GetCustomerData = {\n body?: never;\n path: {\n /**\n * Customer identifier\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/customers/{id}';\n};\n\nexport type GetCustomerErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCustomerError = GetCustomerErrors[keyof GetCustomerErrors];\n\nexport type GetCustomerResponses = {\n /**\n * Returns a company customer\n */\n 200: {\n id: number;\n name: string;\n billing_iban: string | null;\n /**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\n payment_conditions: 'upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n /**\n * The name of the person to whom the invoice is addressed\n */\n recipient: string;\n phone: string;\n reference: string | null;\n notes: string | null;\n vat_number: string;\n reg_no: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n created_at: string;\n updated_at: string;\n customer_type: 'company';\n /**\n * The unique external reference assigned to this customer, assigned on creation either by you or Pennylane.\n */\n external_reference: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language: 'fr_FR' | 'en_GB' | 'de_DE';\n /**\n * GoCardless mandates associated with this customer\n */\n mandates: {\n /**\n * URL to list GoCardless mandates associated with this customer\n */\n url: string;\n };\n contacts: {\n /**\n * URL to get the contacts of the customer.\n */\n url: string;\n };\n } | {\n id: number;\n name: string;\n billing_iban: string | null;\n /**\n * Note that the `custom` option is only used on Pennylane's web app to avoid pre-filling the deadline when creating an invoice. On the API it has no effect and you will still have to provide a deadline when creating an invoice.\n */\n payment_conditions: 'upon_receipt' | 'custom' | '7_days' | '15_days' | '30_days' | '30_days_end_of_month' | '45_days' | '45_days_end_of_month' | '60_days';\n recipient: string;\n phone: string;\n reference: string | null;\n notes: string | null;\n first_name: string;\n last_name: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n billing_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n delivery_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n created_at: string;\n updated_at: string;\n customer_type: 'individual';\n /**\n * The unique external reference assigned to this customer, assigned on creation either by you or Pennylane. (Same attribute as `source_id` in the API v1)\n */\n external_reference: string;\n /**\n * The language in which the customer will receive invoices. Default is `fr_FR`\n */\n billing_language: 'fr_FR' | 'en_GB' | 'de_DE';\n /**\n * GoCardless mandates associated with this customer\n */\n mandates: {\n /**\n * URL to list GoCardless mandates associated with this customer\n */\n url: string;\n };\n contacts: {\n /**\n * URL to get the contacts of the customer.\n */\n url: string;\n };\n };\n};\n\nexport type GetCustomerResponse = GetCustomerResponses[keyof GetCustomerResponses];\n\nexport type GetCustomerContactsData = {\n body?: never;\n path: {\n customer_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/customers/{customer_id}/contacts';\n};\n\nexport type GetCustomerContactsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCustomerContactsError = GetCustomerContactsErrors[keyof GetCustomerContactsErrors];\n\nexport type GetCustomerContactsResponses = {\n /**\n * The list of contacts of a customer\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n first_name: string;\n last_name: string;\n role: string;\n email: string;\n telephone_number: string;\n mobile_number: string;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetCustomerContactsResponse = GetCustomerContactsResponses[keyof GetCustomerContactsResponses];\n\nexport type GetSuppliersData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and values:\n * - `id`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `ledger_account_id`: `eq`, `not_eq`\n * - `name`: `start_with`\n * - `external_reference`: `eq`, `not_eq`, `in`, `not_in`\n * - `emails`: `in`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/suppliers';\n};\n\nexport type GetSuppliersErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetSuppliersError = GetSuppliersErrors[keyof GetSuppliersErrors];\n\nexport type GetSuppliersResponses = {\n /**\n * Returns a list of suppliers\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n /**\n * The list of items returned\n */\n items: Array<{\n id: number;\n name: string;\n /**\n * Supplier identification number (SIRET).\n * - 14-digit number combining SIREN (9 digits) and NIC (5 digits)\n * - Only applicable for French companies\n *\n */\n establishment_no: string | null;\n /**\n * Supplier registration number (SIREN).\n * - 9-digit number\n * - Only applicable for French companies\n *\n */\n reg_no: string | null;\n vat_number: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n /**\n * The IBAN of the supplier\n */\n iban: string;\n postal_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n supplier_payment_method: 'automatic_transfer' | 'manual_transfer' | 'automatic_debiting' | 'bill_of_exchange' | 'check' | 'cash' | 'card';\n supplier_due_date_delay: number | null;\n supplier_due_date_rule: 'days' | 'days_or_end_of_month';\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane\n */\n external_reference: string;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetSuppliersResponse = GetSuppliersResponses[keyof GetSuppliersResponses];\n\nexport type PostSupplierData = {\n body: {\n name: string;\n /**\n * Supplier identification number (SIRET).\n * - 14-digit number combining SIREN (9 digits) and NIC (5 digits)\n * - Only applicable for French companies\n *\n */\n establishment_no?: string;\n /**\n * Supplier registration number (SIREN).\n * - 9-digit number\n * - Only applicable for French companies\n *\n */\n reg_no?: string;\n postal_address?: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n vat_number?: string;\n ledger_account?: {\n number: string;\n } | null;\n emails?: Array<string>;\n iban?: string;\n supplier_payment_method?: 'automatic_transfer' | 'manual_transfer' | 'automatic_debiting' | 'bill_of_exchange' | 'check' | 'cash' | 'card';\n supplier_due_date_delay?: number;\n supplier_due_date_rule?: 'days' | 'days_or_end_of_month';\n /**\n * A unique external reference you can provide to track this supplier. If not provided, Pennylane will generate an identifier for you.\n */\n external_reference?: string;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/suppliers';\n};\n\nexport type PostSupplierErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Conflict with the current state of the target resource, such as when trying to create a resource that already exists.\n */\n 409: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostSupplierError = PostSupplierErrors[keyof PostSupplierErrors];\n\nexport type PostSupplierResponses = {\n /**\n * Returns the created supplier\n */\n 201: {\n id: number;\n name: string;\n /**\n * Supplier identification number (SIRET).\n * - 14-digit number combining SIREN (9 digits) and NIC (5 digits)\n * - Only applicable for French companies\n *\n */\n establishment_no: string | null;\n /**\n * Supplier registration number (SIREN).\n * - 9-digit number\n * - Only applicable for French companies\n *\n */\n reg_no: string | null;\n vat_number: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n /**\n * The IBAN of the supplier\n */\n iban: string;\n postal_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n supplier_payment_method: 'automatic_transfer' | 'manual_transfer' | 'automatic_debiting' | 'bill_of_exchange' | 'check' | 'cash' | 'card';\n supplier_due_date_delay: number | null;\n supplier_due_date_rule: 'days' | 'days_or_end_of_month';\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane\n */\n external_reference: string;\n created_at: string;\n updated_at: string;\n };\n};\n\nexport type PostSupplierResponse = PostSupplierResponses[keyof PostSupplierResponses];\n\nexport type GetSupplierData = {\n body?: never;\n path: {\n /**\n * Supplier identifier\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/suppliers/{id}';\n};\n\nexport type GetSupplierErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetSupplierError = GetSupplierErrors[keyof GetSupplierErrors];\n\nexport type GetSupplierResponses = {\n /**\n * Returns a supplier\n */\n 200: {\n id: number;\n name: string;\n /**\n * Supplier identification number (SIRET).\n * - 14-digit number combining SIREN (9 digits) and NIC (5 digits)\n * - Only applicable for French companies\n *\n */\n establishment_no: string | null;\n /**\n * Supplier registration number (SIREN).\n * - 9-digit number\n * - Only applicable for French companies\n *\n */\n reg_no: string | null;\n vat_number: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n /**\n * The IBAN of the supplier\n */\n iban: string;\n postal_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n supplier_payment_method: 'automatic_transfer' | 'manual_transfer' | 'automatic_debiting' | 'bill_of_exchange' | 'check' | 'cash' | 'card';\n supplier_due_date_delay: number | null;\n supplier_due_date_rule: 'days' | 'days_or_end_of_month';\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane\n */\n external_reference: string;\n created_at: string;\n updated_at: string;\n };\n};\n\nexport type GetSupplierResponse = GetSupplierResponses[keyof GetSupplierResponses];\n\nexport type PutSupplierData = {\n body: {\n name?: string;\n /**\n * Supplier identification number (SIRET).\n * - 14-digit number combining SIREN (9 digits) and NIC (5 digits)\n * - Only applicable for French companies\n *\n */\n establishment_no?: string;\n /**\n * Supplier registration number (SIREN).\n * - 9-digit number\n * - Only applicable for French companies\n *\n */\n reg_no?: string;\n postal_address?: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n vat_number?: string;\n emails?: Array<string>;\n iban?: string;\n supplier_payment_method?: 'automatic_transfer' | 'manual_transfer' | 'automatic_debiting' | 'bill_of_exchange' | 'check' | 'cash' | 'card';\n supplier_due_date_delay?: number | null;\n supplier_due_date_rule?: 'days' | 'days_or_end_of_month';\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane.\n */\n external_reference?: string;\n };\n path: {\n id: number;\n };\n query?: never;\n url: '/api/external/v2/suppliers/{id}';\n};\n\nexport type PutSupplierErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PutSupplierError = PutSupplierErrors[keyof PutSupplierErrors];\n\nexport type PutSupplierResponses = {\n /**\n * Returns the updated supplier\n */\n 200: {\n id: number;\n name: string;\n /**\n * Supplier identification number (SIRET).\n * - 14-digit number combining SIREN (9 digits) and NIC (5 digits)\n * - Only applicable for French companies\n *\n */\n establishment_no: string | null;\n /**\n * Supplier registration number (SIREN).\n * - 9-digit number\n * - Only applicable for French companies\n *\n */\n reg_no: string | null;\n vat_number: string;\n ledger_account: {\n id: number;\n } | null;\n emails: Array<string>;\n /**\n * The IBAN of the supplier\n */\n iban: string;\n postal_address: {\n address: string;\n postal_code: string;\n city: string;\n country_alpha2: string;\n };\n supplier_payment_method: 'automatic_transfer' | 'manual_transfer' | 'automatic_debiting' | 'bill_of_exchange' | 'check' | 'cash' | 'card';\n supplier_due_date_delay: number | null;\n supplier_due_date_rule: 'days' | 'days_or_end_of_month';\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane\n */\n external_reference: string;\n created_at: string;\n updated_at: string;\n };\n};\n\nexport type PutSupplierResponse = PutSupplierResponses[keyof PutSupplierResponses];\n\nexport type PostUsersData = {\n body?: {\n /**\n * The user information to create\n */\n user: {\n /**\n * Email of the user\n */\n email: string;\n /**\n * First name of the user\n */\n first_name: string;\n /**\n * Last name of the user\n */\n last_name: string;\n /**\n * Phone number of the user\n */\n phone_number: string;\n /**\n * Whether to send an invitation to the user.\n * If set to `true`, the user will receive an email to set up their password and account.\n *\n */\n send_invitation: boolean;\n };\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/users';\n};\n\nexport type PostUsersErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostUsersError = PostUsersErrors[keyof PostUsersErrors];\n\nexport type PostUsersResponses = {\n /**\n * User was created\n */\n 201: {\n /**\n * The created user\n */\n user: {\n /**\n * Id of the user\n */\n id: number;\n /**\n * Email of the user\n */\n email: string;\n /**\n * Date and time when the user was created\n */\n created_at: string;\n /**\n * Date and time when the user was last updated\n */\n updated_at: string;\n };\n };\n};\n\nexport type PostUsersResponse = PostUsersResponses[keyof PostUsersResponses];\n\nexport type FindUserData = {\n body?: never;\n path?: never;\n query: {\n /**\n * Email of the user to find. The email must be URL encoded.\n */\n email: string;\n };\n url: '/api/external/v2/users/find';\n};\n\nexport type FindUserErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type FindUserError = FindUserErrors[keyof FindUserErrors];\n\nexport type FindUserResponses = {\n /**\n * User was found\n */\n 200: {\n /**\n * Details of the user\n */\n user: {\n /**\n * Id of the user\n */\n id: number;\n /**\n * Email of the user\n */\n email: string;\n };\n };\n};\n\nexport type FindUserResponse = FindUserResponses[keyof FindUserResponses];\n\nexport type PutUsersData = {\n body?: {\n /**\n * The user information to create\n */\n user: {\n /**\n * Email of the user\n */\n email?: string;\n };\n };\n path: {\n id: string;\n };\n query?: never;\n url: '/api/external/v2/users/{id}';\n};\n\nexport type PutUsersErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PutUsersError = PutUsersErrors[keyof PutUsersErrors];\n\nexport type PutUsersResponses = {\n /**\n * User was updated\n */\n 200: {\n /**\n * The updated user\n */\n user: {\n /**\n * Id of the user\n */\n id: number;\n /**\n * Email of the user\n */\n email: string;\n /**\n * Date and time when the user was created\n */\n created_at: string;\n /**\n * Date and time when the user was last updated\n */\n updated_at: string;\n };\n };\n};\n\nexport type PutUsersResponse = PutUsersResponses[keyof PutUsersResponses];\n\nexport type GetMeData = {\n body?: never;\n path?: never;\n query?: never;\n url: '/api/external/v2/me';\n};\n\nexport type GetMeErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n};\n\nexport type GetMeError = GetMeErrors[keyof GetMeErrors];\n\nexport type GetMeResponses = {\n /**\n * Returns the user and the company\n */\n 200: {\n user: {\n id: number;\n first_name: string;\n last_name: string;\n email: string;\n locale: 'fr' | 'en' | 'de';\n } | null;\n company: {\n id: number;\n name: string;\n reg_no: string;\n };\n /**\n * OAuth scopes associated with the access token\n */\n scopes: Array<string>;\n };\n};\n\nexport type GetMeResponse = GetMeResponses[keyof GetMeResponses];\n\nexport type GetCustomerInvoiceInvoiceLineSectionsData = {\n body?: never;\n path: {\n customer_invoice_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/invoice_line_sections';\n};\n\nexport type GetCustomerInvoiceInvoiceLineSectionsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCustomerInvoiceInvoiceLineSectionsError = GetCustomerInvoiceInvoiceLineSectionsErrors[keyof GetCustomerInvoiceInvoiceLineSectionsErrors];\n\nexport type GetCustomerInvoiceInvoiceLineSectionsResponses = {\n /**\n * Returns the list of invoice line sections for a customer invoice\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Invoice line section id\n */\n id: number;\n /**\n * Invoice line section label\n */\n title: string | null;\n /**\n * Invoice line section description\n */\n description: string | null;\n /**\n * The rank of the section in the invoice. The rank is used to order the sections in the invoice.\n */\n rank: number;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetCustomerInvoiceInvoiceLineSectionsResponse = GetCustomerInvoiceInvoiceLineSectionsResponses[keyof GetCustomerInvoiceInvoiceLineSectionsResponses];\n\nexport type GetCustomerInvoiceInvoiceLinesData = {\n body?: never;\n path: {\n customer_invoice_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`, `rank`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/invoice_lines';\n};\n\nexport type GetCustomerInvoiceInvoiceLinesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCustomerInvoiceInvoiceLinesError = GetCustomerInvoiceInvoiceLinesErrors[keyof GetCustomerInvoiceInvoiceLinesErrors];\n\nexport type GetCustomerInvoiceInvoiceLinesResponses = {\n /**\n * Returns the list of invoice lines for a customer invoice\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Invoice line id\n */\n id: number;\n /**\n * Invoice line label\n */\n label: string;\n /**\n * The kind of unit which applies to the amount\n */\n unit: string | null;\n /**\n * Invoice line item quantity (number of items)\n */\n quantity: string;\n /**\n * The total amount of the invoice lines in euros including taxes and deducting discounts\n */\n amount: string;\n /**\n * The total amount of the invoice lines in the document's currency including taxes and deducting discounts.\n * If the currency is euro, amount and currency_amount are identical.\n *\n */\n currency_amount: string;\n /**\n * Invoice line description\n */\n description: string;\n product: {\n /**\n * Product id\n */\n id: number;\n /**\n * URL to get the product.\n */\n url: string;\n } | null;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Total amount before tax in currency\n */\n currency_amount_before_tax: string;\n /**\n * Total tax amount in currency\n */\n currency_tax: string;\n /**\n * Total tax amount in euros\n */\n tax: string;\n /**\n * Unit price (excluding tax)\n */\n raw_currency_unit_price: string;\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the invoice\n */\n value: string;\n };\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank: number | null;\n imputation_dates: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n } | null;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetCustomerInvoiceInvoiceLinesResponse = GetCustomerInvoiceInvoiceLinesResponses[keyof GetCustomerInvoiceInvoiceLinesResponses];\n\nexport type GetCustomerInvoicePaymentsData = {\n body?: never;\n path: {\n customer_invoice_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/payments';\n};\n\nexport type GetCustomerInvoicePaymentsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCustomerInvoicePaymentsError = GetCustomerInvoicePaymentsErrors[keyof GetCustomerInvoicePaymentsErrors];\n\nexport type GetCustomerInvoicePaymentsResponses = {\n /**\n * Returns the list of payments for a customer invoice.\n * If the invoice is draft or credit note, an empty list will be returned.\n *\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Payment id\n */\n id: number;\n /**\n * Payment label\n */\n label: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL' | null;\n /**\n * The amount of the payment in the currency\n */\n currency_amount: string;\n status: 'initiated' | 'pending' | 'emitted' | 'found' | 'not_found' | 'aborted' | 'error' | 'refunded' | 'prepared' | 'pending_customer_approval' | 'pending_submission' | 'submitted' | 'confirmed' | 'paid_out' | 'cancelled' | 'customer_approval_denied' | 'failed' | 'charged_back' | 'resubmission_requested';\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetCustomerInvoicePaymentsResponse = GetCustomerInvoicePaymentsResponses[keyof GetCustomerInvoicePaymentsResponses];\n\nexport type GetCustomerInvoiceMatchedTransactionsData = {\n body?: never;\n path: {\n customer_invoice_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/matched_transactions';\n};\n\nexport type GetCustomerInvoiceMatchedTransactionsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCustomerInvoiceMatchedTransactionsError = GetCustomerInvoiceMatchedTransactionsErrors[keyof GetCustomerInvoiceMatchedTransactionsErrors];\n\nexport type GetCustomerInvoiceMatchedTransactionsResponses = {\n /**\n * Returns the list of matched transactions for a customer invoice. If the invoice is archived, or draft, an empty list will be returned.\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Bank transaction identifier\n */\n id: number;\n label: string | null;\n /**\n * When `true`, the transaction need to be justified and matched with an invoice\n */\n attachment_required: boolean;\n date: string;\n /**\n * This is the balance of the bank transaction after it has been\n * processed.\n *\n */\n outstanding_balance: string | null;\n created_at: string;\n updated_at: string;\n archived_at: string | null;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL' | null;\n /**\n * Amount in the currency of the transaction.\n */\n currency_amount: string;\n /**\n * Transaction amount in euros. If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount: string;\n /**\n * Fee in the currency of the transaction.\n */\n currency_fee: string | null;\n /**\n * Transaction fee in euros. If the currency is euro, `currency_fee` and `fee`\n * are identical.\n *\n */\n fee: string | null;\n journal: {\n id: number;\n };\n bank_account: {\n id: number;\n url: string;\n };\n pro_account_expense: {\n employee: {\n id: number;\n first_name: string;\n last_name: string;\n } | null;\n card_masked_number: string;\n } | null;\n customer: {\n id: number;\n url: string;\n } | null;\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n }>;\n };\n};\n\nexport type GetCustomerInvoiceMatchedTransactionsResponse = GetCustomerInvoiceMatchedTransactionsResponses[keyof GetCustomerInvoiceMatchedTransactionsResponses];\n\nexport type PostCustomerInvoiceMatchedTransactionsData = {\n body: {\n /**\n * ID of the transaction\n */\n transaction_id: number;\n };\n path: {\n customer_invoice_id: number;\n };\n query?: never;\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/matched_transactions';\n};\n\nexport type PostCustomerInvoiceMatchedTransactionsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostCustomerInvoiceMatchedTransactionsError = PostCustomerInvoiceMatchedTransactionsErrors[keyof PostCustomerInvoiceMatchedTransactionsErrors];\n\nexport type PostCustomerInvoiceMatchedTransactionsResponses = {\n /**\n * Transaction matched successfully\n */\n 204: void;\n};\n\nexport type PostCustomerInvoiceMatchedTransactionsResponse = PostCustomerInvoiceMatchedTransactionsResponses[keyof PostCustomerInvoiceMatchedTransactionsResponses];\n\nexport type DeleteCustomerInvoiceMatchedTransactionsData = {\n body?: never;\n path: {\n customer_invoice_id: number;\n id: number;\n };\n query?: never;\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/matched_transactions/{id}';\n};\n\nexport type DeleteCustomerInvoiceMatchedTransactionsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type DeleteCustomerInvoiceMatchedTransactionsError = DeleteCustomerInvoiceMatchedTransactionsErrors[keyof DeleteCustomerInvoiceMatchedTransactionsErrors];\n\nexport type DeleteCustomerInvoiceMatchedTransactionsResponses = {\n /**\n * Transaction unmatched successfully\n */\n 204: void;\n};\n\nexport type DeleteCustomerInvoiceMatchedTransactionsResponse = DeleteCustomerInvoiceMatchedTransactionsResponses[keyof DeleteCustomerInvoiceMatchedTransactionsResponses];\n\nexport type GetCustomerInvoiceAppendicesData = {\n body?: never;\n path: {\n customer_invoice_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n };\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/appendices';\n};\n\nexport type GetCustomerInvoiceAppendicesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCustomerInvoiceAppendicesError = GetCustomerInvoiceAppendicesErrors[keyof GetCustomerInvoiceAppendicesErrors];\n\nexport type GetCustomerInvoiceAppendicesResponses = {\n /**\n * The list of appendices of the customer invoice\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n /**\n * URL to the uploaded file.\n */\n url: string;\n filename: string;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetCustomerInvoiceAppendicesResponse = GetCustomerInvoiceAppendicesResponses[keyof GetCustomerInvoiceAppendicesResponses];\n\nexport type PostCustomerInvoiceAppendicesData = {\n body: {\n /**\n * The appendix file you want to upload.\n * Allowed content types:\n * - image/png\n * - image/jpeg\n * - image/tiff\n * - image/bmp\n * - image/gif\n * - application/pdf\n *\n */\n file: Blob | File;\n };\n path: {\n customer_invoice_id: number;\n };\n query?: never;\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/appendices';\n};\n\nexport type PostCustomerInvoiceAppendicesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostCustomerInvoiceAppendicesError = PostCustomerInvoiceAppendicesErrors[keyof PostCustomerInvoiceAppendicesErrors];\n\nexport type PostCustomerInvoiceAppendicesResponses = {\n /**\n * Returns the created appendix\n */\n 201: {\n id: number;\n /**\n * URL to the uploaded file.\n */\n url: string;\n filename: string;\n created_at: string;\n updated_at: string;\n };\n};\n\nexport type PostCustomerInvoiceAppendicesResponse = PostCustomerInvoiceAppendicesResponses[keyof PostCustomerInvoiceAppendicesResponses];\n\nexport type DeleteCustomerInvoicesData = {\n body?: never;\n path: {\n /**\n * The unique identifier of the customer invoice\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/customer_invoices/{id}';\n};\n\nexport type DeleteCustomerInvoicesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type DeleteCustomerInvoicesError = DeleteCustomerInvoicesErrors[keyof DeleteCustomerInvoicesErrors];\n\nexport type DeleteCustomerInvoicesResponses = {\n /**\n * Draft invoice deleted\n */\n 204: void;\n};\n\nexport type DeleteCustomerInvoicesResponse = DeleteCustomerInvoicesResponses[keyof DeleteCustomerInvoicesResponses];\n\nexport type GetCustomerInvoiceData = {\n body?: never;\n path: {\n /**\n * The unique identifier of the customer invoice\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/customer_invoices/{id}';\n};\n\nexport type GetCustomerInvoiceErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCustomerInvoiceError = GetCustomerInvoiceErrors[keyof GetCustomerInvoiceErrors];\n\nexport type GetCustomerInvoiceResponses = {\n /**\n * A Customer Invoice or a credit note\n */\n 200: {\n /**\n * Invoice identifier\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * Invoice paid status (set to True if the invoice is paid)\n */\n paid: boolean;\n status: 'archived' | 'incomplete' | 'cancelled' | 'paid' | 'partially_cancelled' | 'upcoming' | 'late' | 'draft' | 'credit_note';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n /**\n * Indicates if the invoice is in draft (has not been finalized)\n */\n draft: boolean;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the invoice.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n custom_header_fields: {\n /**\n * URL to get the custom header fields of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n billing_subscription: {\n id: number;\n } | null;\n /**\n * The credited invoice if the invoice is a credit note.\n */\n credited_invoice: {\n id: number;\n /**\n * URL to get the credited invoice.\n */\n url: string;\n } | null;\n customer_invoice_template: {\n id: number;\n } | null;\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n appendices: {\n /**\n * URL to get the appendices of the invoice.\n */\n url: string;\n };\n /**\n * The quote at the origin of the invoice\n */\n quote: {\n id: number;\n } | null;\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n };\n};\n\nexport type GetCustomerInvoiceResponse = GetCustomerInvoiceResponses[keyof GetCustomerInvoiceResponses];\n\nexport type UpdateCustomerInvoiceData = {\n body: {\n /**\n * Invoice date (ISO 8601)\n */\n date?: string;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline?: string;\n /**\n * Customer identifier\n */\n customer_id?: number;\n /**\n * The customer invoice template ID\n */\n customer_invoice_template_id?: number;\n /**\n * For example, the contact details of the person to contact\n */\n pdf_invoice_free_text?: string | null;\n /**\n * Invoice title\n */\n pdf_invoice_subject?: string | null;\n /**\n * Invoice description. Maximum 5,000 characters.\n */\n pdf_description?: string | null;\n /**\n * Invoice Currency (ISO 4217). Default is EUR.\n */\n currency?: string;\n /**\n * Additional details. maximum 20,000 characters.\n */\n special_mention?: string | null;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string | null;\n };\n language?: 'fr_FR' | 'en_GB';\n /**\n * Add, update, delete invoice lines.\n */\n invoice_lines?: {\n create?: Array<{\n /**\n * The product ID. Auto-fills label, raw_currency_unit_price, unit, vat_rate, and ledger_account_id from the product.\n */\n product_id: number;\n /**\n * Line item label\n */\n label?: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price?: string;\n /**\n * Line item unit (type of unit)\n */\n unit?: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n } | {\n /**\n * Line item label\n */\n label: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Line item unit (type of unit)\n */\n unit: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The description of the invoice line\n */\n description?: string | null;\n }>;\n update?: Array<{\n /**\n * ID of the invoice line\n */\n id: number;\n /**\n * Line item label\n */\n label?: string;\n /**\n * Line item quantity (number of items)\n */\n quantity?: number;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes. Can be set up to 6 decimals.\n */\n raw_currency_unit_price?: string;\n /**\n * Line item unit (type of unit)\n */\n unit?: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * The description of the invoice line\n */\n description?: string | null;\n /**\n * The product ID\n */\n product_id?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * Has to correspond to the rank number of an invoice line section in which the invoice line should be\n */\n section_rank?: number;\n }>;\n /**\n * Delete invoice lines. Any cutoffs (deferrals, assets, or advances)\n * associated with the deleted invoice lines will be automatically destroyed\n * unless they have generated ledger events, in which case deletion will fail.\n *\n */\n delete?: Array<{\n /**\n * ID of the invoice line\n */\n id: number;\n }>;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane.\n */\n external_reference?: string;\n } | {\n /**\n * Schema for creating/updating a transaction reference\n */\n transaction_reference?: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n /**\n * Update invoice lines.\n */\n invoice_lines?: {\n update?: Array<{\n /**\n * Invoice line identifier\n */\n id: number;\n imputation_dates?: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n };\n }>;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane.\n */\n external_reference?: string;\n };\n path: {\n /**\n * The unique identifier of the customer invoice\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/customer_invoices/{id}';\n};\n\nexport type UpdateCustomerInvoiceErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type UpdateCustomerInvoiceError = UpdateCustomerInvoiceErrors[keyof UpdateCustomerInvoiceErrors];\n\nexport type UpdateCustomerInvoiceResponses = {\n /**\n * A Customer Invoice\n */\n 200: {\n /**\n * Invoice identifier\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * Invoice paid status (set to True if the invoice is paid)\n */\n paid: boolean;\n status: 'archived' | 'incomplete' | 'cancelled' | 'paid' | 'partially_cancelled' | 'upcoming' | 'late' | 'draft' | 'credit_note';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n /**\n * Indicates if the invoice is in draft (has not been finalized)\n */\n draft: boolean;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the invoice.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n custom_header_fields: {\n /**\n * URL to get the custom header fields of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n billing_subscription: {\n id: number;\n } | null;\n /**\n * The credited invoice if the invoice is a credit note.\n */\n credited_invoice: {\n id: number;\n /**\n * URL to get the credited invoice.\n */\n url: string;\n } | null;\n customer_invoice_template: {\n id: number;\n } | null;\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n appendices: {\n /**\n * URL to get the appendices of the invoice.\n */\n url: string;\n };\n /**\n * The quote at the origin of the invoice\n */\n quote: {\n id: number;\n } | null;\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n };\n};\n\nexport type UpdateCustomerInvoiceResponse = UpdateCustomerInvoiceResponses[keyof UpdateCustomerInvoiceResponses];\n\nexport type MarkAsPaidCustomerInvoiceData = {\n body?: never;\n path: {\n /**\n * The unique identifier of the customer invoice\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/customer_invoices/{id}/mark_as_paid';\n};\n\nexport type MarkAsPaidCustomerInvoiceErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type MarkAsPaidCustomerInvoiceError = MarkAsPaidCustomerInvoiceErrors[keyof MarkAsPaidCustomerInvoiceErrors];\n\nexport type MarkAsPaidCustomerInvoiceResponses = {\n /**\n * Customer invoice marked as paid\n */\n 204: void;\n};\n\nexport type MarkAsPaidCustomerInvoiceResponse = MarkAsPaidCustomerInvoiceResponses[keyof MarkAsPaidCustomerInvoiceResponses];\n\nexport type SendByEmailCustomerInvoiceData = {\n body?: {\n /**\n * Email recipients.\n *\n * If empty, the email will be sent to the recipient email addresses specified for the customer of this invoice.\n *\n */\n recipients?: Array<string>;\n };\n path: {\n /**\n * The unique identifier of the customer invoice\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/customer_invoices/{id}/send_by_email';\n};\n\nexport type SendByEmailCustomerInvoiceErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Conflict with the current state of the target resource, such as when trying to create a resource that already exists.\n */\n 409: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type SendByEmailCustomerInvoiceError = SendByEmailCustomerInvoiceErrors[keyof SendByEmailCustomerInvoiceErrors];\n\nexport type SendByEmailCustomerInvoiceResponses = {\n /**\n * Invoice is being sent by email\n */\n 204: void;\n};\n\nexport type SendByEmailCustomerInvoiceResponse = SendByEmailCustomerInvoiceResponses[keyof SendByEmailCustomerInvoiceResponses];\n\nexport type GetCustomerInvoiceCategoriesData = {\n body?: never;\n path: {\n customer_invoice_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n };\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/categories';\n};\n\nexport type GetCustomerInvoiceCategoriesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCustomerInvoiceCategoriesError = GetCustomerInvoiceCategoriesErrors[keyof GetCustomerInvoiceCategoriesErrors];\n\nexport type GetCustomerInvoiceCategoriesResponses = {\n /**\n * The list of categories of the customer invoice. If the invoice is draft, an empty list will be returned.\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetCustomerInvoiceCategoriesResponse = GetCustomerInvoiceCategoriesResponses[keyof GetCustomerInvoiceCategoriesResponses];\n\nexport type PutCustomerInvoiceCategoriesData = {\n body: Array<{\n id: number;\n /**\n * A number between `0` and `1`, including `1`. It must have a maximum of 4 decimals. `0.85` means 85%.\n */\n weight: string;\n }>;\n path: {\n customer_invoice_id: number;\n };\n query?: never;\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/categories';\n};\n\nexport type PutCustomerInvoiceCategoriesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PutCustomerInvoiceCategoriesError = PutCustomerInvoiceCategoriesErrors[keyof PutCustomerInvoiceCategoriesErrors];\n\nexport type PutCustomerInvoiceCategoriesResponses = {\n /**\n * The list of categories of the customer invoice\n */\n 200: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n};\n\nexport type PutCustomerInvoiceCategoriesResponse = PutCustomerInvoiceCategoriesResponses[keyof PutCustomerInvoiceCategoriesResponses];\n\nexport type UpdateImportedCustomerInvoiceData = {\n body: {\n /**\n * Invoice date (ISO 8601)\n */\n date?: string;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline?: string;\n /**\n * Customer identifier\n */\n customer_id?: number;\n /**\n * Invoice number\n */\n invoice_number?: string;\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax?: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount?: string;\n /**\n * Invoice amount in euros (total value of the invoice in euros). If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount?: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n currency_tax?: string;\n /**\n * Invoice taxable amount (in euros). If the currency is euro, `currency_tax` and `tax` are identical.\n */\n tax?: string;\n /**\n * Schema for creating/updating a transaction reference\n */\n transaction_reference?: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n /**\n * Add, update, delete invoice lines.\n */\n invoice_lines?: {\n create?: Array<{\n /**\n * Invoice line total amount in the currency of the invoice.\n */\n currency_amount: string;\n /**\n * Invoice line amount in euros.\n */\n amount?: string;\n /**\n * Invoice line taxable amount (in euros).\n */\n currency_tax: string;\n /**\n * Total tax amount in currency\n */\n tax?: string;\n /**\n * Line item label.\n *\n * > ⚠️ This attribute is deprecated and will be removed soon.\n *\n *\n * @deprecated\n */\n label: string;\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes. Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Line item unit (type of unit)\n */\n unit: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * The description of the invoice line\n *\n * > ⚠️ This attribute is deprecated and will be removed soon.\n *\n *\n * @deprecated\n */\n description?: string | null;\n /**\n * The product ID\n */\n product_id?: number;\n imputation_dates?: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n } | null;\n ledger_entry_line?: {\n /**\n * Ledger entry line label.\n * Ledger entry lines with identical labels, tax, and ledger accounts will be automatically compacted into a single line.\n *\n */\n label: string;\n };\n }>;\n update?: Array<{\n /**\n * ID of the invoice line\n */\n id: number;\n /**\n * Invoice line total amount in the currency of the invoice.\n */\n currency_amount?: string;\n /**\n * Invoice line amount in euros.\n */\n amount?: string;\n /**\n * Invoice line taxable amount (in euros).\n */\n currency_tax?: string;\n /**\n * Total tax amount in currency\n */\n tax?: string;\n /**\n * Line item label.\n *\n * > ⚠️ This attribute is deprecated and will be removed soon.\n *\n *\n * @deprecated\n */\n label?: string;\n /**\n * Line item quantity (number of items)\n */\n quantity?: number;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes. Can be set up to 6 decimals.\n */\n raw_currency_unit_price?: string;\n /**\n * Line item unit (type of unit)\n */\n unit?: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * The description of the invoice line\n *\n * > ⚠️ This attribute is deprecated and will be removed soon.\n *\n *\n * @deprecated\n */\n description?: string | null;\n /**\n * The product ID\n */\n product_id?: number;\n imputation_dates?: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n };\n ledger_entry_line?: {\n /**\n * Ledger entry line label.\n * Ledger entry lines with identical labels, tax, and ledger accounts will be automatically compacted into a single line.\n *\n */\n label: string | null;\n };\n }>;\n /**\n * Delete invoice lines. Any cutoffs (deferrals, assets, or advances)\n * associated with the deleted invoice lines will be automatically destroyed\n * unless they have generated ledger events, in which case deletion will fail.\n *\n */\n delete?: Array<{\n /**\n * ID of the invoice line\n */\n id: number;\n }>;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane.\n */\n external_reference?: string;\n };\n path: {\n /**\n * The ID of the imported customer invoice\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/customer_invoices/{id}/update_imported';\n};\n\nexport type UpdateImportedCustomerInvoiceErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type UpdateImportedCustomerInvoiceError = UpdateImportedCustomerInvoiceErrors[keyof UpdateImportedCustomerInvoiceErrors];\n\nexport type UpdateImportedCustomerInvoiceResponses = {\n /**\n * The imported customer invoice\n */\n 200: {\n /**\n * Invoice identifier\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * Invoice paid status (set to True if the invoice is paid)\n */\n paid: boolean;\n status: 'archived' | 'incomplete' | 'cancelled' | 'paid' | 'partially_cancelled' | 'upcoming' | 'late' | 'draft' | 'credit_note';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n /**\n * Indicates if the invoice is in draft (has not been finalized)\n */\n draft: boolean;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the invoice.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n custom_header_fields: {\n /**\n * URL to get the custom header fields of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n billing_subscription: {\n id: number;\n } | null;\n /**\n * The credited invoice if the invoice is a credit note.\n */\n credited_invoice: {\n id: number;\n /**\n * URL to get the credited invoice.\n */\n url: string;\n } | null;\n customer_invoice_template: {\n id: number;\n } | null;\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n appendices: {\n /**\n * URL to get the appendices of the invoice.\n */\n url: string;\n };\n /**\n * The quote at the origin of the invoice\n */\n quote: {\n id: number;\n } | null;\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n };\n};\n\nexport type UpdateImportedCustomerInvoiceResponse = UpdateImportedCustomerInvoiceResponses[keyof UpdateImportedCustomerInvoiceResponses];\n\nexport type FinalizeCustomerInvoiceData = {\n body?: never;\n path: {\n /**\n * The unique identifier of the customer invoice\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/customer_invoices/{id}/finalize';\n};\n\nexport type FinalizeCustomerInvoiceErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type FinalizeCustomerInvoiceError = FinalizeCustomerInvoiceErrors[keyof FinalizeCustomerInvoiceErrors];\n\nexport type FinalizeCustomerInvoiceResponses = {\n /**\n * A Customer Invoice\n */\n 200: {\n /**\n * Invoice identifier\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * Invoice paid status (set to True if the invoice is paid)\n */\n paid: boolean;\n status: 'archived' | 'incomplete' | 'cancelled' | 'paid' | 'partially_cancelled' | 'upcoming' | 'late' | 'draft' | 'credit_note';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n /**\n * Indicates if the invoice is in draft (has not been finalized)\n */\n draft: boolean;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the invoice.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n custom_header_fields: {\n /**\n * URL to get the custom header fields of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n billing_subscription: {\n id: number;\n } | null;\n /**\n * The credited invoice if the invoice is a credit note.\n */\n credited_invoice: {\n id: number;\n /**\n * URL to get the credited invoice.\n */\n url: string;\n } | null;\n customer_invoice_template: {\n id: number;\n } | null;\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n appendices: {\n /**\n * URL to get the appendices of the invoice.\n */\n url: string;\n };\n /**\n * The quote at the origin of the invoice\n */\n quote: {\n id: number;\n } | null;\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n };\n};\n\nexport type FinalizeCustomerInvoiceResponse = FinalizeCustomerInvoiceResponses[keyof FinalizeCustomerInvoiceResponses];\n\nexport type LinkCreditNoteData = {\n body: {\n /**\n * The credit note ID\n */\n credit_note_id: number;\n };\n path: {\n /**\n * The unique identifier of the customer invoice\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/customer_invoices/{id}/link_credit_note';\n};\n\nexport type LinkCreditNoteErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type LinkCreditNoteError = LinkCreditNoteErrors[keyof LinkCreditNoteErrors];\n\nexport type LinkCreditNoteResponses = {\n /**\n * The linked credit note\n */\n 200: {\n /**\n * Invoice identifier\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * Invoice paid status (set to True if the invoice is paid)\n */\n paid: boolean;\n status: 'archived' | 'incomplete' | 'cancelled' | 'paid' | 'partially_cancelled' | 'upcoming' | 'late' | 'draft' | 'credit_note';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n /**\n * Indicates if the invoice is in draft (has not been finalized)\n */\n draft: boolean;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the invoice.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n custom_header_fields: {\n /**\n * URL to get the custom header fields of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n billing_subscription: {\n id: number;\n } | null;\n /**\n * The credited invoice if the invoice is a credit note.\n */\n credited_invoice: {\n id: number;\n /**\n * URL to get the credited invoice.\n */\n url: string;\n } | null;\n customer_invoice_template: {\n id: number;\n } | null;\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n appendices: {\n /**\n * URL to get the appendices of the invoice.\n */\n url: string;\n };\n /**\n * The quote at the origin of the invoice\n */\n quote: {\n id: number;\n } | null;\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n };\n};\n\nexport type LinkCreditNoteResponse = LinkCreditNoteResponses[keyof LinkCreditNoteResponses];\n\nexport type GetSupplierInvoiceLinesData = {\n body?: never;\n path: {\n supplier_invoice_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/invoice_lines';\n};\n\nexport type GetSupplierInvoiceLinesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetSupplierInvoiceLinesError = GetSupplierInvoiceLinesErrors[keyof GetSupplierInvoiceLinesErrors];\n\nexport type GetSupplierInvoiceLinesResponses = {\n /**\n * Returns the list of invoice lines for a supplier invoice\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Invoice line id\n */\n id: number;\n /**\n * Invoice line label\n */\n label: string;\n /**\n * The total amount of the invoice lines in euros including taxes and deducting discounts\n */\n amount: string;\n /**\n * The total amount of the invoice lines in the document's currency including taxes and deducting discounts.\n * If the currency is euro, amount and currency_amount are identical.\n *\n */\n currency_amount: string;\n /**\n * Invoice line description\n */\n description: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Total amount before tax in currency\n */\n currency_amount_before_tax: string;\n /**\n * Total tax amount in currency\n */\n currency_tax: string;\n /**\n * Total tax amount in euros\n */\n tax: string;\n imputation_dates: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n } | null;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetSupplierInvoiceLinesResponse = GetSupplierInvoiceLinesResponses[keyof GetSupplierInvoiceLinesResponses];\n\nexport type GetSupplierInvoicesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and values:\n * - `id`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `supplier_id`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `invoice_number`: `eq`, `not_eq`, `in`, `not_in`\n * - `date`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `category_id`: `in`\n * - `external_reference`: `eq`, `not_eq`, `in`, `not_in`\n * - `payment_status`: `eq`, `not_eq`, `in`, `not_in`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`, `date`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/supplier_invoices';\n};\n\nexport type GetSupplierInvoicesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetSupplierInvoicesError = GetSupplierInvoicesErrors[keyof GetSupplierInvoicesErrors];\n\nexport type GetSupplierInvoicesResponses = {\n /**\n * A list of supplier invoices\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * The ID of the supplier invoice\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros). If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros). If the currency is euro, `currency_tax` and `tax` are identical.\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n /**\n * Whether the invoice has been reconciled or not\n */\n reconciled: boolean;\n /**\n * The accounting state of the invoice.\n * - `draft`: The invoice is not yet sent to the accountant.\n * - `archived`: The invoice has been archived.\n * - `entry`: The invoice is incomplete. Some information is missing on the invoice and needs to be completed by SME.\n * - `validation_needed`: The invoice is sent to the accountant and needs validation.\n * - `complete`: The invoice has been validated by the accountant.\n *\n */\n accounting_status: 'draft' | 'archived' | 'entry' | 'validation_needed' | 'complete';\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n supplier: {\n id: number;\n /**\n * URL to get the supplier.\n */\n url: string;\n } | null;\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payment_status: 'to_be_processed' | 'to_be_paid' | 'partially_paid' | 'payment_error' | 'payment_scheduled' | 'payment_in_progress' | 'payment_emitted' | 'payment_found' | 'paid_offline' | 'fully_paid';\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n }>;\n };\n};\n\nexport type GetSupplierInvoicesResponse = GetSupplierInvoicesResponses[keyof GetSupplierInvoicesResponses];\n\nexport type GetSupplierInvoiceData = {\n body?: never;\n path: {\n /**\n * Supplier invoice identifier\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/supplier_invoices/{id}';\n};\n\nexport type GetSupplierInvoiceErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetSupplierInvoiceError = GetSupplierInvoiceErrors[keyof GetSupplierInvoiceErrors];\n\nexport type GetSupplierInvoiceResponses = {\n /**\n * Returns a supplier invoice\n */\n 200: {\n /**\n * The ID of the supplier invoice\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros). If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros). If the currency is euro, `currency_tax` and `tax` are identical.\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n /**\n * Whether the invoice has been reconciled or not\n */\n reconciled: boolean;\n /**\n * The accounting state of the invoice.\n * - `draft`: The invoice is not yet sent to the accountant.\n * - `archived`: The invoice has been archived.\n * - `entry`: The invoice is incomplete. Some information is missing on the invoice and needs to be completed by SME.\n * - `validation_needed`: The invoice is sent to the accountant and needs validation.\n * - `complete`: The invoice has been validated by the accountant.\n *\n */\n accounting_status: 'draft' | 'archived' | 'entry' | 'validation_needed' | 'complete';\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n supplier: {\n id: number;\n /**\n * URL to get the supplier.\n */\n url: string;\n } | null;\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payment_status: 'to_be_processed' | 'to_be_paid' | 'partially_paid' | 'payment_error' | 'payment_scheduled' | 'payment_in_progress' | 'payment_emitted' | 'payment_found' | 'paid_offline' | 'fully_paid';\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n };\n};\n\nexport type GetSupplierInvoiceResponse = GetSupplierInvoiceResponses[keyof GetSupplierInvoiceResponses];\n\nexport type PutSupplierInvoiceData = {\n body: {\n /**\n * The ID of the supplier to import the invoice for\n */\n supplier_id?: number;\n /**\n * The date of the invoice (ISO 8601)\n */\n date?: string;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline?: string;\n /**\n * The invoice number\n */\n invoice_number?: string;\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax?: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount?: string;\n /**\n * Invoice amount in euros (total value of the invoice in euros). If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount?: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n currency_tax?: string;\n /**\n * Invoice taxable amount (in euros). If the currency is euro, `currency_tax` and `tax` are identical.\n */\n tax?: string;\n /**\n * By adding this field you can automatically reconcile the newly imported invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference?: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n /**\n * Add, update, delete invoice lines\n */\n invoice_lines?: {\n create?: Array<{\n /**\n * Invoice line label\n */\n label: string;\n /**\n * Invoice line description\n */\n description?: string;\n /**\n * Invoice line total amount in the currency of the invoice.\n */\n currency_amount: string;\n /**\n * Invoice line amount in euros. If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount?: string;\n /**\n * Invoice line taxable amount (in euros). If the currency is euro, `currency_tax` and `tax` are identical.\n */\n currency_tax: string;\n /**\n * Total tax amount in currency\n */\n tax?: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n imputation_dates?: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n };\n ledger_entry_line?: {\n /**\n * Ledger entry line label.\n * Ledger entry lines with identical labels, tax, and ledger accounts will be automatically compacted into a single line.\n *\n */\n label: string;\n };\n }>;\n update?: Array<{\n /**\n * The ID of the invoice line to update\n */\n id: number;\n /**\n * Invoice line label\n */\n label?: string;\n /**\n * Invoice line description\n */\n description?: string;\n /**\n * Invoice line total amount in the currency of the invoice.\n */\n currency_amount?: string;\n /**\n * Invoice line amount in euros. If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount?: string;\n /**\n * Invoice line taxable amount (in euros). If the currency is euro, `currency_tax` and `tax` are identical.\n */\n currency_tax?: string;\n /**\n * Total tax amount in currency\n */\n tax?: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n imputation_dates?: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n };\n ledger_entry_line?: {\n /**\n * Ledger entry line label.\n * Ledger entry lines with identical labels, tax, and ledger accounts will be automatically compacted into a single line.\n *\n */\n label: string | null;\n };\n }>;\n delete?: Array<{\n /**\n * The ID of the invoice line to delete\n */\n id: number;\n }>;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane.\n */\n external_reference?: string;\n };\n path: {\n /**\n * Supplier invoice identifier\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/supplier_invoices/{id}';\n};\n\nexport type PutSupplierInvoiceErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PutSupplierInvoiceError = PutSupplierInvoiceErrors[keyof PutSupplierInvoiceErrors];\n\nexport type PutSupplierInvoiceResponses = {\n /**\n * The updated supplier invoice\n */\n 200: {\n /**\n * The ID of the supplier invoice\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros). If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros). If the currency is euro, `currency_tax` and `tax` are identical.\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n /**\n * Whether the invoice has been reconciled or not\n */\n reconciled: boolean;\n /**\n * The accounting state of the invoice.\n * - `draft`: The invoice is not yet sent to the accountant.\n * - `archived`: The invoice has been archived.\n * - `entry`: The invoice is incomplete. Some information is missing on the invoice and needs to be completed by SME.\n * - `validation_needed`: The invoice is sent to the accountant and needs validation.\n * - `complete`: The invoice has been validated by the accountant.\n *\n */\n accounting_status: 'draft' | 'archived' | 'entry' | 'validation_needed' | 'complete';\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n supplier: {\n id: number;\n /**\n * URL to get the supplier.\n */\n url: string;\n } | null;\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payment_status: 'to_be_processed' | 'to_be_paid' | 'partially_paid' | 'payment_error' | 'payment_scheduled' | 'payment_in_progress' | 'payment_emitted' | 'payment_found' | 'paid_offline' | 'fully_paid';\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n };\n};\n\nexport type PutSupplierInvoiceResponse = PutSupplierInvoiceResponses[keyof PutSupplierInvoiceResponses];\n\nexport type GetSupplierInvoiceCategoriesData = {\n body?: never;\n path: {\n supplier_invoice_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n };\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/categories';\n};\n\nexport type GetSupplierInvoiceCategoriesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetSupplierInvoiceCategoriesError = GetSupplierInvoiceCategoriesErrors[keyof GetSupplierInvoiceCategoriesErrors];\n\nexport type GetSupplierInvoiceCategoriesResponses = {\n /**\n * The list of categories of the supplier invoice\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetSupplierInvoiceCategoriesResponse = GetSupplierInvoiceCategoriesResponses[keyof GetSupplierInvoiceCategoriesResponses];\n\nexport type PutSupplierInvoiceCategoriesData = {\n body: Array<{\n id: number;\n /**\n * A number between `0` and `1`, including `1`. It must have a maximum of 4 decimals. `0.85` means 85%.\n */\n weight: string;\n }>;\n path: {\n supplier_invoice_id: number;\n };\n query?: never;\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/categories';\n};\n\nexport type PutSupplierInvoiceCategoriesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PutSupplierInvoiceCategoriesError = PutSupplierInvoiceCategoriesErrors[keyof PutSupplierInvoiceCategoriesErrors];\n\nexport type PutSupplierInvoiceCategoriesResponses = {\n /**\n * The list of categories of the supplier invoice\n */\n 200: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n};\n\nexport type PutSupplierInvoiceCategoriesResponse = PutSupplierInvoiceCategoriesResponses[keyof PutSupplierInvoiceCategoriesResponses];\n\nexport type GetSupplierInvoicePaymentsData = {\n body?: never;\n path: {\n supplier_invoice_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/payments';\n};\n\nexport type GetSupplierInvoicePaymentsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetSupplierInvoicePaymentsError = GetSupplierInvoicePaymentsErrors[keyof GetSupplierInvoicePaymentsErrors];\n\nexport type GetSupplierInvoicePaymentsResponses = {\n /**\n * Returns the list of payments for a supplier invoice\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Payment id\n */\n id: number;\n /**\n * Payment label\n */\n label: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL' | null;\n /**\n * The amount of the payment in the currency\n */\n currency_amount: string;\n status: 'initiated' | 'pending' | 'emitted' | 'found' | 'not_found' | 'aborted' | 'error' | 'refunded' | 'prepared' | 'pending_customer_approval' | 'pending_submission' | 'submitted' | 'confirmed' | 'paid_out' | 'cancelled' | 'customer_approval_denied' | 'failed' | 'charged_back' | 'resubmission_requested';\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetSupplierInvoicePaymentsResponse = GetSupplierInvoicePaymentsResponses[keyof GetSupplierInvoicePaymentsResponses];\n\nexport type UpdateSupplierInvoicePaymentStatusData = {\n body: {\n payment_status: 'paid' | 'to_be_paid';\n };\n path: {\n /**\n * Supplier invoice identifier\n */\n supplier_invoice_id: number;\n };\n query?: never;\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/payment_status';\n};\n\nexport type UpdateSupplierInvoicePaymentStatusErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type UpdateSupplierInvoicePaymentStatusError = UpdateSupplierInvoicePaymentStatusErrors[keyof UpdateSupplierInvoicePaymentStatusErrors];\n\nexport type UpdateSupplierInvoicePaymentStatusResponses = {\n /**\n * The supplier invoice payment status was successfully updated\n */\n 204: void;\n};\n\nexport type UpdateSupplierInvoicePaymentStatusResponse = UpdateSupplierInvoicePaymentStatusResponses[keyof UpdateSupplierInvoicePaymentStatusResponses];\n\nexport type GetSupplierInvoiceMatchedTransactionsData = {\n body?: never;\n path: {\n supplier_invoice_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/matched_transactions';\n};\n\nexport type GetSupplierInvoiceMatchedTransactionsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetSupplierInvoiceMatchedTransactionsError = GetSupplierInvoiceMatchedTransactionsErrors[keyof GetSupplierInvoiceMatchedTransactionsErrors];\n\nexport type GetSupplierInvoiceMatchedTransactionsResponses = {\n /**\n * Returns the list of matched transactions for a supplier invoice. If the invoice is archived, an empty list will be returned.\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Transaction identifier\n */\n id: number;\n label: string | null;\n /**\n * When `true`, the transaction need to be justified and matched with an invoice\n */\n attachment_required: boolean;\n date: string;\n /**\n * This is the balance of the transaction after it has been\n * processed.\n *\n */\n outstanding_balance: string | null;\n created_at: string;\n updated_at: string;\n archived_at: string | null;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL' | null;\n /**\n * Amount in the currency of the transaction.\n */\n currency_amount: string;\n /**\n * Transaction amount in euros. If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount: string;\n /**\n * Fee in the currency of the transaction.\n */\n currency_fee: string | null;\n /**\n * Transaction fee in euros. If the currency is euro, `currency_fee` and `fee`\n * are identical.\n *\n */\n fee: string | null;\n journal: {\n id: number;\n };\n bank_account: {\n id: number;\n url: string;\n };\n pro_account_expense: {\n employee: {\n id: number;\n first_name: string;\n last_name: string;\n } | null;\n card_masked_number: string;\n } | null;\n supplier: {\n id: number;\n url: string;\n } | null;\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n }>;\n };\n};\n\nexport type GetSupplierInvoiceMatchedTransactionsResponse = GetSupplierInvoiceMatchedTransactionsResponses[keyof GetSupplierInvoiceMatchedTransactionsResponses];\n\nexport type PostSupplierInvoiceMatchedTransactionsData = {\n body: {\n /**\n * ID of the transaction\n */\n transaction_id: number;\n };\n path: {\n supplier_invoice_id: number;\n };\n query?: never;\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/matched_transactions';\n};\n\nexport type PostSupplierInvoiceMatchedTransactionsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostSupplierInvoiceMatchedTransactionsError = PostSupplierInvoiceMatchedTransactionsErrors[keyof PostSupplierInvoiceMatchedTransactionsErrors];\n\nexport type PostSupplierInvoiceMatchedTransactionsResponses = {\n /**\n * Transaction matched successfully\n */\n 204: void;\n};\n\nexport type PostSupplierInvoiceMatchedTransactionsResponse = PostSupplierInvoiceMatchedTransactionsResponses[keyof PostSupplierInvoiceMatchedTransactionsResponses];\n\nexport type DeleteSupplierInvoiceMatchedTransactionsData = {\n body?: never;\n path: {\n supplier_invoice_id: number;\n id: number;\n };\n query?: never;\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/matched_transactions/{id}';\n};\n\nexport type DeleteSupplierInvoiceMatchedTransactionsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type DeleteSupplierInvoiceMatchedTransactionsError = DeleteSupplierInvoiceMatchedTransactionsErrors[keyof DeleteSupplierInvoiceMatchedTransactionsErrors];\n\nexport type DeleteSupplierInvoiceMatchedTransactionsResponses = {\n /**\n * Transaction unmatched successfully\n */\n 204: void;\n};\n\nexport type DeleteSupplierInvoiceMatchedTransactionsResponse = DeleteSupplierInvoiceMatchedTransactionsResponses[keyof DeleteSupplierInvoiceMatchedTransactionsResponses];\n\nexport type PostSupplierInvoiceLinkedPurchaseRequestsData = {\n body: {\n /**\n * ID of the Purchase request\n */\n purchase_request_id: number;\n };\n path: {\n supplier_invoice_id: number;\n };\n query?: never;\n url: '/api/external/v2/supplier_invoices/{supplier_invoice_id}/linked_purchase_requests';\n};\n\nexport type PostSupplierInvoiceLinkedPurchaseRequestsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostSupplierInvoiceLinkedPurchaseRequestsError = PostSupplierInvoiceLinkedPurchaseRequestsErrors[keyof PostSupplierInvoiceLinkedPurchaseRequestsErrors];\n\nexport type PostSupplierInvoiceLinkedPurchaseRequestsResponses = {\n /**\n * Purchase request linked successfully\n */\n 204: void;\n};\n\nexport type PostSupplierInvoiceLinkedPurchaseRequestsResponse = PostSupplierInvoiceLinkedPurchaseRequestsResponses[keyof PostSupplierInvoiceLinkedPurchaseRequestsResponses];\n\nexport type ImportSupplierInvoiceData = {\n body: {\n /**\n * The ID of the supplier invoice file attachment to import\n */\n file_attachment_id: number;\n /**\n * This will mark the invoice as incomplete.\n */\n import_as_incomplete?: boolean;\n /**\n * The ID of the supplier to import the invoice for\n */\n supplier_id: number;\n /**\n * The date of the invoice (ISO 8601)\n */\n date: string;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string;\n /**\n * The invoice number\n */\n invoice_number?: string;\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice amount in euros (total value of the invoice in euros). If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount?: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in euros). If the currency is euro, `currency_tax` and `tax` are identical.\n */\n tax?: string;\n /**\n * By adding this field you can automatically reconcile the newly imported invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference?: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n };\n invoice_lines: Array<{\n /**\n * Invoice line label\n *\n * > ⚠️ This attribute is deprecated and will be removed soon.\n *\n *\n * @deprecated\n */\n label?: string;\n /**\n * Invoice line description\n *\n * > ⚠️ This attribute is deprecated and will be removed soon.\n *\n *\n * @deprecated\n */\n description?: string;\n /**\n * Invoice line total amount in the currency of the invoice.\n */\n currency_amount: string;\n /**\n * Invoice line amount in euros. If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount?: string;\n /**\n * Invoice line taxable amount (in euros). If the currency is euro, `currency_tax` and `tax` are identical.\n */\n currency_tax: string;\n /**\n * Total tax amount in currency\n */\n tax?: string;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n imputation_dates?: {\n /**\n * Start date of the imputation period (ISO 8601)\n */\n start_date: string;\n /**\n * End date of the imputation period (ISO 8601)\n */\n end_date: string;\n };\n ledger_entry_line?: {\n /**\n * Ledger entry line label.\n * Ledger entry lines with identical labels, tax, and ledger accounts will be automatically compacted into a single line.\n *\n */\n label: string;\n };\n }>;\n /**\n * A unique external reference you can provide to track this supplier. If not provided, Pennylane will generate an identifier for you.\n */\n external_reference?: string;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/supplier_invoices/import';\n};\n\nexport type ImportSupplierInvoiceErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Conflict with the current state of the target resource, such as when trying to create a resource that already exists.\n */\n 409: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type ImportSupplierInvoiceError = ImportSupplierInvoiceErrors[keyof ImportSupplierInvoiceErrors];\n\nexport type ImportSupplierInvoiceResponses = {\n /**\n * The imported supplier invoice\n */\n 201: {\n /**\n * The ID of the supplier invoice\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros). If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros). If the currency is euro, `currency_tax` and `tax` are identical.\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n /**\n * Whether the invoice has been reconciled or not\n */\n reconciled: boolean;\n /**\n * The accounting state of the invoice.\n * - `draft`: The invoice is not yet sent to the accountant.\n * - `archived`: The invoice has been archived.\n * - `entry`: The invoice is incomplete. Some information is missing on the invoice and needs to be completed by SME.\n * - `validation_needed`: The invoice is sent to the accountant and needs validation.\n * - `complete`: The invoice has been validated by the accountant.\n *\n */\n accounting_status: 'draft' | 'archived' | 'entry' | 'validation_needed' | 'complete';\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n supplier: {\n id: number;\n /**\n * URL to get the supplier.\n */\n url: string;\n } | null;\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payment_status: 'to_be_processed' | 'to_be_paid' | 'partially_paid' | 'payment_error' | 'payment_scheduled' | 'payment_in_progress' | 'payment_emitted' | 'payment_found' | 'paid_offline' | 'fully_paid';\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n };\n};\n\nexport type ImportSupplierInvoiceResponse = ImportSupplierInvoiceResponses[keyof ImportSupplierInvoiceResponses];\n\nexport type ValidateAccountingSupplierInvoiceData = {\n body?: never;\n path: {\n id: number;\n };\n query?: never;\n url: '/api/external/v2/supplier_invoices/{id}/validate_accounting';\n};\n\nexport type ValidateAccountingSupplierInvoiceErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type ValidateAccountingSupplierInvoiceError = ValidateAccountingSupplierInvoiceErrors[keyof ValidateAccountingSupplierInvoiceErrors];\n\nexport type ValidateAccountingSupplierInvoiceResponses = {\n /**\n * A Supplier Invoice\n */\n 200: {\n /**\n * The ID of the supplier invoice\n */\n id: number;\n label: string | null;\n invoice_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Invoice amount (total value of the invoice in euros). If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount: string;\n /**\n * Invoice currency amount (total value of the invoice in the currency of the invoice)\n */\n currency_amount: string;\n /**\n * Invoice currency amount before tax (total value before tax of the invoice in the currency of the invoice)\n */\n currency_amount_before_tax: string;\n /**\n * Invoice exchange rate (used to convert the invoice to euros. If the invoice currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Invoice issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Invoice payment deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Invoice taxable amount (in euros). If the currency is euro, `currency_tax` and `tax` are identical.\n */\n currency_tax: string;\n /**\n * Invoice taxable amount (in invoice currency)\n */\n tax: string;\n /**\n * Whether the invoice has been reconciled or not\n */\n reconciled: boolean;\n /**\n * The accounting state of the invoice.\n * - `draft`: The invoice is not yet sent to the accountant.\n * - `archived`: The invoice has been archived.\n * - `entry`: The invoice is incomplete. Some information is missing on the invoice and needs to be completed by SME.\n * - `validation_needed`: The invoice is sent to the accountant and needs validation.\n * - `complete`: The invoice has been validated by the accountant.\n *\n */\n accounting_status: 'draft' | 'archived' | 'entry' | 'validation_needed' | 'complete';\n /**\n * Name of the file attached to the invoice\n */\n filename: string | null;\n /**\n * Public URL of the invoice file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * The remaining amount with VAT to pay for the invoice to be considered paid\n */\n remaining_amount_with_tax: string | null;\n /**\n * The remaining amount without VAT to pay for the invoice to be considered paid\n */\n remaining_amount_without_tax: string | null;\n ledger_entry: {\n /**\n * Ledger entry identifier\n */\n id: number;\n };\n supplier: {\n id: number;\n /**\n * URL to get the supplier.\n */\n url: string;\n } | null;\n invoice_lines: {\n /**\n * URL to get the invoice lines of the invoice.\n */\n url: string;\n };\n categories: {\n /**\n * URL to get the categories of the invoice.\n */\n url: string;\n };\n /**\n * This reconciles the invoice with a transaction. See documentation about [automatic payment matching](https://pennylane.readme.io/v2.0/docs/automating-payment-matching).\n */\n transaction_reference: {\n /**\n * The banking provider for the transaction\n */\n banking_provider: string;\n /**\n * Name of the field that you want to match\n */\n provider_field_name: string;\n /**\n * Value that you want to match\n */\n provider_field_value: string;\n } | null;\n payment_status: 'to_be_processed' | 'to_be_paid' | 'partially_paid' | 'payment_error' | 'payment_scheduled' | 'payment_in_progress' | 'payment_emitted' | 'payment_found' | 'paid_offline' | 'fully_paid';\n payments: {\n /**\n * URL to get the payments of the invoice.\n */\n url: string;\n };\n matched_transactions: {\n /**\n * URL to get the transactions of the invoice.\n */\n url: string;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane\n */\n external_reference: string;\n /**\n * The time the invoice has been archived\n */\n archived_at: string | null;\n /**\n * The time the invoice has been created\n */\n created_at: string;\n /**\n * The last time the invoice has been updated\n */\n updated_at: string;\n };\n};\n\nexport type ValidateAccountingSupplierInvoiceResponse = ValidateAccountingSupplierInvoiceResponses[keyof ValidateAccountingSupplierInvoiceResponses];\n\nexport type CompanyCreateData = {\n body?: {\n /**\n * Array of IDs of executives belonging to the company\n */\n user_ids: Array<number>;\n company: {\n /**\n * The name of the company\n */\n name: string;\n /**\n * The registration number of the company\n */\n reg_no: string;\n /**\n * The ISO 3166-1 alpha-2 code of the country where the company is registered\n */\n country_alpha2: 'FR' | 'RE' | 'YT' | 'GF' | 'PF' | 'NC' | 'PM' | 'MF' | 'BL' | 'GP' | 'WF' | 'TF' | 'CP' | 'MQ';\n /**\n * The number of employees in the company\n */\n number_of_employees: 'individual' | '1_5' | '6_15';\n /**\n * The Pennylane SaaS plan of the company\n */\n saas_plan: 'v1_basic' | 'v1_essential' | 'v1_pro';\n /**\n * The APE code of the company\n */\n activity_code: string;\n /**\n * The address of the company\n */\n address: string;\n /**\n * The city where the company is located\n */\n city: string;\n /**\n * The postal code of the company\n */\n postal_code: string;\n };\n /**\n * Whether the company must first open a Pro Account to be able to use Pennylane\n */\n force_pro_account_creation: boolean;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/companies';\n};\n\nexport type CompanyCreateErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type CompanyCreateError = CompanyCreateErrors[keyof CompanyCreateErrors];\n\nexport type CompanyCreateResponses = {\n /**\n * Company created\n */\n 201: {\n company: {\n /**\n * The ID of the company\n */\n id: number;\n };\n };\n};\n\nexport type CompanyCreateResponse = CompanyCreateResponses[keyof CompanyCreateResponses];\n\nexport type CompanyCompleteRegistrationData = {\n body?: {\n /**\n * The registration number of the company\n */\n reg_no: string;\n };\n path: {\n /**\n * The ID of the company\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/companies/{id}/complete_registration';\n};\n\nexport type CompanyCompleteRegistrationErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type CompanyCompleteRegistrationError = CompanyCompleteRegistrationErrors[keyof CompanyCompleteRegistrationErrors];\n\nexport type CompanyCompleteRegistrationResponses = {\n /**\n * Company registration completed\n */\n 204: void;\n};\n\nexport type CompanyCompleteRegistrationResponse = CompanyCompleteRegistrationResponses[keyof CompanyCompleteRegistrationResponses];\n\nexport type GetCategoryGroupsData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n };\n url: '/api/external/v2/category_groups';\n};\n\nexport type GetCategoryGroupsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCategoryGroupsError = GetCategoryGroupsErrors[keyof GetCategoryGroupsErrors];\n\nexport type GetCategoryGroupsResponses = {\n /**\n * OK\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n label: string;\n categories: {\n /**\n * URL to get the categories of the group.\n */\n url: string;\n };\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetCategoryGroupsResponse = GetCategoryGroupsResponses[keyof GetCategoryGroupsResponses];\n\nexport type GetCategoryGroupData = {\n body?: never;\n path: {\n /**\n * The unique identifier of the category group\n */\n id: string;\n };\n query?: never;\n url: '/api/external/v2/category_groups/{id}';\n};\n\nexport type GetCategoryGroupErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCategoryGroupError = GetCategoryGroupErrors[keyof GetCategoryGroupErrors];\n\nexport type GetCategoryGroupResponses = {\n /**\n * Returns a category group\n */\n 200: {\n id: number;\n label: string;\n categories: {\n /**\n * URL to get the categories of the group.\n */\n url: string;\n };\n created_at: string;\n updated_at: string;\n };\n};\n\nexport type GetCategoryGroupResponse = GetCategoryGroupResponses[keyof GetCategoryGroupResponses];\n\nexport type GetCategoryGroupCategoriesData = {\n body?: never;\n path: {\n /**\n * The unique identifier of the category group\n */\n category_group_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n };\n url: '/api/external/v2/category_groups/{category_group_id}/categories';\n};\n\nexport type GetCategoryGroupCategoriesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCategoryGroupCategoriesError = GetCategoryGroupCategoriesErrors[keyof GetCategoryGroupCategoriesErrors];\n\nexport type GetCategoryGroupCategoriesResponses = {\n /**\n * A list of categories of a category group\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n label: string;\n direction: 'cash_in' | 'cash_out' | null;\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetCategoryGroupCategoriesResponse = GetCategoryGroupCategoriesResponses[keyof GetCategoryGroupCategoriesResponses];\n\nexport type GetCategoriesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and values:\n * - `id` : `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `label` : `start_with`, `eq`, `in`\n * - `category_group_id` : `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `analytical_code` : `eq`, `not_eq`, `in`, `not_in`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/categories';\n};\n\nexport type GetCategoriesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCategoriesError = GetCategoriesErrors[keyof GetCategoriesErrors];\n\nexport type GetCategoriesResponses = {\n /**\n * A list of categories\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n label: string;\n direction: 'cash_in' | 'cash_out' | null;\n created_at: string;\n updated_at: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n }>;\n };\n};\n\nexport type GetCategoriesResponse = GetCategoriesResponses[keyof GetCategoriesResponses];\n\nexport type PostCategoriesData = {\n body: {\n label: string;\n /**\n * Only applicable for _treasury_ categories. If not provided, defaults to \"cash_out\".\n */\n direction?: 'cash_in' | 'cash_out' | null;\n category_group_id: number;\n analytical_code?: string | null;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/categories';\n};\n\nexport type PostCategoriesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostCategoriesError = PostCategoriesErrors[keyof PostCategoriesErrors];\n\nexport type PostCategoriesResponses = {\n /**\n * Returns the created category\n */\n 201: {\n id: number;\n label: string;\n direction: 'cash_in' | 'cash_out' | null;\n created_at: string;\n updated_at: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n };\n};\n\nexport type PostCategoriesResponse = PostCategoriesResponses[keyof PostCategoriesResponses];\n\nexport type GetCategoryData = {\n body?: never;\n path: {\n /**\n * The unique identifier of the category\n */\n id: string;\n };\n query?: never;\n url: '/api/external/v2/categories/{id}';\n};\n\nexport type GetCategoryErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCategoryError = GetCategoryErrors[keyof GetCategoryErrors];\n\nexport type GetCategoryResponses = {\n /**\n * Returns a category\n */\n 200: {\n id: number;\n label: string;\n direction: 'cash_in' | 'cash_out' | null;\n created_at: string;\n updated_at: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n };\n};\n\nexport type GetCategoryResponse = GetCategoryResponses[keyof GetCategoryResponses];\n\nexport type UpdateCategoryData = {\n body: {\n label?: string;\n /**\n * Only applicable for _treasury_ categories\n */\n direction?: 'cash_in' | 'cash_out';\n analytical_code?: string | null;\n };\n path: {\n /**\n * The unique identifier of the category\n */\n id: string;\n };\n query?: never;\n url: '/api/external/v2/categories/{id}';\n};\n\nexport type UpdateCategoryErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type UpdateCategoryError = UpdateCategoryErrors[keyof UpdateCategoryErrors];\n\nexport type UpdateCategoryResponses = {\n /**\n * Returns the updated category\n */\n 200: {\n id: number;\n label: string;\n direction: 'cash_in' | 'cash_out' | null;\n created_at: string;\n updated_at: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n };\n};\n\nexport type UpdateCategoryResponse = UpdateCategoryResponses[keyof UpdateCategoryResponses];\n\nexport type GetTrialBalanceData = {\n body?: never;\n path?: never;\n query: {\n /**\n * The start of the period you want the trial balance for.\n */\n period_start: string;\n /**\n * The end of the period you want the trial balance for.\n */\n period_end: string;\n /**\n * Whether to include auxiliary accounts or not.\n */\n is_auxiliary?: boolean;\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated, this is the current page which will be returned. The page index is starting at 1.\n *\n * @deprecated\n */\n page?: number;\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated. By default, you get 20 items per page. You can specify another number of items per page.\n *\n * @deprecated\n */\n per_page?: number;\n /**\n * This pagination system is only available in the new version of the API. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Use this to fetch the next set of results. The cursor is an opaque string returned in the previous response's metadata. Leave empty for the first request.\n */\n cursor?: string;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 1000.\n *\n */\n limit?: number;\n };\n url: '/api/external/v2/trial_balance';\n};\n\nexport type GetTrialBalanceErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n};\n\nexport type GetTrialBalanceError = GetTrialBalanceErrors[keyof GetTrialBalanceErrors];\n\nexport type GetTrialBalanceResponses = {\n /**\n * Returns a list of balances grouped by ledger accounts.\n */\n 200: {\n items: Array<{\n /**\n * Ledger account number\n */\n number: string;\n /**\n * Ledger account number with padded\n */\n formatted_number: string;\n /**\n * Ledger account label\n */\n label: string;\n /**\n * Ledger account debits\n */\n debits: string;\n /**\n * Ledger account credits\n */\n credits: string;\n }>;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The total number of pages available\n *\n *\n * @deprecated\n */\n total_pages: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The current page returned\n *\n *\n * @deprecated\n */\n current_page: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The total number of items available\n *\n *\n * @deprecated\n */\n total_items: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The number of items per page\n *\n *\n * @deprecated\n */\n per_page: number | null;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean | null;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type GetTrialBalanceResponse = GetTrialBalanceResponses[keyof GetTrialBalanceResponses];\n\nexport type CompanyFiscalYearsData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated, this is the current page which will be returned. The page index is starting at 1.\n *\n * @deprecated\n */\n page?: number;\n /**\n * This pagination system is **DEPRECATED**. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Items are paginated. By default, you get 20 items per page. You can specify another number of items per page.\n *\n * @deprecated\n */\n per_page?: number;\n /**\n * This pagination system is only available in the new version of the API. For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Use this to fetch the next set of results. The cursor is an opaque string returned in the previous response's metadata. Leave empty for the first request.\n */\n cursor?: string;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields :\n * - `id`, `start`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/fiscal_years';\n};\n\nexport type CompanyFiscalYearsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type CompanyFiscalYearsError = CompanyFiscalYearsErrors[keyof CompanyFiscalYearsErrors];\n\nexport type CompanyFiscalYearsResponses = {\n /**\n * Returns the list of fiscal years of the company.\n *\n * **DEPRECATED BEHAVIOR:**\n * By default, returns fiscal years ordered by ascending `start` date.\n *\n * **NEW BEHAVIOR:**\n * By default, returns fiscal years ordered by descending IDs\n * A new `sort` query parameter is now available allowing to sort by `id` or `start` attributes.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n */\n 200: {\n items: Array<{\n /**\n * The unique identifier of the fiscal year.\n */\n id: number;\n /**\n * The date at which the fiscal year starts.\n */\n start: string;\n /**\n * The date at which the fiscal year ends.\n */\n finish: string;\n /**\n * The status of the fiscal year.\n */\n status: 'open' | 'reopen' | 'closed' | 'frozen';\n /**\n * The time the fiscal year has been created\n */\n created_at: string;\n /**\n * The last time the fiscal year has been updated\n */\n updated_at: string;\n }>;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The total number of pages available\n *\n *\n * @deprecated\n */\n total_pages: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The current page returned\n *\n *\n * @deprecated\n */\n current_page: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The total number of items available\n *\n *\n * @deprecated\n */\n total_items: number | null;\n /**\n * This pagination system is **DEPRECATED**.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n *\n * The number of items per page\n *\n *\n * @deprecated\n */\n per_page: number | null;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean | null;\n /**\n * This pagination system is only available in the new version of the API.\n * For more details, see our API documentation https://pennylane.readme.io/docs/2026-api-changes-guide for migration instructions.\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type CompanyFiscalYearsResponse = CompanyFiscalYearsResponses[keyof CompanyFiscalYearsResponses];\n\nexport type GetCustomerInvoicesChangesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results. The cursor is an opaque string returned in the previous response's metadata. Leave empty for the first request.\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 1000.\n *\n */\n limit?: number;\n /**\n * Filter the changes based on the event date. The date should follow RFC3339 format. If no date is provided, the oldest changes will be returned. Changes for the last 4 weeks are retained, thus providing a `start_date` older than that will result in a 422 response. Providing both `start_date` and `cursor` parameters will result in a 400 response.\n *\n */\n start_date?: string;\n };\n url: '/api/external/v2/changelogs/customer_invoices';\n};\n\nexport type GetCustomerInvoicesChangesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n /**\n * Internal server error\n */\n 500: unknown;\n};\n\nexport type GetCustomerInvoicesChangesError = GetCustomerInvoicesChangesErrors[keyof GetCustomerInvoicesChangesErrors];\n\nexport type GetCustomerInvoicesChangesResponses = {\n /**\n * A list of customer invoices changes\n */\n 200: {\n items: Array<{\n /**\n * Unique identifier of the customer invoice record\n */\n id: number;\n operation: 'insert' | 'update' | 'delete';\n /**\n * Timestamp when the event arrived in the change log pipeline\n */\n processed_at: string;\n /**\n * Timestamp when the record was updated in the database (can vary due to data restoration)\n */\n updated_at: string;\n /**\n * Timestamp when the record was initially created\n */\n created_at: string;\n }>;\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type GetCustomerInvoicesChangesResponse = GetCustomerInvoicesChangesResponses[keyof GetCustomerInvoicesChangesResponses];\n\nexport type GetSupplierInvoicesChangesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results. The cursor is an opaque string returned in the previous response's metadata. Leave empty for the first request.\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 1000.\n *\n */\n limit?: number;\n /**\n * Filter the changes based on the event date. The date should follow RFC3339 format. If no date is provided, the oldest changes will be returned. Changes for the last 4 weeks are retained, thus providing a `start_date` older than that will result in a 422 response. Providing both `start_date` and `cursor` parameters will result in a 400 response.\n *\n */\n start_date?: string;\n };\n url: '/api/external/v2/changelogs/supplier_invoices';\n};\n\nexport type GetSupplierInvoicesChangesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n /**\n * Internal server error\n */\n 500: unknown;\n};\n\nexport type GetSupplierInvoicesChangesError = GetSupplierInvoicesChangesErrors[keyof GetSupplierInvoicesChangesErrors];\n\nexport type GetSupplierInvoicesChangesResponses = {\n /**\n * A list of supplier invoices changes\n */\n 200: {\n items: Array<{\n /**\n * Unique identifier of the supplier invoice record\n */\n id: number;\n operation: 'insert' | 'update' | 'delete';\n /**\n * Timestamp when the event arrived in the change log pipeline\n */\n processed_at: string;\n /**\n * Timestamp when the record was updated in the database (can vary due to data restoration)\n */\n updated_at: string;\n /**\n * Timestamp when the record was initially created\n */\n created_at: string;\n }>;\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type GetSupplierInvoicesChangesResponse = GetSupplierInvoicesChangesResponses[keyof GetSupplierInvoicesChangesResponses];\n\nexport type GetCustomerChangesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results. The cursor is an opaque string returned in the previous response's metadata. Leave empty for the first request.\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 1000.\n *\n */\n limit?: number;\n /**\n * Filter the changes based on the event date. The date should follow RFC3339 format. If no date is provided, the oldest changes will be returned. Changes for the last 4 weeks are retained, thus providing a `start_date` older than that will result in a 422 response. Providing both `start_date` and `cursor` parameters will result in a 400 response.\n *\n */\n start_date?: string;\n };\n url: '/api/external/v2/changelogs/customers';\n};\n\nexport type GetCustomerChangesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n /**\n * Internal server error\n */\n 500: unknown;\n};\n\nexport type GetCustomerChangesError = GetCustomerChangesErrors[keyof GetCustomerChangesErrors];\n\nexport type GetCustomerChangesResponses = {\n /**\n * A list of customer changes\n */\n 200: {\n items: Array<{\n /**\n * Unique identifier of the customer record\n */\n id: number;\n operation: 'insert' | 'update' | 'delete';\n /**\n * Timestamp when the event arrived in the change log pipeline\n */\n processed_at: string;\n /**\n * Timestamp when the record was updated in the database (can vary due to data restoration)\n */\n updated_at: string;\n /**\n * Timestamp when the record was initially created\n */\n created_at: string;\n }>;\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type GetCustomerChangesResponse = GetCustomerChangesResponses[keyof GetCustomerChangesResponses];\n\nexport type GetSupplierChangesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results. The cursor is an opaque string returned in the previous response's metadata. Leave empty for the first request.\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 1000.\n *\n */\n limit?: number;\n /**\n * Filter the changes based on the event date. The date should follow RFC3339 format. If no date is provided, the oldest changes will be returned. Changes for the last 4 weeks are retained, thus providing a `start_date` older than that will result in a 422 response. Providing both `start_date` and `cursor` parameters will result in a 400 response.\n *\n */\n start_date?: string;\n };\n url: '/api/external/v2/changelogs/suppliers';\n};\n\nexport type GetSupplierChangesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n /**\n * Internal server error\n */\n 500: unknown;\n};\n\nexport type GetSupplierChangesError = GetSupplierChangesErrors[keyof GetSupplierChangesErrors];\n\nexport type GetSupplierChangesResponses = {\n /**\n * A list of supplier changes\n */\n 200: {\n items: Array<{\n /**\n * Unique identifier of the supplier record\n */\n id: number;\n operation: 'insert' | 'update' | 'delete';\n /**\n * Timestamp when the event arrived in the change log pipeline\n */\n processed_at: string;\n /**\n * Timestamp when the record was updated in the database (can vary due to data restoration)\n */\n updated_at: string;\n /**\n * Timestamp when the record was initially created\n */\n created_at: string;\n }>;\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type GetSupplierChangesResponse = GetSupplierChangesResponses[keyof GetSupplierChangesResponses];\n\nexport type GetProductChangesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results. The cursor is an opaque string returned in the previous response's metadata. Leave empty for the first request.\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 1000.\n *\n */\n limit?: number;\n /**\n * Filter the changes based on the event date. The date should follow RFC3339 format. If no date is provided, the oldest changes will be returned. Changes for the last 4 weeks are retained, thus providing a `start_date` older than that will result in a 422 response. Providing both `start_date` and `cursor` parameters will result in a 400 response.\n */\n start_date?: string;\n };\n url: '/api/external/v2/changelogs/products';\n};\n\nexport type GetProductChangesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n /**\n * Internal server error\n */\n 500: unknown;\n};\n\nexport type GetProductChangesError = GetProductChangesErrors[keyof GetProductChangesErrors];\n\nexport type GetProductChangesResponses = {\n /**\n * A list of product changes\n */\n 200: {\n items: Array<{\n /**\n * Unique identifier of the product record\n */\n id: number;\n operation: 'insert' | 'update' | 'delete';\n /**\n * Timestamp when the event arrived in the change log pipeline\n */\n processed_at: string;\n /**\n * Timestamp when the record was updated in the database (can vary due to data restoration)\n */\n updated_at: string;\n /**\n * Timestamp when the record was initially created\n */\n created_at: string;\n }>;\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type GetProductChangesResponse = GetProductChangesResponses[keyof GetProductChangesResponses];\n\nexport type GetLedgerEntryLineChangesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results. The cursor is an opaque string returned in the previous response's metadata. Leave empty for the first request.\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 1000.\n *\n */\n limit?: number;\n /**\n * Filter the changes based on the event date. The date should follow RFC3339 format. If no date is provided, the oldest changes will be returned. Changes for the last 4 weeks are retained, thus providing a `start_date` older than that will result in a 422 response. Providing both `start_date` and `cursor` parameters will result in a 400 response.\n */\n start_date?: string;\n };\n url: '/api/external/v2/changelogs/ledger_entry_lines';\n};\n\nexport type GetLedgerEntryLineChangesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n /**\n * Internal server error\n */\n 500: unknown;\n};\n\nexport type GetLedgerEntryLineChangesError = GetLedgerEntryLineChangesErrors[keyof GetLedgerEntryLineChangesErrors];\n\nexport type GetLedgerEntryLineChangesResponses = {\n /**\n * A list of ledger entry line changes\n */\n 200: {\n items: Array<{\n /**\n * Unique identifier of the ledger entry line record\n */\n id: number;\n operation: 'insert' | 'update' | 'delete';\n /**\n * Timestamp when the event arrived in the change log pipeline\n */\n processed_at: string;\n /**\n * Timestamp when the record was updated in the database (can vary due to data restoration)\n */\n updated_at: string;\n /**\n * Timestamp when the record was initially created\n */\n created_at: string;\n }>;\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type GetLedgerEntryLineChangesResponse = GetLedgerEntryLineChangesResponses[keyof GetLedgerEntryLineChangesResponses];\n\nexport type GetTransactionChangesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results. The cursor is an opaque string returned in the previous response's metadata. Leave empty for the first request.\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 1000.\n *\n */\n limit?: number;\n /**\n * Filter the changes based on the event date. The date should follow RFC3339 format. If no date is provided, the oldest changes will be returned. Changes for the last 4 weeks are retained, thus providing a `start_date` older than that will result in a 422 response. Providing both `start_date` and `cursor` parameters will result in a 400 response.\n */\n start_date?: string;\n };\n url: '/api/external/v2/changelogs/transactions';\n};\n\nexport type GetTransactionChangesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n /**\n * Internal server error\n */\n 500: unknown;\n};\n\nexport type GetTransactionChangesError = GetTransactionChangesErrors[keyof GetTransactionChangesErrors];\n\nexport type GetTransactionChangesResponses = {\n /**\n * A list of transaction changes\n */\n 200: {\n items: Array<{\n /**\n * Unique identifier of the transaction record\n */\n id: number;\n operation: 'insert' | 'update' | 'delete';\n /**\n * Timestamp when the event arrived in the change log pipeline\n */\n processed_at: string;\n /**\n * Timestamp when the record was updated in the database (can vary due to data restoration)\n */\n updated_at: string;\n /**\n * Timestamp when the record was initially created\n */\n created_at: string;\n }>;\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type GetTransactionChangesResponse = GetTransactionChangesResponses[keyof GetTransactionChangesResponses];\n\nexport type GetBankAccountsData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/bank_accounts';\n};\n\nexport type GetBankAccountsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetBankAccountsError = GetBankAccountsErrors[keyof GetBankAccountsErrors];\n\nexport type GetBankAccountsResponses = {\n /**\n * A list of bank accounts\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n name: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n created_at: string;\n updated_at: string;\n bank_establishment: {\n id: number;\n };\n journal: {\n id: number;\n url: string;\n } | null;\n ledger_account: {\n id: number;\n url: string;\n };\n }>;\n };\n};\n\nexport type GetBankAccountsResponse = GetBankAccountsResponses[keyof GetBankAccountsResponses];\n\nexport type PostBankAccountData = {\n body: {\n /**\n * ID of the bank establishment. If not provided, `Other` establishment will be used.\n */\n bank_establishment_id?: number;\n /**\n * The name of the bank account\n */\n name: string;\n /**\n * International Bank Account Number (IBAN)\n */\n iban?: string;\n /**\n * Bank Identifier Code (BIC)\n */\n bic?: string;\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n account_type?: 'card' | 'savings' | 'shares' | 'loan' | 'life_insurance' | 'other' | 'checking';\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/bank_accounts';\n};\n\nexport type PostBankAccountErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostBankAccountError = PostBankAccountErrors[keyof PostBankAccountErrors];\n\nexport type PostBankAccountResponses = {\n /**\n * Returns the created bank account\n */\n 201: {\n id: number;\n name: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n created_at: string;\n updated_at: string;\n bank_establishment: {\n id: number;\n };\n journal: {\n id: number;\n url: string;\n } | null;\n ledger_account: {\n id: number;\n url: string;\n };\n };\n};\n\nexport type PostBankAccountResponse = PostBankAccountResponses[keyof PostBankAccountResponses];\n\nexport type GetBankAccountData = {\n body?: never;\n path: {\n id: number;\n };\n query?: never;\n url: '/api/external/v2/bank_accounts/{id}';\n};\n\nexport type GetBankAccountErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetBankAccountError = GetBankAccountErrors[keyof GetBankAccountErrors];\n\nexport type GetBankAccountResponses = {\n /**\n * A bank account\n */\n 200: {\n id: number;\n name: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n created_at: string;\n updated_at: string;\n bank_establishment: {\n id: number;\n };\n journal: {\n id: number;\n url: string;\n } | null;\n ledger_account: {\n id: number;\n url: string;\n };\n };\n};\n\nexport type GetBankAccountResponse = GetBankAccountResponses[keyof GetBankAccountResponses];\n\nexport type GetTransactionsData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and values:\n * - `id`: `eq`, `not_eq`, `in`, `not_in`\n * - `bank_account_id`: `eq`, `not_eq`, `in`, `not_in`\n * - `journal_id`: `eq`, `not_eq`, `in`, `not_in`\n * - `date`: `eq`, `not_eq`, `gt`, `lt`, `lteq`, `gteq`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/transactions';\n};\n\nexport type GetTransactionsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetTransactionsError = GetTransactionsErrors[keyof GetTransactionsErrors];\n\nexport type GetTransactionsResponses = {\n /**\n * A list of transactions\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Transaction identifier\n */\n id: number;\n label: string | null;\n /**\n * When `true`, the transaction need to be justified and matched with an invoice\n */\n attachment_required: boolean;\n date: string;\n /**\n * This is the balance of the transaction after it has been\n * processed.\n *\n */\n outstanding_balance: string | null;\n created_at: string;\n updated_at: string;\n archived_at: string | null;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL' | null;\n /**\n * Amount in the currency of the transaction.\n */\n currency_amount: string;\n /**\n * Transaction amount in euros. If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount: string;\n /**\n * Fee in the currency of the transaction.\n */\n currency_fee: string | null;\n /**\n * Transaction fee in euros. If the currency is euro, `currency_fee` and `fee`\n * are identical.\n *\n */\n fee: string | null;\n journal: {\n id: number;\n url: string;\n };\n bank_account: {\n id: number;\n url: string;\n };\n pro_account_expense: {\n employee: {\n id: number;\n first_name: string;\n last_name: string;\n } | null;\n card_masked_number: string;\n } | null;\n customer: {\n id: number;\n url: string;\n } | null;\n supplier: {\n id: number;\n url: string;\n } | null;\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n matched_invoices: {\n url: string;\n };\n interbank_code: string | null;\n }>;\n };\n};\n\nexport type GetTransactionsResponse = GetTransactionsResponses[keyof GetTransactionsResponses];\n\nexport type CreateTransactionData = {\n body: {\n /**\n * The bank account where the transaction is registered\n */\n bank_account_id: number;\n /**\n * Transaction label\n */\n label: string;\n /**\n * Transaction date\n */\n date: string;\n /**\n * Transaction amount\n */\n amount: string;\n /**\n * Transaction fee\n */\n fee?: string;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/transactions';\n};\n\nexport type CreateTransactionErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type CreateTransactionError = CreateTransactionErrors[keyof CreateTransactionErrors];\n\nexport type CreateTransactionResponses = {\n /**\n * Transaction created\n */\n 201: {\n /**\n * Transaction identifier\n */\n id: number;\n label: string | null;\n /**\n * When `true`, the transaction need to be justified and matched with an invoice\n */\n attachment_required: boolean;\n date: string;\n /**\n * This is the balance of the transaction after it has been\n * processed.\n *\n */\n outstanding_balance: string | null;\n created_at: string;\n updated_at: string;\n archived_at: string | null;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL' | null;\n /**\n * Amount in the currency of the transaction.\n */\n currency_amount: string;\n /**\n * Transaction amount in euros. If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount: string;\n /**\n * Fee in the currency of the transaction.\n */\n currency_fee: string | null;\n /**\n * Transaction fee in euros. If the currency is euro, `currency_fee` and `fee`\n * are identical.\n *\n */\n fee: string | null;\n journal: {\n id: number;\n url: string;\n };\n bank_account: {\n id: number;\n url: string;\n };\n pro_account_expense: {\n employee: {\n id: number;\n first_name: string;\n last_name: string;\n } | null;\n card_masked_number: string;\n } | null;\n customer: {\n id: number;\n url: string;\n } | null;\n supplier: {\n id: number;\n url: string;\n } | null;\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n matched_invoices: {\n url: string;\n };\n interbank_code: string | null;\n };\n};\n\nexport type CreateTransactionResponse = CreateTransactionResponses[keyof CreateTransactionResponses];\n\nexport type GetTransactionData = {\n body?: never;\n path: {\n id: number;\n };\n query?: never;\n url: '/api/external/v2/transactions/{id}';\n};\n\nexport type GetTransactionErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetTransactionError = GetTransactionErrors[keyof GetTransactionErrors];\n\nexport type GetTransactionResponses = {\n /**\n * A Transaction\n */\n 200: {\n /**\n * Transaction identifier\n */\n id: number;\n label: string | null;\n /**\n * When `true`, the transaction need to be justified and matched with an invoice\n */\n attachment_required: boolean;\n date: string;\n /**\n * This is the balance of the transaction after it has been\n * processed.\n *\n */\n outstanding_balance: string | null;\n created_at: string;\n updated_at: string;\n archived_at: string | null;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL' | null;\n /**\n * Amount in the currency of the transaction.\n */\n currency_amount: string;\n /**\n * Transaction amount in euros. If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount: string;\n /**\n * Fee in the currency of the transaction.\n */\n currency_fee: string | null;\n /**\n * Transaction fee in euros. If the currency is euro, `currency_fee` and `fee`\n * are identical.\n *\n */\n fee: string | null;\n journal: {\n id: number;\n url: string;\n };\n bank_account: {\n id: number;\n url: string;\n };\n pro_account_expense: {\n employee: {\n id: number;\n first_name: string;\n last_name: string;\n } | null;\n card_masked_number: string;\n } | null;\n customer: {\n id: number;\n url: string;\n } | null;\n supplier: {\n id: number;\n url: string;\n } | null;\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n matched_invoices: {\n url: string;\n };\n interbank_code: string | null;\n };\n};\n\nexport type GetTransactionResponse = GetTransactionResponses[keyof GetTransactionResponses];\n\nexport type UpdateTransactionData = {\n body: {\n /**\n * The id of the customer\n */\n customer_id: number | null;\n } | {\n /**\n * The id of the supplier\n */\n supplier_id: number | null;\n };\n path: {\n id: number;\n };\n query?: never;\n url: '/api/external/v2/transactions/{id}';\n};\n\nexport type UpdateTransactionErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type UpdateTransactionError = UpdateTransactionErrors[keyof UpdateTransactionErrors];\n\nexport type UpdateTransactionResponses = {\n /**\n * Returns the updated transaction\n */\n 200: {\n /**\n * Transaction identifier\n */\n id: number;\n label: string | null;\n /**\n * When `true`, the transaction need to be justified and matched with an invoice\n */\n attachment_required: boolean;\n date: string;\n /**\n * This is the balance of the transaction after it has been\n * processed.\n *\n */\n outstanding_balance: string | null;\n created_at: string;\n updated_at: string;\n archived_at: string | null;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL' | null;\n /**\n * Amount in the currency of the transaction.\n */\n currency_amount: string;\n /**\n * Transaction amount in euros. If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount: string;\n /**\n * Fee in the currency of the transaction.\n */\n currency_fee: string | null;\n /**\n * Transaction fee in euros. If the currency is euro, `currency_fee` and `fee`\n * are identical.\n *\n */\n fee: string | null;\n journal: {\n id: number;\n url: string;\n };\n bank_account: {\n id: number;\n url: string;\n };\n pro_account_expense: {\n employee: {\n id: number;\n first_name: string;\n last_name: string;\n } | null;\n card_masked_number: string;\n } | null;\n customer: {\n id: number;\n url: string;\n } | null;\n supplier: {\n id: number;\n url: string;\n } | null;\n categories: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n matched_invoices: {\n url: string;\n };\n interbank_code: string | null;\n };\n};\n\nexport type UpdateTransactionResponse = UpdateTransactionResponses[keyof UpdateTransactionResponses];\n\nexport type GetTransactionCategoriesData = {\n body?: never;\n path: {\n transaction_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n };\n url: '/api/external/v2/transactions/{transaction_id}/categories';\n};\n\nexport type GetTransactionCategoriesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetTransactionCategoriesError = GetTransactionCategoriesErrors[keyof GetTransactionCategoriesErrors];\n\nexport type GetTransactionCategoriesResponses = {\n /**\n * The list of categories of the bank transaction\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetTransactionCategoriesResponse = GetTransactionCategoriesResponses[keyof GetTransactionCategoriesResponses];\n\nexport type PutTransactionCategoriesData = {\n body: Array<{\n id: number;\n /**\n * A number between `0` and `1`, including `1`. It must have a maximum of 4 decimals. `0.85` means 85%.\n */\n weight: string;\n }>;\n path: {\n transaction_id: number;\n };\n query?: never;\n url: '/api/external/v2/transactions/{transaction_id}/categories';\n};\n\nexport type PutTransactionCategoriesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PutTransactionCategoriesError = PutTransactionCategoriesErrors[keyof PutTransactionCategoriesErrors];\n\nexport type PutTransactionCategoriesResponses = {\n /**\n * The list of categories of the bank transaction\n */\n 200: Array<{\n id: number;\n label: string;\n weight: string;\n category_group: {\n id: number;\n };\n analytical_code: string | null;\n created_at: string;\n updated_at: string;\n }>;\n};\n\nexport type PutTransactionCategoriesResponse = PutTransactionCategoriesResponses[keyof PutTransactionCategoriesResponses];\n\nexport type GetTransactionMatchedInvoicesData = {\n body?: never;\n path: {\n transaction_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n };\n url: '/api/external/v2/transactions/{transaction_id}/matched_invoices';\n};\n\nexport type GetTransactionMatchedInvoicesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetTransactionMatchedInvoicesError = GetTransactionMatchedInvoicesErrors[keyof GetTransactionMatchedInvoicesErrors];\n\nexport type GetTransactionMatchedInvoicesResponses = {\n /**\n * A list of invoices matched to the bank transaction\n */\n 200: {\n items: Array<{\n /**\n * Invoice identifier\n */\n id: number;\n type: 'customer' | 'supplier';\n url: string;\n }>;\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n };\n};\n\nexport type GetTransactionMatchedInvoicesResponse = GetTransactionMatchedInvoicesResponses[keyof GetTransactionMatchedInvoicesResponses];\n\nexport type ListQuotesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and operators:\n * - `id`, `customer_id`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `status`: `eq`, `not_eq`, `in`, `not_in`\n *\n * Available statuses:\n * - accepted: a quote that has been accepted\n * - denied: a quote that has been denied\n * - expired: a quote that has expired\n * - invoiced: a quote that has been invoiced\n * - pending: a quote waiting to be denied or accepted\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/quotes';\n};\n\nexport type ListQuotesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type ListQuotesError = ListQuotesErrors[keyof ListQuotesErrors];\n\nexport type ListQuotesResponses = {\n /**\n * A list of Quotes\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Quote identifier\n */\n id: number;\n label: string | null;\n quote_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Quote amount (total value of the quote in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Quote currency amount (total value of the quote in the currency of the quote)\n */\n currency_amount: string;\n /**\n * Quote currency amount before tax (total value before tax of the quote in the currency of the quote)\n */\n currency_amount_before_tax: string;\n /**\n * Quote exchange rate (used to convert the quote to euros. If the quote currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Quote issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Quote expiration deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Quote taxable amount (in quote currency)\n */\n currency_tax: string;\n /**\n * Quote taxable amount (in quote currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * - accepted: quote has been accepted\n * - denied: quote has been denied\n * - expired: quote has expired\n * - invoiced: quote has been invoiced\n * - pending: quote to be denied or accepted\n *\n */\n status: 'pending' | 'accepted' | 'denied' | 'invoiced' | 'expired';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * Public URL of the quote file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the quote\n */\n filename: string | null;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the quote.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the quote.\n */\n url: string;\n };\n linked_invoices: {\n /**\n * URL to get the invoices linked to the quote.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n quote_template: {\n id: number;\n } | null;\n appendices: {\n /**\n * URL to get the appendices of the quote.\n */\n url: string;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the quote has been archived\n */\n archived_at: string | null;\n /**\n * The time the quote has been created\n */\n created_at: string;\n /**\n * The last time the quote has been updated\n */\n updated_at: string;\n }>;\n };\n};\n\nexport type ListQuotesResponse = ListQuotesResponses[keyof ListQuotesResponses];\n\nexport type PostQuotesData = {\n /**\n * Quote Request\n */\n body: {\n /**\n * Quote date (ISO 8601)\n */\n date: string;\n /**\n * Quote validity deadline (ISO 8601)\n */\n deadline: string;\n /**\n * Customer identifier\n */\n customer_id: number;\n /**\n * The quote template ID\n */\n quote_template_id?: number;\n /**\n * For example, the contact details of the person to contact\n */\n pdf_invoice_free_text?: string | null;\n /**\n * Quote title\n */\n pdf_invoice_subject?: string | null;\n /**\n * Quote description\n */\n pdf_description?: string | null;\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Additional details\n */\n special_mention?: string | null;\n language?: 'fr_FR' | 'en_GB';\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the quote\n */\n value: string;\n };\n invoice_line_sections?: Array<{\n /**\n * Title of the invoice line section\n */\n title?: string;\n /**\n * Description of the invoice line section\n */\n description?: string;\n /**\n * Defines the order in which sections will be displayed on the quote. Each section has to have a different rank, starting from 1 and incrementing next values by 1\n */\n rank: number;\n }>;\n /**\n * A unique external reference you can provide to track this quote. If not provided, Pennylane will generate an identifier for you.\n */\n external_reference?: string;\n invoice_lines: Array<{\n /**\n * Line item label\n */\n label: string;\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes (undiscounted if a discount is set). Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Line item unit (type of unit)\n */\n unit: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * The description of the invoice line\n */\n description?: string | null;\n /**\n * The product ID\n */\n product_id?: number;\n }>;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/quotes';\n};\n\nexport type PostQuotesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostQuotesError = PostQuotesErrors[keyof PostQuotesErrors];\n\nexport type PostQuotesResponses = {\n /**\n * Renders the created quote\n */\n 201: {\n /**\n * Quote identifier\n */\n id: number;\n label: string | null;\n quote_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Quote amount (total value of the quote in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Quote currency amount (total value of the quote in the currency of the quote)\n */\n currency_amount: string;\n /**\n * Quote currency amount before tax (total value before tax of the quote in the currency of the quote)\n */\n currency_amount_before_tax: string;\n /**\n * Quote exchange rate (used to convert the quote to euros. If the quote currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Quote issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Quote expiration deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Quote taxable amount (in quote currency)\n */\n currency_tax: string;\n /**\n * Quote taxable amount (in quote currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * - accepted: quote has been accepted\n * - denied: quote has been denied\n * - expired: quote has expired\n * - invoiced: quote has been invoiced\n * - pending: quote to be denied or accepted\n *\n */\n status: 'pending' | 'accepted' | 'denied' | 'invoiced' | 'expired';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * Public URL of the quote file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the quote\n */\n filename: string | null;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the quote.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the quote.\n */\n url: string;\n };\n linked_invoices: {\n /**\n * URL to get the invoices linked to the quote.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n quote_template: {\n id: number;\n } | null;\n appendices: {\n /**\n * URL to get the appendices of the quote.\n */\n url: string;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the quote has been archived\n */\n archived_at: string | null;\n /**\n * The time the quote has been created\n */\n created_at: string;\n /**\n * The last time the quote has been updated\n */\n updated_at: string;\n };\n};\n\nexport type PostQuotesResponse = PostQuotesResponses[keyof PostQuotesResponses];\n\nexport type GetQuoteData = {\n body?: never;\n path: {\n id: number;\n };\n query?: never;\n url: '/api/external/v2/quotes/{id}';\n};\n\nexport type GetQuoteErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetQuoteError = GetQuoteErrors[keyof GetQuoteErrors];\n\nexport type GetQuoteResponses = {\n /**\n * A Quote\n */\n 200: {\n /**\n * Quote identifier\n */\n id: number;\n label: string | null;\n quote_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Quote amount (total value of the quote in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Quote currency amount (total value of the quote in the currency of the quote)\n */\n currency_amount: string;\n /**\n * Quote currency amount before tax (total value before tax of the quote in the currency of the quote)\n */\n currency_amount_before_tax: string;\n /**\n * Quote exchange rate (used to convert the quote to euros. If the quote currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Quote issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Quote expiration deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Quote taxable amount (in quote currency)\n */\n currency_tax: string;\n /**\n * Quote taxable amount (in quote currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * - accepted: quote has been accepted\n * - denied: quote has been denied\n * - expired: quote has expired\n * - invoiced: quote has been invoiced\n * - pending: quote to be denied or accepted\n *\n */\n status: 'pending' | 'accepted' | 'denied' | 'invoiced' | 'expired';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * Public URL of the quote file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the quote\n */\n filename: string | null;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the quote.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the quote.\n */\n url: string;\n };\n linked_invoices: {\n /**\n * URL to get the invoices linked to the quote.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n quote_template: {\n id: number;\n } | null;\n appendices: {\n /**\n * URL to get the appendices of the quote.\n */\n url: string;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the quote has been archived\n */\n archived_at: string | null;\n /**\n * The time the quote has been created\n */\n created_at: string;\n /**\n * The last time the quote has been updated\n */\n updated_at: string;\n };\n};\n\nexport type GetQuoteResponse = GetQuoteResponses[keyof GetQuoteResponses];\n\nexport type UpdateQuoteData = {\n body: {\n /**\n * Quote date (ISO 8601)\n */\n date?: string;\n /**\n * Quote validity deadline (ISO 8601)\n */\n deadline?: string;\n /**\n * Customer identifier\n */\n customer_id?: number;\n /**\n * The quote template ID\n */\n quote_template_id?: number;\n /**\n * For example, the contact details of the person to contact\n */\n pdf_invoice_free_text?: string | null;\n /**\n * Quote title\n */\n pdf_invoice_subject?: string | null;\n /**\n * Quote description\n */\n pdf_description?: string | null;\n /**\n * Quote Currency (ISO 4217). Default is EUR.\n */\n currency?: string;\n /**\n * Additional details\n */\n special_mention?: string | null;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n language?: 'fr_FR' | 'en_GB';\n /**\n * Add, update, delete invoice lines.\n */\n invoice_lines?: {\n create?: Array<{\n /**\n * Invoice line label\n */\n label: string;\n /**\n * Invoice line quantity (number of items)\n */\n quantity: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes. Can be set up to 6 decimals.\n */\n raw_currency_unit_price: string;\n /**\n * Invoice line unit (type of unit)\n */\n unit: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * The description of the invoice line\n */\n description?: string | null;\n /**\n * The product ID\n */\n product_id?: number;\n /**\n * Has to correspond to the rank number of a quote line section in which the invoice line should be\n */\n section_rank?: number;\n }>;\n update?: Array<{\n /**\n * ID of the invoice line\n */\n id: number;\n /**\n * Line item label\n */\n label?: string;\n /**\n * Line item quantity (number of items)\n */\n quantity?: number;\n /**\n * The ledger account ID\n */\n ledger_account_id?: number;\n /**\n * The unit price excluding taxes. Can be set up to 6 decimals.\n */\n raw_currency_unit_price?: string;\n /**\n * Line item unit (type of unit)\n */\n unit?: string;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate?: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * The description of the invoice line\n */\n description?: string | null;\n /**\n * The product ID\n */\n product_id?: number;\n discount?: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * Has to correspond to the rank number of a quote line section in which the invoice line should be\n */\n section_rank?: number;\n }>;\n delete?: Array<{\n /**\n * ID of the invoice line\n */\n id: number;\n }>;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane.\n */\n external_reference?: string;\n };\n path: {\n id: number;\n };\n query?: never;\n url: '/api/external/v2/quotes/{id}';\n};\n\nexport type UpdateQuoteErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type UpdateQuoteError = UpdateQuoteErrors[keyof UpdateQuoteErrors];\n\nexport type UpdateQuoteResponses = {\n /**\n * A quote\n */\n 200: {\n /**\n * Quote identifier\n */\n id: number;\n label: string | null;\n quote_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Quote amount (total value of the quote in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Quote currency amount (total value of the quote in the currency of the quote)\n */\n currency_amount: string;\n /**\n * Quote currency amount before tax (total value before tax of the quote in the currency of the quote)\n */\n currency_amount_before_tax: string;\n /**\n * Quote exchange rate (used to convert the quote to euros. If the quote currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Quote issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Quote expiration deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Quote taxable amount (in quote currency)\n */\n currency_tax: string;\n /**\n * Quote taxable amount (in quote currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * - accepted: quote has been accepted\n * - denied: quote has been denied\n * - expired: quote has expired\n * - invoiced: quote has been invoiced\n * - pending: quote to be denied or accepted\n *\n */\n status: 'pending' | 'accepted' | 'denied' | 'invoiced' | 'expired';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * Public URL of the quote file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the quote\n */\n filename: string | null;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the quote.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the quote.\n */\n url: string;\n };\n linked_invoices: {\n /**\n * URL to get the invoices linked to the quote.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n quote_template: {\n id: number;\n } | null;\n appendices: {\n /**\n * URL to get the appendices of the quote.\n */\n url: string;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the quote has been archived\n */\n archived_at: string | null;\n /**\n * The time the quote has been created\n */\n created_at: string;\n /**\n * The last time the quote has been updated\n */\n updated_at: string;\n };\n};\n\nexport type UpdateQuoteResponse = UpdateQuoteResponses[keyof UpdateQuoteResponses];\n\nexport type GetQuoteAppendicesData = {\n body?: never;\n path: {\n quote_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n };\n url: '/api/external/v2/quotes/{quote_id}/appendices';\n};\n\nexport type GetQuoteAppendicesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetQuoteAppendicesError = GetQuoteAppendicesErrors[keyof GetQuoteAppendicesErrors];\n\nexport type GetQuoteAppendicesResponses = {\n /**\n * The list of appendices of the quote\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n /**\n * URL to the uploaded file.\n */\n url: string;\n filename: string;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetQuoteAppendicesResponse = GetQuoteAppendicesResponses[keyof GetQuoteAppendicesResponses];\n\nexport type PostQuoteAppendicesData = {\n body: {\n /**\n * The appendix file you want to upload.\n * Allowed content types:\n * - image/png\n * - image/jpeg\n * - image/tiff\n * - image/bmp\n * - image/gif\n * - application/pdf\n *\n */\n file: Blob | File;\n };\n path: {\n quote_id: number;\n };\n query?: never;\n url: '/api/external/v2/quotes/{quote_id}/appendices';\n};\n\nexport type PostQuoteAppendicesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostQuoteAppendicesError = PostQuoteAppendicesErrors[keyof PostQuoteAppendicesErrors];\n\nexport type PostQuoteAppendicesResponses = {\n /**\n * Returns the created appendix\n */\n 201: {\n id: number;\n /**\n * URL to the uploaded file.\n */\n url: string;\n filename: string;\n created_at: string;\n updated_at: string;\n };\n};\n\nexport type PostQuoteAppendicesResponse = PostQuoteAppendicesResponses[keyof PostQuoteAppendicesResponses];\n\nexport type GetQuoteInvoiceLinesData = {\n body?: never;\n path: {\n quote_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/quotes/{quote_id}/invoice_lines';\n};\n\nexport type GetQuoteInvoiceLinesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetQuoteInvoiceLinesError = GetQuoteInvoiceLinesErrors[keyof GetQuoteInvoiceLinesErrors];\n\nexport type GetQuoteInvoiceLinesResponses = {\n /**\n * Returns the list of invoice lines for a quote\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Invoice line id\n */\n id: number;\n /**\n * Invoice line label\n */\n label: string;\n /**\n * The kind of unit which applies to the amount\n */\n unit: string | null;\n /**\n * Invoice line item quantity (number of items)\n */\n quantity: string;\n /**\n * The total amount of the invoice lines in euros including taxes and deducting discounts\n */\n amount: string;\n /**\n * The total amount of the invoice lines in the document's currency including taxes and deducting discounts.\n * If the currency is euro, amount and currency_amount are identical.\n *\n */\n currency_amount: string;\n /**\n * Invoice line description\n */\n description: string;\n product: {\n /**\n * Product id\n */\n id: number;\n /**\n * URL to get the product.\n */\n url: string;\n } | null;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Total amount before tax in currency\n */\n currency_amount_before_tax: string;\n /**\n * Total tax amount in currency\n */\n currency_tax: string;\n /**\n * Total tax amount in euros\n */\n tax: string;\n /**\n * Unit price (excluding tax)\n */\n raw_currency_unit_price: string;\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the invoice\n */\n value: string;\n };\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank: number | null;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetQuoteInvoiceLinesResponse = GetQuoteInvoiceLinesResponses[keyof GetQuoteInvoiceLinesResponses];\n\nexport type GetQuoteInvoiceLineSectionsData = {\n body?: never;\n path: {\n quote_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/quotes/{quote_id}/invoice_line_sections';\n};\n\nexport type GetQuoteInvoiceLineSectionsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetQuoteInvoiceLineSectionsError = GetQuoteInvoiceLineSectionsErrors[keyof GetQuoteInvoiceLineSectionsErrors];\n\nexport type GetQuoteInvoiceLineSectionsResponses = {\n /**\n * Returns the list of invoice line sections for a quote\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Invoice line section id\n */\n id: number;\n /**\n * Invoice line section label\n */\n title: string | null;\n /**\n * Invoice line section description\n */\n description: string | null;\n /**\n * The rank of the section in the quote. The rank is used to order the sections in the quote.\n */\n rank: number;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetQuoteInvoiceLineSectionsResponse = GetQuoteInvoiceLineSectionsResponses[keyof GetQuoteInvoiceLineSectionsResponses];\n\nexport type SendByEmailQuoteData = {\n body?: {\n /**\n * Email recipients.\n *\n * If empty, the email will be sent to the recipient email addresses specified for the customer of this quote.\n *\n */\n recipients?: Array<string>;\n };\n path: {\n id: number;\n };\n query?: never;\n url: '/api/external/v2/quotes/{id}/send_by_email';\n};\n\nexport type SendByEmailQuoteErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Conflict with the current state of the target resource, such as when trying to create a resource that already exists.\n */\n 409: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type SendByEmailQuoteError = SendByEmailQuoteErrors[keyof SendByEmailQuoteErrors];\n\nexport type SendByEmailQuoteResponses = {\n /**\n * Quote is being sent by email\n */\n 204: void;\n};\n\nexport type SendByEmailQuoteResponse = SendByEmailQuoteResponses[keyof SendByEmailQuoteResponses];\n\nexport type UpdateStatusQuoteData = {\n body: {\n /**\n * - accepted: quote has been accepted\n * - denied: quote has been denied\n * - expired: quote has expired\n * - invoiced: quote has been invoiced\n * - pending: quote to be denied or accepted\n *\n */\n status: 'pending' | 'accepted' | 'denied' | 'invoiced' | 'expired';\n };\n path: {\n id: number;\n };\n query?: never;\n url: '/api/external/v2/quotes/{id}/update_status';\n};\n\nexport type UpdateStatusQuoteErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type UpdateStatusQuoteError = UpdateStatusQuoteErrors[keyof UpdateStatusQuoteErrors];\n\nexport type UpdateStatusQuoteResponses = {\n /**\n * The quote that the status was updated for\n */\n 200: {\n /**\n * Quote identifier\n */\n id: number;\n label: string | null;\n quote_number: string;\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Quote amount (total value of the quote in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Quote currency amount (total value of the quote in the currency of the quote)\n */\n currency_amount: string;\n /**\n * Quote currency amount before tax (total value before tax of the quote in the currency of the quote)\n */\n currency_amount_before_tax: string;\n /**\n * Quote exchange rate (used to convert the quote to euros. If the quote currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Quote issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Quote expiration deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Quote taxable amount (in quote currency)\n */\n currency_tax: string;\n /**\n * Quote taxable amount (in quote currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n /**\n * - accepted: quote has been accepted\n * - denied: quote has been denied\n * - expired: quote has expired\n * - invoiced: quote has been invoiced\n * - pending: quote to be denied or accepted\n *\n */\n status: 'pending' | 'accepted' | 'denied' | 'invoiced' | 'expired';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string;\n };\n /**\n * Public URL of the quote file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the quote\n */\n filename: string | null;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the quote.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the quote.\n */\n url: string;\n };\n linked_invoices: {\n /**\n * URL to get the invoices linked to the quote.\n */\n url: string;\n };\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n quote_template: {\n id: number;\n } | null;\n appendices: {\n /**\n * URL to get the appendices of the quote.\n */\n url: string;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the quote has been archived\n */\n archived_at: string | null;\n /**\n * The time the quote has been created\n */\n created_at: string;\n /**\n * The last time the quote has been updated\n */\n updated_at: string;\n };\n};\n\nexport type UpdateStatusQuoteResponse = UpdateStatusQuoteResponses[keyof UpdateStatusQuoteResponses];\n\nexport type ListCommercialDocumentsData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and operators:\n * - `id`, `customer_id`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `document_type`: `eq`, `not_eq`, `in`, `not_in`\n *\n * Available document_types:\n * - proforma\n * - shipping_order\n * - purchasing_order\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/commercial_documents';\n};\n\nexport type ListCommercialDocumentsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type ListCommercialDocumentsError = ListCommercialDocumentsErrors[keyof ListCommercialDocumentsErrors];\n\nexport type ListCommercialDocumentsResponses = {\n /**\n * A list of Commercial Documents\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Commercial document identifier\n */\n id: number;\n label: string | null;\n document_number: string;\n document_type: 'proforma' | 'shipping_order' | 'purchasing_order';\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Document amount (total value of the document in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Document currency amount (total value of the document in the currency of the document)\n */\n currency_amount: string;\n /**\n * Document currency amount before tax (total value before tax of the document in the currency of the document)\n */\n currency_amount_before_tax: string;\n /**\n * Document exchange rate (used to convert the document to euros. If the document currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Document issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Document deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Document taxable amount (in document currency)\n */\n currency_tax: string;\n /**\n * Document taxable amount (in document currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string | null;\n };\n /**\n * Public URL of the document file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the document\n */\n filename: string | null;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the document.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the document.\n */\n url: string;\n };\n quote: {\n id: number;\n /**\n * URL to get the quote.\n */\n url: string;\n } | null;\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n commercial_document_template: {\n id: number;\n } | null;\n appendices: {\n /**\n * URL to get the appendices of the document.\n */\n url: string;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the document has been archived\n */\n archived_at: string | null;\n /**\n * The time the document has been created\n */\n created_at: string;\n /**\n * The last time the document has been updated\n */\n updated_at: string;\n }>;\n };\n};\n\nexport type ListCommercialDocumentsResponse = ListCommercialDocumentsResponses[keyof ListCommercialDocumentsResponses];\n\nexport type GetCommercialDocumentData = {\n body?: never;\n path: {\n id: number;\n };\n query?: never;\n url: '/api/external/v2/commercial_documents/{id}';\n};\n\nexport type GetCommercialDocumentErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCommercialDocumentError = GetCommercialDocumentErrors[keyof GetCommercialDocumentErrors];\n\nexport type GetCommercialDocumentResponses = {\n /**\n * A Commercial Document\n */\n 200: {\n /**\n * Commercial document identifier\n */\n id: number;\n label: string | null;\n document_number: string;\n document_type: 'proforma' | 'shipping_order' | 'purchasing_order';\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Document amount (total value of the document in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n amount: string;\n /**\n * Document currency amount (total value of the document in the currency of the document)\n */\n currency_amount: string;\n /**\n * Document currency amount before tax (total value before tax of the document in the currency of the document)\n */\n currency_amount_before_tax: string;\n /**\n * Document exchange rate (used to convert the document to euros. If the document currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Document issue date (ISO 8601)\n */\n date: string | null;\n /**\n * Document deadline (ISO 8601)\n */\n deadline: string | null;\n /**\n * Document taxable amount (in document currency)\n */\n currency_tax: string;\n /**\n * Document taxable amount (in document currency)\n */\n tax: string;\n language: 'fr_FR' | 'en_GB';\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the line\n */\n value: string | null;\n };\n /**\n * Public URL of the document file. The URL will expire after 30 minutes.\n */\n public_file_url: string | null;\n /**\n * Name of the file attached to the document\n */\n filename: string | null;\n /**\n * Additional details\n */\n special_mention: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n invoice_line_sections: {\n /**\n * URL to get the invoice line sections of the document.\n */\n url: string;\n };\n invoice_lines: {\n /**\n * URL to get the invoice lines of the document.\n */\n url: string;\n };\n quote: {\n id: number;\n /**\n * URL to get the quote.\n */\n url: string;\n } | null;\n pdf_invoice_free_text: string;\n pdf_invoice_subject: string;\n pdf_description: string | null;\n commercial_document_template: {\n id: number;\n } | null;\n appendices: {\n /**\n * URL to get the appendices of the document.\n */\n url: string;\n };\n /**\n * The unique external reference that was assigned during creation either by you or Pennylane. (Same attribute as `external_id` in the API v1)\n */\n external_reference: string;\n /**\n * The time the document has been archived\n */\n archived_at: string | null;\n /**\n * The time the document has been created\n */\n created_at: string;\n /**\n * The last time the document has been updated\n */\n updated_at: string;\n };\n};\n\nexport type GetCommercialDocumentResponse = GetCommercialDocumentResponses[keyof GetCommercialDocumentResponses];\n\nexport type GetCommercialDocumentAppendicesData = {\n body?: never;\n path: {\n commercial_document_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n };\n url: '/api/external/v2/commercial_documents/{commercial_document_id}/appendices';\n};\n\nexport type GetCommercialDocumentAppendicesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCommercialDocumentAppendicesError = GetCommercialDocumentAppendicesErrors[keyof GetCommercialDocumentAppendicesErrors];\n\nexport type GetCommercialDocumentAppendicesResponses = {\n /**\n * The list of appendices of the commercial document\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n /**\n * URL to the uploaded file.\n */\n url: string;\n filename: string;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetCommercialDocumentAppendicesResponse = GetCommercialDocumentAppendicesResponses[keyof GetCommercialDocumentAppendicesResponses];\n\nexport type PostCommercialDocumentAppendicesData = {\n body: {\n /**\n * The appendix file you want to upload.\n * Allowed content types:\n * - image/png\n * - image/jpeg\n * - image/tiff\n * - image/bmp\n * - image/gif\n * - application/pdf\n *\n */\n file: Blob | File;\n };\n path: {\n commercial_document_id: number;\n };\n query?: never;\n url: '/api/external/v2/commercial_documents/{commercial_document_id}/appendices';\n};\n\nexport type PostCommercialDocumentAppendicesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostCommercialDocumentAppendicesError = PostCommercialDocumentAppendicesErrors[keyof PostCommercialDocumentAppendicesErrors];\n\nexport type PostCommercialDocumentAppendicesResponses = {\n /**\n * Returns the created appendix\n */\n 201: {\n id: number;\n /**\n * URL to the uploaded file.\n */\n url: string;\n filename: string;\n created_at: string;\n updated_at: string;\n };\n};\n\nexport type PostCommercialDocumentAppendicesResponse = PostCommercialDocumentAppendicesResponses[keyof PostCommercialDocumentAppendicesResponses];\n\nexport type GetCommercialDocumentInvoiceLinesData = {\n body?: never;\n path: {\n commercial_document_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/commercial_documents/{commercial_document_id}/invoice_lines';\n};\n\nexport type GetCommercialDocumentInvoiceLinesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCommercialDocumentInvoiceLinesError = GetCommercialDocumentInvoiceLinesErrors[keyof GetCommercialDocumentInvoiceLinesErrors];\n\nexport type GetCommercialDocumentInvoiceLinesResponses = {\n /**\n * Returns the list of invoice lines for a commercial document\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Invoice line id\n */\n id: number;\n /**\n * Invoice line label\n */\n label: string;\n /**\n * The kind of unit which applies to the amount\n */\n unit: string | null;\n /**\n * Invoice line item quantity (number of items)\n */\n quantity: string;\n /**\n * The total amount of the invoice lines in euros including taxes and deducting discounts\n */\n amount: string;\n /**\n * The total amount of the invoice lines in the document's currency including taxes and deducting discounts.\n * If the currency is euro, amount and currency_amount are identical.\n *\n */\n currency_amount: string;\n /**\n * Invoice line description\n */\n description: string;\n product: {\n /**\n * Product id\n */\n id: number;\n /**\n * URL to get the product.\n */\n url: string;\n } | null;\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * Total amount before tax in currency\n */\n currency_amount_before_tax: string;\n /**\n * Total tax amount in currency\n */\n currency_tax: string;\n /**\n * Total tax amount in euros\n */\n tax: string;\n /**\n * Unit price (excluding tax)\n */\n raw_currency_unit_price: string;\n discount: {\n /**\n * Discount type.\n * - absolute if it is an amount\n * - relative if it is a percentage\n *\n */\n type: 'absolute' | 'relative';\n /**\n * Discount value on the total amount before tax of the invoice\n */\n value: string;\n };\n /**\n * Has to correspond to the rank number of a line items section in which the line item should be\n */\n section_rank: number | null;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetCommercialDocumentInvoiceLinesResponse = GetCommercialDocumentInvoiceLinesResponses[keyof GetCommercialDocumentInvoiceLinesResponses];\n\nexport type GetCommercialDocumentInvoiceLineSectionsData = {\n body?: never;\n path: {\n commercial_document_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/commercial_documents/{commercial_document_id}/invoice_line_sections';\n};\n\nexport type GetCommercialDocumentInvoiceLineSectionsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCommercialDocumentInvoiceLineSectionsError = GetCommercialDocumentInvoiceLineSectionsErrors[keyof GetCommercialDocumentInvoiceLineSectionsErrors];\n\nexport type GetCommercialDocumentInvoiceLineSectionsResponses = {\n /**\n * Returns the list of invoice line sections for a commercial document\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Invoice line section id\n */\n id: number;\n /**\n * Invoice line section label\n */\n title: string | null;\n /**\n * Invoice line section description\n */\n description: string | null;\n /**\n * The rank of the section in the commercial document. The rank is used to order the sections in the commercial document.\n */\n rank: number;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetCommercialDocumentInvoiceLineSectionsResponse = GetCommercialDocumentInvoiceLineSectionsResponses[keyof GetCommercialDocumentInvoiceLineSectionsResponses];\n\nexport type GetSepaMandatesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and values:\n * - `id`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `customer_id`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes.\n * Sort field may be prefixed with `-` for descending order.\n * Example: `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields: `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/sepa_mandates';\n};\n\nexport type GetSepaMandatesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetSepaMandatesError = GetSepaMandatesErrors[keyof GetSepaMandatesErrors];\n\nexport type GetSepaMandatesResponses = {\n /**\n * A list of SEPA mandates\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * ID of the created SEPA mandate\n */\n id: number;\n /**\n * Name of the customer's bank\n */\n bank: string | null;\n /**\n * Bank Identifier Code (BIC) of the customer's bank\n */\n bic: string;\n /**\n * International Bank Account Number (IBAN) of the customer\n */\n iban: string;\n /**\n * SEPA mandate sequence type that defines the payment process.\n * - `FRST`: First payment in a series of recurring payments\n * - `OOFF`: One-off payment\n * - `RCUR`: Recurring payment that is not the first payment\n * - `FNAL`: Final payment in a series of recurring payments\n *\n */\n sequence_type: 'FRST' | 'OOFF' | 'RCUR' | 'FNAL';\n /**\n * Date when the mandate was signed\n */\n signed_at: string;\n /**\n * Unique identifier for the mandate\n */\n identifier: string;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n };\n /**\n * Creation date of the SEPA mandate\n */\n created_at: string;\n /**\n * Last update date of the SEPA mandate\n */\n updated_at: string;\n }>;\n };\n};\n\nexport type GetSepaMandatesResponse = GetSepaMandatesResponses[keyof GetSepaMandatesResponses];\n\nexport type PostSepaMandatesData = {\n body: {\n /**\n * Name of the customer's bank\n */\n bank?: string;\n /**\n * Bank Identifier Code (BIC) of the customer's bank\n */\n bic: string;\n /**\n * International Bank Account Number (IBAN) of the customer\n */\n iban: string;\n /**\n * SEPA mandate sequence type that defines the payment process.\n * - `FRST`: First payment in a series of recurring payments\n * - `OOFF`: One-off payment\n * - `RCUR`: Recurring payment that is not the first payment\n * - `FNAL`: Final payment in a series of recurring payments\n *\n */\n sequence_type?: 'FRST' | 'OOFF' | 'RCUR' | 'FNAL';\n /**\n * Date when the mandate was signed\n */\n signed_at: string;\n /**\n * Unique identifier for the mandate\n */\n identifier: string;\n /**\n * ID of the customer for which the mandate is created\n */\n customer_id: number;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/sepa_mandates';\n};\n\nexport type PostSepaMandatesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostSepaMandatesError = PostSepaMandatesErrors[keyof PostSepaMandatesErrors];\n\nexport type PostSepaMandatesResponses = {\n /**\n * Renders the created SEPA mandate\n */\n 201: {\n /**\n * ID of the created SEPA mandate\n */\n id: number;\n /**\n * Name of the customer's bank\n */\n bank: string | null;\n /**\n * Bank Identifier Code (BIC) of the customer's bank\n */\n bic: string;\n /**\n * International Bank Account Number (IBAN) of the customer\n */\n iban: string;\n /**\n * SEPA mandate sequence type that defines the payment process.\n * - `FRST`: First payment in a series of recurring payments\n * - `OOFF`: One-off payment\n * - `RCUR`: Recurring payment that is not the first payment\n * - `FNAL`: Final payment in a series of recurring payments\n *\n */\n sequence_type: 'FRST' | 'OOFF' | 'RCUR' | 'FNAL';\n /**\n * Date when the mandate was signed\n */\n signed_at: string;\n /**\n * Unique identifier for the mandate\n */\n identifier: string;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n };\n /**\n * Creation date of the SEPA mandate\n */\n created_at: string;\n /**\n * Last update date of the SEPA mandate\n */\n updated_at: string;\n };\n};\n\nexport type PostSepaMandatesResponse = PostSepaMandatesResponses[keyof PostSepaMandatesResponses];\n\nexport type DeleteSepaMandateData = {\n body?: never;\n path: {\n /**\n * ID of the SEPA mandate to delete\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/sepa_mandates/{id}';\n};\n\nexport type DeleteSepaMandateErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type DeleteSepaMandateError = DeleteSepaMandateErrors[keyof DeleteSepaMandateErrors];\n\nexport type DeleteSepaMandateResponses = {\n /**\n * SEPA mandate deleted\n */\n 204: void;\n};\n\nexport type DeleteSepaMandateResponse = DeleteSepaMandateResponses[keyof DeleteSepaMandateResponses];\n\nexport type GetSepaMandateData = {\n body?: never;\n path: {\n /**\n * ID of the SEPA mandate to retrieve\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/sepa_mandates/{id}';\n};\n\nexport type GetSepaMandateErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetSepaMandateError = GetSepaMandateErrors[keyof GetSepaMandateErrors];\n\nexport type GetSepaMandateResponses = {\n /**\n * A SEPA mandate\n */\n 200: {\n /**\n * ID of the created SEPA mandate\n */\n id: number;\n /**\n * Name of the customer's bank\n */\n bank: string | null;\n /**\n * Bank Identifier Code (BIC) of the customer's bank\n */\n bic: string;\n /**\n * International Bank Account Number (IBAN) of the customer\n */\n iban: string;\n /**\n * SEPA mandate sequence type that defines the payment process.\n * - `FRST`: First payment in a series of recurring payments\n * - `OOFF`: One-off payment\n * - `RCUR`: Recurring payment that is not the first payment\n * - `FNAL`: Final payment in a series of recurring payments\n *\n */\n sequence_type: 'FRST' | 'OOFF' | 'RCUR' | 'FNAL';\n /**\n * Date when the mandate was signed\n */\n signed_at: string;\n /**\n * Unique identifier for the mandate\n */\n identifier: string;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n };\n /**\n * Creation date of the SEPA mandate\n */\n created_at: string;\n /**\n * Last update date of the SEPA mandate\n */\n updated_at: string;\n };\n};\n\nexport type GetSepaMandateResponse = GetSepaMandateResponses[keyof GetSepaMandateResponses];\n\nexport type PutSepaMandateData = {\n body: {\n /**\n * Name of the customer's bank\n */\n bank?: string | null;\n /**\n * Bank Identifier Code (BIC) of the customer's bank\n */\n bic?: string;\n /**\n * International Bank Account Number (IBAN) of the customer\n */\n iban?: string;\n /**\n * SEPA mandate sequence type that defines the payment process.\n * - `FRST`: First payment in a series of recurring payments\n * - `OOFF`: One-off payment\n * - `RCUR`: Recurring payment that is not the first payment\n * - `FNAL`: Final payment in a series of recurring payments\n *\n */\n sequence_type?: 'FRST' | 'OOFF' | 'RCUR' | 'FNAL';\n /**\n * Date when the mandate was signed\n */\n signed_at?: string;\n /**\n * Unique identifier for the mandate\n */\n identifier?: string;\n /**\n * ID of the customer for which the mandate is created\n */\n customer_id?: number;\n };\n path: {\n /**\n * ID of the SEPA mandate to update\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/sepa_mandates/{id}';\n};\n\nexport type PutSepaMandateErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PutSepaMandateError = PutSepaMandateErrors[keyof PutSepaMandateErrors];\n\nexport type PutSepaMandateResponses = {\n /**\n * Returns the updated SEPA mandate\n */\n 200: {\n /**\n * ID of the created SEPA mandate\n */\n id: number;\n /**\n * Name of the customer's bank\n */\n bank: string | null;\n /**\n * Bank Identifier Code (BIC) of the customer's bank\n */\n bic: string;\n /**\n * International Bank Account Number (IBAN) of the customer\n */\n iban: string;\n /**\n * SEPA mandate sequence type that defines the payment process.\n * - `FRST`: First payment in a series of recurring payments\n * - `OOFF`: One-off payment\n * - `RCUR`: Recurring payment that is not the first payment\n * - `FNAL`: Final payment in a series of recurring payments\n *\n */\n sequence_type: 'FRST' | 'OOFF' | 'RCUR' | 'FNAL';\n /**\n * Date when the mandate was signed\n */\n signed_at: string;\n /**\n * Unique identifier for the mandate\n */\n identifier: string;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n };\n /**\n * Creation date of the SEPA mandate\n */\n created_at: string;\n /**\n * Last update date of the SEPA mandate\n */\n updated_at: string;\n };\n};\n\nexport type PutSepaMandateResponse = PutSepaMandateResponses[keyof PutSepaMandateResponses];\n\nexport type GetGocardlessMandatesData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and values:\n * - `id`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `customer_id`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `external_reference`: `eq`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes.\n * Sort field may be prefixed with `-` for descending order.\n * Example: `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields: `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/gocardless_mandates';\n};\n\nexport type GetGocardlessMandatesErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetGocardlessMandatesError = GetGocardlessMandatesErrors[keyof GetGocardlessMandatesErrors];\n\nexport type GetGocardlessMandatesResponses = {\n /**\n * The list of gocardless mandates\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n /**\n * Unique external identifier for the Gocardless mandate.\n */\n external_reference: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n status: 'pending_customer_approval' | 'pending_submission' | 'submitted' | 'active' | 'failed' | 'cancelled' | 'expired' | 'consumed' | 'replaced' | 'blocked' | 'bank_disconnected';\n /**\n * Identifier for the Gocardless customer account.\n */\n external_customer_account: string;\n /**\n * Label for the Gocardless customer account.\n */\n external_customer_label: string | null;\n /**\n * Creation date of the Gocardless mandate\n */\n created_at: string;\n /**\n * Last update date of the Gocardless mandate\n */\n updated_at: string;\n }>;\n };\n};\n\nexport type GetGocardlessMandatesResponse = GetGocardlessMandatesResponses[keyof GetGocardlessMandatesResponses];\n\nexport type GetGocardlessMandateData = {\n body?: never;\n path: {\n /**\n * ID of the Gocardless mandate to retrieve\n */\n id: number;\n };\n query?: never;\n url: '/api/external/v2/gocardless_mandates/{id}';\n};\n\nexport type GetGocardlessMandateErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetGocardlessMandateError = GetGocardlessMandateErrors[keyof GetGocardlessMandateErrors];\n\nexport type GetGocardlessMandateResponses = {\n /**\n * A Gocardless mandate\n */\n 200: {\n id: number;\n /**\n * Unique external identifier for the Gocardless mandate.\n */\n external_reference: string | null;\n customer: {\n id: number;\n /**\n * URL to get the customer.\n */\n url: string;\n } | null;\n status: 'pending_customer_approval' | 'pending_submission' | 'submitted' | 'active' | 'failed' | 'cancelled' | 'expired' | 'consumed' | 'replaced' | 'blocked' | 'bank_disconnected';\n /**\n * Identifier for the Gocardless customer account.\n */\n external_customer_account: string;\n /**\n * Label for the Gocardless customer account.\n */\n external_customer_label: string | null;\n /**\n * Creation date of the Gocardless mandate\n */\n created_at: string;\n /**\n * Last update date of the Gocardless mandate\n */\n updated_at: string;\n };\n};\n\nexport type GetGocardlessMandateResponse = GetGocardlessMandateResponses[keyof GetGocardlessMandateResponses];\n\nexport type PostGocardlessMandateMailRequestsData = {\n body: {\n /**\n * Customer identifier\n */\n customer_id: number;\n email: {\n /**\n * Email subject line.\n */\n subject?: string | null;\n /**\n * Email body content.\n */\n body?: string | null;\n /**\n * Email recipient addresses\n */\n recipients: Array<string>;\n };\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/gocardless_mandates/mail_requests';\n};\n\nexport type PostGocardlessMandateMailRequestsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostGocardlessMandateMailRequestsError = PostGocardlessMandateMailRequestsErrors[keyof PostGocardlessMandateMailRequestsErrors];\n\nexport type PostGocardlessMandateMailRequestsResponses = {\n /**\n * Mail request successfully created\n */\n 204: void;\n};\n\nexport type PostGocardlessMandateMailRequestsResponse = PostGocardlessMandateMailRequestsResponses[keyof PostGocardlessMandateMailRequestsResponses];\n\nexport type PostGocardlessMandateCancellationsData = {\n body?: never;\n path: {\n /**\n * ID of the Gocardless mandate to cancel\n */\n gocardless_mandate_id: number;\n };\n query?: never;\n url: '/api/external/v2/gocardless_mandates/{gocardless_mandate_id}/cancellations';\n};\n\nexport type PostGocardlessMandateCancellationsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostGocardlessMandateCancellationsError = PostGocardlessMandateCancellationsErrors[keyof PostGocardlessMandateCancellationsErrors];\n\nexport type PostGocardlessMandateCancellationsResponses = {\n /**\n * Mandate cancelled successfully. No content returned.\n */\n 204: void;\n};\n\nexport type PostGocardlessMandateCancellationsResponse = PostGocardlessMandateCancellationsResponses[keyof PostGocardlessMandateCancellationsResponses];\n\nexport type PostGocardlessMandateAssociationsData = {\n body: {\n /**\n * Customer identifier\n */\n customer_id: number;\n };\n path: {\n /**\n * GoCardless Mandate identifier\n */\n gocardless_mandate_id: number;\n };\n query?: never;\n url: '/api/external/v2/gocardless_mandates/{gocardless_mandate_id}/associations';\n};\n\nexport type PostGocardlessMandateAssociationsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type PostGocardlessMandateAssociationsError = PostGocardlessMandateAssociationsErrors[keyof PostGocardlessMandateAssociationsErrors];\n\nexport type PostGocardlessMandateAssociationsResponses = {\n /**\n * Association created successfully.\n */\n 200: unknown;\n};\n\nexport type GetCustomerInvoiceCustomHeaderFieldsData = {\n body?: never;\n path: {\n customer_invoice_id: number;\n };\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/customer_invoices/{customer_invoice_id}/custom_header_fields';\n};\n\nexport type GetCustomerInvoiceCustomHeaderFieldsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetCustomerInvoiceCustomHeaderFieldsError = GetCustomerInvoiceCustomHeaderFieldsErrors[keyof GetCustomerInvoiceCustomHeaderFieldsErrors];\n\nexport type GetCustomerInvoiceCustomHeaderFieldsResponses = {\n /**\n * Returns the list of custom header fields for a customer invoice\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n /**\n * Custom header field id\n */\n id: number;\n /**\n * Custom header field title\n */\n title: string;\n /**\n * Custom header field value\n */\n value: string | null;\n /**\n * The rank of the field in the invoice. The rank is used to order the fields in the invoice.\n */\n rank: number;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetCustomerInvoiceCustomHeaderFieldsResponse = GetCustomerInvoiceCustomHeaderFieldsResponses[keyof GetCustomerInvoiceCustomHeaderFieldsResponses];\n\nexport type CreateEInvoiceImportData = {\n body: {\n /**\n * The invoice file to be imported.\n * Must be an e-invoice format.\n *\n */\n file: Blob | File;\n /**\n * The type of the invoice.\n */\n type: 'customer' | 'supplier';\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/e-invoices/imports';\n};\n\nexport type CreateEInvoiceImportErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * Unprocessable content\n */\n 422: {\n error: string;\n status: number;\n };\n};\n\nexport type CreateEInvoiceImportError = CreateEInvoiceImportErrors[keyof CreateEInvoiceImportErrors];\n\nexport type CreateEInvoiceImportResponses = {\n /**\n * E-invoice imported successfully\n */\n 201: {\n /**\n * The URL of the imported e-invoice.\n * This can be used to access the document later.\n *\n */\n url: string;\n };\n};\n\nexport type CreateEInvoiceImportResponse = CreateEInvoiceImportResponses[keyof CreateEInvoiceImportResponses];\n\nexport type CreatePurchaseRequestImportData = {\n body: {\n /**\n * File attachment id. This file attachment must contain the purchase order to import.\n */\n file_attachment_id: number;\n /**\n * Reason of the purchase request\n */\n reason: string;\n /**\n * Estimated delivery date (ISO 8601)\n */\n estimated_delivery_date?: string;\n /**\n * Supplier identifier\n */\n supplier_id: number;\n /**\n * Purchase order number\n */\n purchase_order_number: string;\n currency?: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Purchase request currency amount before tax (total value before tax of the purchase request in the currency of the purchase request)\n */\n currency_amount_before_tax: string;\n /**\n * Purchase request currency amount (total value of the purchase request in the currency of the purchase request)\n */\n currency_amount: string;\n /**\n * Purchase request amount in euros (total value of the purchase request in euros). If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount?: string;\n /**\n * Purchase request taxable amount (in purchase request currency)\n */\n currency_tax: string;\n /**\n * Purchase request taxable amount (in euros). If the currency is euro, `currency_tax` and `tax` are identical.\n */\n tax?: string;\n delivery_address: {\n /**\n * Delivery address\n */\n address: string;\n /**\n * Postal code of the delivery address\n */\n postal_code: string;\n /**\n * City of the delivery address\n */\n city: string;\n /**\n * Country of the delivery address (ISO 3166-1 alpha-2)\n */\n country_alpha2: string;\n };\n purchase_request_lines: Array<{\n /**\n * Purchase request line total amount in the currency of the purchase request.\n */\n currency_amount: string;\n /**\n * Purchase request line amount in euros. If the currency is euro, `currency_amount` and `amount` are identical.\n */\n amount?: string;\n /**\n * Purchase request line taxable amount (in purchase request currency)\n */\n currency_tax: string;\n /**\n * Purchase request line taxable amount (in euros). If the currency is euro, currency_tax and tax are identical.\n */\n tax?: string;\n /**\n * Line item label\n */\n label: string;\n /**\n * Line item quantity (number of items)\n */\n quantity: number;\n /**\n * The unit price excluding taxes\n */\n unit_price: string;\n unit: 'piece' | 'hour' | 'day' | 'month' | 'kilogram' | 'm2' | 'm3' | 'ton' | 'mg' | 'no_unit';\n /**\n * Product VAT rate. A 20% VAT in France is FR_200.\n */\n vat_rate: 'FR_1_05' | 'FR_1_75' | 'FR_09' | 'FR_21' | 'FR_40' | 'FR_50' | 'FR_55' | 'FR_60' | 'FR_65' | 'FR_85' | 'FR_92' | 'FR_100' | 'FR_130' | 'FR_15_385' | 'FR_160' | 'FR_196' | 'FR_200' | 'AD_10' | 'AD_45' | 'AD_95' | 'AT_100' | 'AT_130' | 'AT_200' | 'BE_60' | 'BE_120' | 'BE_210' | 'BG_90' | 'BG_200' | 'CH_25' | 'CH_26' | 'CH_37' | 'CH_38' | 'CH_77' | 'CH_81' | 'CY_30' | 'CY_50' | 'CY_90' | 'CY_190' | 'CZ_100' | 'CZ_120' | 'CZ_150' | 'CZ_210' | 'DE_70' | 'DE_190' | 'DK_250' | 'EE_90' | 'EE_200' | 'EE_220' | 'EE_240' | 'ES_40' | 'ES_100' | 'ES_210' | 'FI_100' | 'FI_140' | 'FI_240' | 'FI_255' | 'GB_50' | 'GB_200' | 'GR_60' | 'GR_130' | 'GR_240' | 'HR_50' | 'HR_130' | 'HR_250' | 'HU_50' | 'HU_180' | 'HU_270' | 'IE_48' | 'IE_90' | 'IE_135' | 'IE_210' | 'IE_230' | 'IT_40' | 'IT_50' | 'IT_100' | 'IT_220' | 'LT_50' | 'LT_90' | 'LT_210' | 'LU_30' | 'LU_70' | 'LU_80' | 'LU_120' | 'LU_130' | 'LU_140' | 'LU_160' | 'LU_170' | 'LV_50' | 'LV_120' | 'LV_210' | 'MC_09' | 'MC_21' | 'MC_55' | 'MC_85' | 'MC_100' | 'MC_200' | 'MT_50' | 'MT_70' | 'MT_180' | 'MU_150' | 'NL_90' | 'NL_210' | 'PL_50' | 'PL_80' | 'PL_230' | 'PT_60' | 'PT_130' | 'PT_160' | 'PT_230' | 'RO_50' | 'RO_90' | 'RO_110' | 'RO_190' | 'RO_210' | 'SE_60' | 'SE_120' | 'SE_250' | 'SI_50' | 'SI_95' | 'SI_220' | 'SK_100' | 'SK_190' | 'SK_200' | 'SK_230' | 'NO_120' | 'NO_150' | 'NO_250' | 'exempt' | 'extracom' | 'intracom_21' | 'intracom_55' | 'intracom_85' | 'intracom_100' | 'crossborder' | 'FR_85_construction' | 'FR_100_construction' | 'FR_200_construction' | 'mixed';\n /**\n * The description of the purchase request line\n */\n description?: string | null;\n }>;\n };\n path?: never;\n query?: never;\n url: '/api/external/v2/purchase_requests/imports';\n};\n\nexport type CreatePurchaseRequestImportErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type CreatePurchaseRequestImportError = CreatePurchaseRequestImportErrors[keyof CreatePurchaseRequestImportErrors];\n\nexport type CreatePurchaseRequestImportResponses = {\n /**\n * The imported Purchase Request\n */\n 201: {\n /**\n * Purchase request identifier\n */\n id: number;\n /**\n * Purchase order number\n */\n purchase_order_number: string | null;\n supplier: {\n id: number;\n /**\n * URL to get the supplier.\n */\n url: string;\n };\n delivery_address: {\n address: string | null;\n postal_code: string | null;\n city: string | null;\n country_alpha2: string | null;\n };\n status: 'to_be_validated' | 'approved' | 'rejected' | 'invoiced';\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Reason of the request\n */\n reason: string;\n /**\n * Estimated delivery date for the purchase request\n */\n estimated_delivery_date: string | null;\n amount: unknown;\n /**\n * Purchase Request currency amount (total value of the purchase request in the currency of the purchase request)\n */\n currency_amount: string;\n /**\n * Purchase Request currency amount before tax (total value before tax of the purchase request in the currency of the purchase request)\n */\n currency_amount_before_tax: string;\n /**\n * Purchase request exchange rate (used to convert the purchase request to euros. If the purchase request currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Purchase request taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n /**\n * Purchase request taxable amount (in purchase request currency)\n */\n tax: string;\n purchase_order: {\n filename: string;\n url: string;\n } | null;\n linked_invoices: {\n /**\n * List of linked supplier invoices\n */\n items: Array<{\n id: number;\n /**\n * URL to get the supplier invoice.\n */\n url: string;\n }>;\n };\n /**\n * The time the purchase request has been created\n */\n created_at: string;\n /**\n * The last time the purchase request has been updated\n */\n updated_at: string;\n };\n};\n\nexport type CreatePurchaseRequestImportResponse = CreatePurchaseRequestImportResponses[keyof CreatePurchaseRequestImportResponses];\n\nexport type GetPurchaseRequestData = {\n body?: never;\n path: {\n id: number;\n };\n query?: never;\n url: '/api/external/v2/purchase_requests/{id}';\n};\n\nexport type GetPurchaseRequestErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetPurchaseRequestError = GetPurchaseRequestErrors[keyof GetPurchaseRequestErrors];\n\nexport type GetPurchaseRequestResponses = {\n /**\n * The requested Purchase Request\n */\n 200: {\n /**\n * Purchase request identifier\n */\n id: number;\n /**\n * Purchase order number\n */\n purchase_order_number: string | null;\n supplier: {\n id: number;\n /**\n * URL to get the supplier.\n */\n url: string;\n };\n delivery_address: {\n address: string | null;\n postal_code: string | null;\n city: string | null;\n country_alpha2: string | null;\n };\n status: 'to_be_validated' | 'approved' | 'rejected' | 'invoiced';\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Reason of the request\n */\n reason: string;\n /**\n * Estimated delivery date for the purchase request\n */\n estimated_delivery_date: string | null;\n amount: unknown;\n /**\n * Purchase Request currency amount (total value of the purchase request in the currency of the purchase request)\n */\n currency_amount: string;\n /**\n * Purchase Request currency amount before tax (total value before tax of the purchase request in the currency of the purchase request)\n */\n currency_amount_before_tax: string;\n /**\n * Purchase request exchange rate (used to convert the purchase request to euros. If the purchase request currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Purchase request taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n /**\n * Purchase request taxable amount (in purchase request currency)\n */\n tax: string;\n purchase_order: {\n filename: string;\n url: string;\n } | null;\n linked_invoices: {\n /**\n * List of linked supplier invoices\n */\n items: Array<{\n id: number;\n /**\n * URL to get the supplier invoice.\n */\n url: string;\n }>;\n };\n /**\n * The time the purchase request has been created\n */\n created_at: string;\n /**\n * The last time the purchase request has been updated\n */\n updated_at: string;\n };\n};\n\nexport type GetPurchaseRequestResponse = GetPurchaseRequestResponses[keyof GetPurchaseRequestResponses];\n\nexport type GetPurchaseRequestsData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and values:\n * - `id`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n * - `reviewed_by_id`: `eq`, `not_eq`, `in`, `not_in`\n * - `user_id`: `eq`, `not_eq`, `in`, `not_in`\n * - `supplier_id`: `eq`, `not_eq`, `in`, `not_in`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/purchase_requests';\n};\n\nexport type GetPurchaseRequestsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n};\n\nexport type GetPurchaseRequestsError = GetPurchaseRequestsErrors[keyof GetPurchaseRequestsErrors];\n\nexport type GetPurchaseRequestsResponses = {\n /**\n * Returns a list of purchase requests\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n /**\n * The list of items returned\n */\n items: Array<{\n /**\n * Purchase request identifier\n */\n id: number;\n /**\n * Purchase order number\n */\n purchase_order_number: string | null;\n supplier: {\n id: number;\n /**\n * URL to get the supplier.\n */\n url: string;\n };\n delivery_address: {\n address: string | null;\n postal_code: string | null;\n city: string | null;\n country_alpha2: string | null;\n };\n status: 'to_be_validated' | 'approved' | 'rejected' | 'invoiced';\n currency: 'EUR' | 'USD' | 'GBP' | 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BYR' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'FJD' | 'FKP' | 'GEL' | 'GGP' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'IMP' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JEP' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LTL' | 'LVL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SLL' | 'SOS' | 'SRD' | 'STD' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'UYU' | 'UZS' | 'VEF' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XDR' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMK' | 'ZMW' | 'ZWL';\n /**\n * Reason of the request\n */\n reason: string;\n /**\n * Estimated delivery date for the purchase request\n */\n estimated_delivery_date: string | null;\n amount: unknown;\n /**\n * Purchase Request currency amount (total value of the purchase request in the currency of the purchase request)\n */\n currency_amount: string;\n /**\n * Purchase Request currency amount before tax (total value before tax of the purchase request in the currency of the purchase request)\n */\n currency_amount_before_tax: string;\n /**\n * Purchase request exchange rate (used to convert the purchase request to euros. If the purchase request currency is euro it will be 1.0)\n */\n exchange_rate: string;\n /**\n * Purchase request taxable amount (in euros. If the currency is euro, `currency_amount` and `amount` are identical)\n */\n currency_tax: string;\n /**\n * Purchase request taxable amount (in purchase request currency)\n */\n tax: string;\n purchase_order: {\n filename: string;\n url: string;\n } | null;\n linked_invoices: {\n /**\n * List of linked supplier invoices\n */\n items: Array<{\n id: number;\n /**\n * URL to get the supplier invoice.\n */\n url: string;\n }>;\n };\n /**\n * The time the purchase request has been created\n */\n created_at: string;\n /**\n * The last time the purchase request has been updated\n */\n updated_at: string;\n }>;\n };\n};\n\nexport type GetPurchaseRequestsResponse = GetPurchaseRequestsResponses[keyof GetPurchaseRequestsResponses];\n\nexport type GetBankEstablishmentsData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Cursor for pagination. Use this to fetch the next set of results.\n * The cursor is an opaque string returned in the previous response's metadata.\n * Leave empty for the first request.\n *\n */\n cursor?: string;\n /**\n * Number of items to return per request.\n * Defaults to 20 if not specified.\n * Must be between 1 and 100.\n *\n */\n limit?: number;\n /**\n * You can choose to filter items on specific fields.\n * Available fields and values:\n * - `id`: `lt`, `lteq`, `gt`, `gteq`, `eq`, `not_eq`, `in`, `not_in`\n *\n */\n filter?: string;\n /**\n * You can choose to sort items on specific attributes\n * Sort field may be prefixed with `-` for descending order.\n * Example : `id` will sort by ascending order, `-id` will sort by descending order.\n * Available fields : `id`\n *\n */\n sort?: string;\n };\n url: '/api/external/v2/bank_establishments';\n};\n\nexport type GetBankEstablishmentsErrors = {\n /**\n * Bad request\n */\n 400: {\n error: string;\n status: number;\n } | {\n message: string;\n } | {\n message: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n } | {\n message: string;\n field: string;\n payload: string;\n code: 'InvalidDateFormat' | 'InvalidDateTimeFormat' | 'InvalidEmailFormat' | 'InvalidPattern' | 'InvalidUUIDFormat' | 'LessThanExclusiveMinimum' | 'LessThanMinimum' | 'LessThanMinItems' | 'LessThanMinLength' | 'MoreThanExclusiveMaximum' | 'MoreThanMaximum' | 'MoreThanMaxItems' | 'MoreThanMaxLength' | 'NotAMultipartFile' | 'NotAnyOf' | 'NotEnumInclude' | 'NotExistContentTypeDefinition' | 'NotExistDiscriminatorMappedSchema' | 'NotExistDiscriminatorPropertyName' | 'NotExistPropertyDefinition' | 'NotExistRequiredKey' | 'NotExistStatusCodeDefinition' | 'NotNullError' | 'NotOneOf' | 'ValidateError';\n };\n /**\n * Access token is missing or invalid\n */\n 401: {\n error: string;\n status: number;\n };\n /**\n * Access to this resource forbidden\n */\n 403: {\n error: string;\n status: number;\n };\n /**\n * The resource was not found\n */\n 404: {\n error: string;\n status: number;\n };\n};\n\nexport type GetBankEstablishmentsError = GetBankEstablishmentsErrors[keyof GetBankEstablishmentsErrors];\n\nexport type GetBankEstablishmentsResponses = {\n /**\n * A list of bank establishments\n */\n 200: {\n /**\n * Indicates whether additional results are available beyond this set.\n * Use this flag to determine if another request is needed.\n *\n */\n has_more: boolean;\n /**\n * Cursor to retrieve the next set of results.\n * Include this value in the cursor parameter of your next request to fetch subsequent items.\n * A `null` `next_cursor` in the response indicates no further results.\n *\n */\n next_cursor: string | null;\n items: Array<{\n id: number;\n /**\n * Bank establishment name\n */\n name: string;\n created_at: string;\n updated_at: string;\n }>;\n };\n};\n\nexport type GetBankEstablishmentsResponse = GetBankEstablishmentsResponses[keyof GetBankEstablishmentsResponses];\n"],"mappings":";AA0BA,MAAM,yBACJ,MACA,KACA,UACS;AACT,KAAI,OAAO,UAAU,YAAY,iBAAiB,KAChD,MAAK,OAAO,KAAK,MAAM;UACd,iBAAiB,KAC1B,MAAK,OAAO,KAAK,MAAM,aAAa,CAAC;KAErC,MAAK,OAAO,KAAK,KAAK,UAAU,MAAM,CAAC;;AAgB3C,MAAa,yBAAyB,EACpC,iBACE,SACa;CACb,MAAM,OAAO,IAAI,UAAU;AAE3B,QAAO,QAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,WAAW;AAC7C,MAAI,UAAU,UAAa,UAAU,KACnC;AAEF,MAAI,MAAM,QAAQ,MAAM,CACtB,OAAM,SAAS,MAAM,sBAAsB,MAAM,KAAK,EAAE,CAAC;MAEzD,uBAAsB,MAAM,KAAK,MAAM;GAEzC;AAEF,QAAO;GAEV;AAED,MAAa,qBAAqB,EAChC,iBAAoB,SAClB,KAAK,UAAU,OAAO,MAAM,UAC1B,OAAO,UAAU,WAAW,MAAM,UAAU,GAAG,MAChD,EACJ;;;;AC5BD,MAAM,gBAAgB,OAAO,QANkB;CAC7C,QAAQ;CACR,WAAW;CACX,QAAQ;CACR,SAAS;CACV,CACqD;;;;ACsCtD,MAAa,mBAAoC,EAC/C,WACA,YACA,YACA,qBACA,mBACA,sBACA,qBACA,kBACA,YACA,KACA,GAAG,cACyD;CAC5D,IAAI;CAEJ,MAAM,QACJ,gBACE,OAAe,IAAI,SAAS,YAAY,WAAW,SAAS,GAAG,CAAC;CAEpE,MAAM,eAAe,mBAAmB;EACtC,IAAI,aAAqB,wBAAwB;EACjD,IAAI,UAAU;EACd,MAAM,SAAS,QAAQ,UAAU,IAAI,iBAAiB,CAAC;AAEvD,SAAO,MAAM;AACX,OAAI,OAAO,QAAS;AAEpB;GAEA,MAAM,UACJ,QAAQ,mBAAmB,UACvB,QAAQ,UACR,IAAI,QAAQ,QAAQ,QAA8C;AAExE,OAAI,gBAAgB,OAClB,SAAQ,IAAI,iBAAiB,YAAY;AAG3C,OAAI;IACF,MAAM,cAA2B;KAC/B,UAAU;KACV,GAAG;KACH,MAAM,QAAQ;KACd;KACA;KACD;IACD,IAAI,UAAU,IAAI,QAAQ,KAAK,YAAY;AAC3C,QAAI,UACF,WAAU,MAAM,UAAU,KAAK,YAAY;IAK7C,MAAM,WAAW,OADF,QAAQ,SAAS,WAAW,OACb,QAAQ;AAEtC,QAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MACR,eAAe,SAAS,OAAO,GAAG,SAAS,aAC5C;AAEH,QAAI,CAAC,SAAS,KAAM,OAAM,IAAI,MAAM,0BAA0B;IAE9D,MAAM,SAAS,SAAS,KACrB,YAAY,IAAI,mBAAmB,CAAC,CACpC,WAAW;IAEd,IAAI,SAAS;IAEb,MAAM,qBAAqB;AACzB,SAAI;AACF,aAAO,QAAQ;aACT;;AAKV,WAAO,iBAAiB,SAAS,aAAa;AAE9C,QAAI;AACF,YAAO,MAAM;MACX,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,MAAM;AAC3C,UAAI,KAAM;AACV,gBAAU;AAEV,eAAS,OAAO,QAAQ,SAAS,KAAK,CAAC,QAAQ,OAAO,KAAK;MAE3D,MAAM,SAAS,OAAO,MAAM,OAAO;AACnC,eAAS,OAAO,KAAK,IAAI;AAEzB,WAAK,MAAM,SAAS,QAAQ;OAC1B,MAAM,QAAQ,MAAM,MAAM,KAAK;OAC/B,MAAM,YAA2B,EAAE;OACnC,IAAI;AAEJ,YAAK,MAAM,QAAQ,MACjB,KAAI,KAAK,WAAW,QAAQ,CAC1B,WAAU,KAAK,KAAK,QAAQ,aAAa,GAAG,CAAC;gBACpC,KAAK,WAAW,SAAS,CAClC,aAAY,KAAK,QAAQ,cAAc,GAAG;gBACjC,KAAK,WAAW,MAAM,CAC/B,eAAc,KAAK,QAAQ,WAAW,GAAG;gBAChC,KAAK,WAAW,SAAS,EAAE;QACpC,MAAM,SAAS,OAAO,SACpB,KAAK,QAAQ,cAAc,GAAG,EAC9B,GACD;AACD,YAAI,CAAC,OAAO,MAAM,OAAO,CACvB,cAAa;;OAKnB,IAAI;OACJ,IAAI,aAAa;AAEjB,WAAI,UAAU,QAAQ;QACpB,MAAM,UAAU,UAAU,KAAK,KAAK;AACpC,YAAI;AACF,gBAAO,KAAK,MAAM,QAAQ;AAC1B,sBAAa;gBACP;AACN,gBAAO;;;AAIX,WAAI,YAAY;AACd,YAAI,kBACF,OAAM,kBAAkB,KAAK;AAG/B,YAAI,oBACF,QAAO,MAAM,oBAAoB,KAAK;;AAI1C,oBAAa;QACX;QACA,OAAO;QACP,IAAI;QACJ,OAAO;QACR,CAAC;AAEF,WAAI,UAAU,OACZ,OAAM;;;cAIJ;AACR,YAAO,oBAAoB,SAAS,aAAa;AACjD,YAAO,aAAa;;AAGtB;YACO,OAAO;AAEd,iBAAa,MAAM;AAEnB,QACE,wBAAwB,UACxB,WAAW,oBAEX;AAQF,UAAM,MAJU,KAAK,IACnB,aAAa,MAAM,UAAU,IAC7B,oBAAoB,IACrB,CACmB;;;;AAO1B,QAAO,EAAE,QAFM,cAAc,EAEZ;;;;;AC3OnB,MAAa,yBAAyB,UAA+B;AACnE,SAAQ,OAAR;EACE,KAAK,QACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,QACE,QAAO;;;AAIb,MAAa,2BAA2B,UAA+B;AACrE,SAAQ,OAAR;EACE,KAAK,OACH,QAAO;EACT,KAAK,gBACH,QAAO;EACT,KAAK,iBACH,QAAO;EACT,QACE,QAAO;;;AAIb,MAAa,0BAA0B,UAAgC;AACrE,SAAQ,OAAR;EACE,KAAK,QACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,KAAK,SACH,QAAO;EACT,QACE,QAAO;;;AAIb,MAAa,uBAAuB,EAClC,eACA,SACA,MACA,OACA,YAGI;AACJ,KAAI,CAAC,SAAS;EACZ,MAAMA,kBACJ,gBAAgB,QAAQ,MAAM,KAAK,MAAM,mBAAmB,EAAY,CAAC,EACzE,KAAK,wBAAwB,MAAM,CAAC;AACtC,UAAQ,OAAR;GACE,KAAK,QACH,QAAO,IAAIA;GACb,KAAK,SACH,QAAO,IAAI,KAAK,GAAGA;GACrB,KAAK,SACH,QAAOA;GACT,QACE,QAAO,GAAG,KAAK,GAAGA;;;CAIxB,MAAM,YAAY,sBAAsB,MAAM;CAC9C,MAAM,eAAe,MAClB,KAAK,MAAM;AACV,MAAI,UAAU,WAAW,UAAU,SACjC,QAAO,gBAAgB,IAAI,mBAAmB,EAAY;AAG5D,SAAO,wBAAwB;GAC7B;GACA;GACA,OAAO;GACR,CAAC;GACF,CACD,KAAK,UAAU;AAClB,QAAO,UAAU,WAAW,UAAU,WAClC,YAAY,eACZ;;AAGN,MAAa,2BAA2B,EACtC,eACA,MACA,YAC6B;AAC7B,KAAI,UAAU,UAAa,UAAU,KACnC,QAAO;AAGT,KAAI,OAAO,UAAU,SACnB,OAAM,IAAI,MACR,uGACD;AAGH,QAAO,GAAG,KAAK,GAAG,gBAAgB,QAAQ,mBAAmB,MAAM;;AAGrE,MAAa,wBAAwB,EACnC,eACA,SACA,MACA,OACA,OACA,gBAII;AACJ,KAAI,iBAAiB,KACnB,QAAO,YAAY,MAAM,aAAa,GAAG,GAAG,KAAK,GAAG,MAAM,aAAa;AAGzE,KAAI,UAAU,gBAAgB,CAAC,SAAS;EACtC,IAAI,SAAmB,EAAE;AACzB,SAAO,QAAQ,MAAM,CAAC,SAAS,CAAC,KAAK,OAAO;AAC1C,YAAS;IACP,GAAG;IACH;IACA,gBAAiB,IAAe,mBAAmB,EAAY;IAChE;IACD;EACF,MAAMA,iBAAe,OAAO,KAAK,IAAI;AACrC,UAAQ,OAAR;GACE,KAAK,OACH,QAAO,GAAG,KAAK,GAAGA;GACpB,KAAK,QACH,QAAO,IAAIA;GACb,KAAK,SACH,QAAO,IAAI,KAAK,GAAGA;GACrB,QACE,QAAOA;;;CAIb,MAAM,YAAY,uBAAuB,MAAM;CAC/C,MAAM,eAAe,OAAO,QAAQ,MAAM,CACvC,KAAK,CAAC,KAAK,OACV,wBAAwB;EACtB;EACA,MAAM,UAAU,eAAe,GAAG,KAAK,GAAG,IAAI,KAAK;EACnD,OAAO;EACR,CAAC,CACH,CACA,KAAK,UAAU;AAClB,QAAO,UAAU,WAAW,UAAU,WAClC,YAAY,eACZ;;;;;ACpKN,MAAa,gBAAgB;AAE7B,MAAa,yBAAyB,EAAE,MAAM,KAAK,WAA2B;CAC5E,IAAI,MAAM;CACV,MAAM,UAAU,KAAK,MAAM,cAAc;AACzC,KAAI,QACF,MAAK,MAAM,SAAS,SAAS;EAC3B,IAAI,UAAU;EACd,IAAI,OAAO,MAAM,UAAU,GAAG,MAAM,SAAS,EAAE;EAC/C,IAAI,QAA6B;AAEjC,MAAI,KAAK,SAAS,IAAI,EAAE;AACtB,aAAU;AACV,UAAO,KAAK,UAAU,GAAG,KAAK,SAAS,EAAE;;AAG3C,MAAI,KAAK,WAAW,IAAI,EAAE;AACxB,UAAO,KAAK,UAAU,EAAE;AACxB,WAAQ;aACC,KAAK,WAAW,IAAI,EAAE;AAC/B,UAAO,KAAK,UAAU,EAAE;AACxB,WAAQ;;EAGV,MAAM,QAAQ,KAAK;AAEnB,MAAI,UAAU,UAAa,UAAU,KACnC;AAGF,MAAI,MAAM,QAAQ,MAAM,EAAE;AACxB,SAAM,IAAI,QACR,OACA,oBAAoB;IAAE;IAAS;IAAM;IAAO;IAAO,CAAC,CACrD;AACD;;AAGF,MAAI,OAAO,UAAU,UAAU;AAC7B,SAAM,IAAI,QACR,OACA,qBAAqB;IACnB;IACA;IACA;IACO;IACP,WAAW;IACZ,CAAC,CACH;AACD;;AAGF,MAAI,UAAU,UAAU;AACtB,SAAM,IAAI,QACR,OACA,IAAI,wBAAwB;IAC1B;IACO;IACR,CAAC,GACH;AACD;;EAGF,MAAM,eAAe,mBACnB,UAAU,UAAU,IAAI,UAAqB,MAC9C;AACD,QAAM,IAAI,QAAQ,OAAO,aAAa;;AAG1C,QAAO;;AAGT,MAAa,UAAU,EACrB,SACA,MACA,OACA,iBACA,KAAK,WAOD;CACJ,MAAM,UAAU,KAAK,WAAW,IAAI,GAAG,OAAO,IAAI;CAClD,IAAI,OAAO,WAAW,MAAM;AAC5B,KAAI,KACF,OAAM,sBAAsB;EAAE;EAAM;EAAK,CAAC;CAE5C,IAAI,SAAS,QAAQ,gBAAgB,MAAM,GAAG;AAC9C,KAAI,OAAO,WAAW,IAAI,CACxB,UAAS,OAAO,UAAU,EAAE;AAE9B,KAAI,OACF,QAAO,IAAI;AAEb,QAAO;;AAGT,SAAgB,oBAAoB,SAIjC;CACD,MAAM,UAAU,QAAQ,SAAS;AAGjC,KAFyB,WAAW,QAAQ,gBAEtB;AACpB,MAAI,oBAAoB,QAItB,QAFE,QAAQ,mBAAmB,UAAa,QAAQ,mBAAmB,KAE1C,QAAQ,iBAAiB;AAItD,SAAO,QAAQ,SAAS,KAAK,QAAQ,OAAO;;AAI9C,KAAI,QACF,QAAO,QAAQ;;;;;ACpHnB,MAAa,eAAe,OAC1B,MACA,aACgC;CAChC,MAAM,QACJ,OAAO,aAAa,aAAa,MAAM,SAAS,KAAK,GAAG;AAE1D,KAAI,CAAC,MACH;AAGF,KAAI,KAAK,WAAW,SAClB,QAAO,UAAU;AAGnB,KAAI,KAAK,WAAW,QAClB,QAAO,SAAS,KAAK,MAAM;AAG7B,QAAO;;;;;AC3BT,MAAa,yBAAsC,EACjD,aAAa,EAAE,EACf,GAAG,SACuB,EAAE,KAAK;CACjC,MAAM,mBAAmB,gBAAmB;EAC1C,MAAM,SAAmB,EAAE;AAC3B,MAAI,eAAe,OAAO,gBAAgB,SACxC,MAAK,MAAM,QAAQ,aAAa;GAC9B,MAAM,QAAQ,YAAY;AAE1B,OAAI,UAAU,UAAa,UAAU,KACnC;GAGF,MAAM,UAAU,WAAW,SAAS;AAEpC,OAAI,MAAM,QAAQ,MAAM,EAAE;IACxB,MAAM,kBAAkB,oBAAoB;KAC1C,eAAe,QAAQ;KACvB,SAAS;KACT;KACA,OAAO;KACP;KACA,GAAG,QAAQ;KACZ,CAAC;AACF,QAAI,gBAAiB,QAAO,KAAK,gBAAgB;cACxC,OAAO,UAAU,UAAU;IACpC,MAAM,mBAAmB,qBAAqB;KAC5C,eAAe,QAAQ;KACvB,SAAS;KACT;KACA,OAAO;KACA;KACP,GAAG,QAAQ;KACZ,CAAC;AACF,QAAI,iBAAkB,QAAO,KAAK,iBAAiB;UAC9C;IACL,MAAM,sBAAsB,wBAAwB;KAClD,eAAe,QAAQ;KACvB;KACO;KACR,CAAC;AACF,QAAI,oBAAqB,QAAO,KAAK,oBAAoB;;;AAI/D,SAAO,OAAO,KAAK,IAAI;;AAEzB,QAAO;;;;;AAMT,MAAa,cACX,gBACuC;AACvC,KAAI,CAAC,YAGH,QAAO;CAGT,MAAM,eAAe,YAAY,MAAM,IAAI,CAAC,IAAI,MAAM;AAEtD,KAAI,CAAC,aACH;AAGF,KACE,aAAa,WAAW,mBAAmB,IAC3C,aAAa,SAAS,QAAQ,CAE9B,QAAO;AAGT,KAAI,iBAAiB,sBACnB,QAAO;AAGT,KACE;EAAC;EAAgB;EAAU;EAAU;EAAS,CAAC,MAAM,SACnD,aAAa,WAAW,KAAK,CAC9B,CAED,QAAO;AAGT,KAAI,aAAa,WAAW,QAAQ,CAClC,QAAO;;AAMX,MAAM,qBACJ,SAGA,SACY;AACZ,KAAI,CAAC,KACH,QAAO;AAET,KACE,QAAQ,QAAQ,IAAI,KAAK,IACzB,QAAQ,QAAQ,SAChB,QAAQ,QAAQ,IAAI,SAAS,EAAE,SAAS,GAAG,KAAK,GAAG,CAEnD,QAAO;AAET,QAAO;;AAGT,MAAa,gBAAgB,OAAO,EAClC,UACA,GAAG,cAIG;AACN,MAAK,MAAM,QAAQ,UAAU;AAC3B,MAAI,kBAAkB,SAAS,KAAK,KAAK,CACvC;EAGF,MAAM,QAAQ,MAAM,aAAa,MAAM,QAAQ,KAAK;AAEpD,MAAI,CAAC,MACH;EAGF,MAAM,OAAO,KAAK,QAAQ;AAE1B,UAAQ,KAAK,IAAb;GACE,KAAK;AACH,QAAI,CAAC,QAAQ,MACX,SAAQ,QAAQ,EAAE;AAEpB,YAAQ,MAAM,QAAQ;AACtB;GACF,KAAK;AACH,YAAQ,QAAQ,OAAO,UAAU,GAAG,KAAK,GAAG,QAAQ;AACpD;GACF,KAAK;GACL;AACE,YAAQ,QAAQ,IAAI,MAAM,MAAM;AAChC;;;;AAKR,MAAa,YAAgC,YAC3C,OAAO;CACL,SAAS,QAAQ;CACjB,MAAM,QAAQ;CACd,OAAO,QAAQ;CACf,iBACE,OAAO,QAAQ,oBAAoB,aAC/B,QAAQ,kBACR,sBAAsB,QAAQ,gBAAgB;CACpD,KAAK,QAAQ;CACd,CAAC;AAEJ,MAAa,gBAAgB,GAAW,MAAsB;CAC5D,MAAM,SAAS;EAAE,GAAG;EAAG,GAAG;EAAG;AAC7B,KAAI,OAAO,SAAS,SAAS,IAAI,CAC/B,QAAO,UAAU,OAAO,QAAQ,UAAU,GAAG,OAAO,QAAQ,SAAS,EAAE;AAEzE,QAAO,UAAU,aAAa,EAAE,SAAS,EAAE,QAAQ;AACnD,QAAO;;AAGT,MAAM,kBAAkB,YAA8C;CACpE,MAAM,UAAmC,EAAE;AAC3C,SAAQ,SAAS,OAAO,QAAQ;AAC9B,UAAQ,KAAK,CAAC,KAAK,MAAM,CAAC;GAC1B;AACF,QAAO;;AAGT,MAAa,gBACX,GAAG,YACS;CACZ,MAAM,gBAAgB,IAAI,SAAS;AACnC,MAAK,MAAM,UAAU,SAAS;AAC5B,MAAI,CAAC,OACH;EAGF,MAAM,WACJ,kBAAkB,UACd,eAAe,OAAO,GACtB,OAAO,QAAQ,OAAO;AAE5B,OAAK,MAAM,CAAC,KAAK,UAAU,SACzB,KAAI,UAAU,KACZ,eAAc,OAAO,IAAI;WAChB,MAAM,QAAQ,MAAM,CAC7B,MAAK,MAAM,KAAK,MACd,eAAc,OAAO,KAAK,EAAY;WAE/B,UAAU,OAGnB,eAAc,IACZ,KACA,OAAO,UAAU,WAAW,KAAK,UAAU,MAAM,GAAI,MACtD;;AAIP,QAAO;;AAqBT,IAAM,eAAN,MAAgC;CAC9B,MAAiC,EAAE;CAEnC,QAAc;AACZ,OAAK,MAAM,EAAE;;CAGf,MAAM,IAAgC;EACpC,MAAM,QAAQ,KAAK,oBAAoB,GAAG;AAC1C,MAAI,KAAK,IAAI,OACX,MAAK,IAAI,SAAS;;CAItB,OAAO,IAAmC;EACxC,MAAM,QAAQ,KAAK,oBAAoB,GAAG;AAC1C,SAAO,QAAQ,KAAK,IAAI,OAAO;;CAGjC,oBAAoB,IAAkC;AACpD,MAAI,OAAO,OAAO,SAChB,QAAO,KAAK,IAAI,MAAM,KAAK;AAE7B,SAAO,KAAK,IAAI,QAAQ,GAAG;;CAG7B,OACE,IACA,IAC8B;EAC9B,MAAM,QAAQ,KAAK,oBAAoB,GAAG;AAC1C,MAAI,KAAK,IAAI,QAAQ;AACnB,QAAK,IAAI,SAAS;AAClB,UAAO;;AAET,SAAO;;CAGT,IAAI,IAAyB;AAC3B,OAAK,IAAI,KAAK,GAAG;AACjB,SAAO,KAAK,IAAI,SAAS;;;AAU7B,MAAa,4BAKP;CACJ,OAAO,IAAI,cAAsD;CACjE,SAAS,IAAI,cAA4C;CACzD,UAAU,IAAI,cAAiD;CAChE;AAED,MAAM,yBAAyB,sBAAsB;CACnD,eAAe;CACf,OAAO;EACL,SAAS;EACT,OAAO;EACR;CACD,QAAQ;EACN,SAAS;EACT,OAAO;EACR;CACF,CAAC;AAEF,MAAM,iBAAiB,EACrB,gBAAgB,oBACjB;AAED,MAAa,gBACX,WAAqD,EAAE,MACT;CAC9C,GAAG;CACH,SAAS;CACT,SAAS;CACT,iBAAiB;CACjB,GAAG;CACJ;;;;ACjTD,MAAa,gBAAgB,SAAiB,EAAE,KAAa;CAC3D,IAAI,UAAU,aAAa,cAAc,EAAE,OAAO;CAElD,MAAM,mBAA2B,EAAE,GAAG,SAAS;CAE/C,MAAM,aAAa,aAA2B;AAC5C,YAAU,aAAa,SAASC,SAAO;AACvC,SAAO,WAAW;;CAGpB,MAAM,eAAe,oBAKlB;CAEH,MAAM,gBAAgB,OAAO,YAA4B;EACvD,MAAM,OAAO;GACX,GAAG;GACH,GAAG;GACH,OAAO,QAAQ,SAAS,QAAQ,SAAS,WAAW;GACpD,SAAS,aAAa,QAAQ,SAAS,QAAQ,QAAQ;GACvD,gBAAgB;GACjB;AAED,MAAI,KAAK,SACP,OAAM,cAAc;GAClB,GAAG;GACH,UAAU,KAAK;GAChB,CAAC;AAGJ,MAAI,KAAK,iBACP,OAAM,KAAK,iBAAiB,KAAK;AAGnC,MAAI,KAAK,SAAS,UAAa,KAAK,eAClC,MAAK,iBAAiB,KAAK,eAAe,KAAK,KAAK;AAItD,MAAI,KAAK,SAAS,UAAa,KAAK,mBAAmB,GACrD,MAAK,QAAQ,OAAO,eAAe;AAKrC,SAAO;GAAE;GAAM,KAFH,SAAS,KAAK;GAEN;;CAGtB,MAAM,UAA6B,OAAO,YAAY;EAEpD,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,QAAQ;EAClD,MAAM,cAAuB;GAC3B,UAAU;GACV,GAAG;GACH,MAAM,oBAAoB,KAAK;GAChC;EAED,IAAIC,YAAU,IAAI,QAAQ,KAAK,YAAY;AAE3C,OAAK,MAAM,MAAM,aAAa,QAAQ,IACpC,KAAI,GACF,aAAU,MAAM,GAAGA,WAAS,KAAK;EAMrC,MAAM,SAAS,KAAK;EACpB,IAAI;AAEJ,MAAI;AACF,cAAW,MAAM,OAAOA,UAAQ;WACzBC,SAAO;GAEd,IAAIC,eAAaD;AAEjB,QAAK,MAAM,MAAM,aAAa,MAAM,IAClC,KAAI,GACF,gBAAc,MAAM,GAClBA,SACA,QACAD,WACA,KACD;AAIL,kBAAaE,gBAAe,EAAE;AAE9B,OAAI,KAAK,aACP,OAAMA;AAIR,UAAO,KAAK,kBAAkB,SAC1B,SACA;IACE,OAAOA;IACP;IACA,UAAU;IACX;;AAGP,OAAK,MAAM,MAAM,aAAa,SAAS,IACrC,KAAI,GACF,YAAW,MAAM,GAAG,UAAUF,WAAS,KAAK;EAIhD,MAAM,SAAS;GACb;GACA;GACD;AAED,MAAI,SAAS,IAAI;GACf,MAAM,WACH,KAAK,YAAY,SACd,WAAW,SAAS,QAAQ,IAAI,eAAe,CAAC,GAChD,KAAK,YAAY;AAEvB,OACE,SAAS,WAAW,OACpB,SAAS,QAAQ,IAAI,iBAAiB,KAAK,KAC3C;IACA,IAAI;AACJ,YAAQ,SAAR;KACE,KAAK;KACL,KAAK;KACL,KAAK;AACH,kBAAY,MAAM,SAAS,UAAU;AACrC;KACF,KAAK;AACH,kBAAY,IAAI,UAAU;AAC1B;KACF,KAAK;AACH,kBAAY,SAAS;AACrB;KACF,KAAK;KACL;AACE,kBAAY,EAAE;AACd;;AAEJ,WAAO,KAAK,kBAAkB,SAC1B,YACA;KACE,MAAM;KACN,GAAG;KACJ;;GAGP,IAAI;AACJ,WAAQ,SAAR;IACE,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;AACH,YAAO,MAAM,SAAS,UAAU;AAChC;IACF,KAAK,QAAQ;KAGX,MAAM,OAAO,MAAM,SAAS,MAAM;AAClC,YAAO,OAAO,KAAK,MAAM,KAAK,GAAG,EAAE;AACnC;;IAEF,KAAK,SACH,QAAO,KAAK,kBAAkB,SAC1B,SAAS,OACT;KACE,MAAM,SAAS;KACf,GAAG;KACJ;;AAGT,OAAI,YAAY,QAAQ;AACtB,QAAI,KAAK,kBACP,OAAM,KAAK,kBAAkB,KAAK;AAGpC,QAAI,KAAK,oBACP,QAAO,MAAM,KAAK,oBAAoB,KAAK;;AAI/C,UAAO,KAAK,kBAAkB,SAC1B,OACA;IACE;IACA,GAAG;IACJ;;EAGP,MAAM,YAAY,MAAM,SAAS,MAAM;EACvC,IAAI;AAEJ,MAAI;AACF,eAAY,KAAK,MAAM,UAAU;UAC3B;EAIR,MAAM,QAAQ,aAAa;EAC3B,IAAI,aAAa;AAEjB,OAAK,MAAM,MAAM,aAAa,MAAM,IAClC,KAAI,GACF,cAAc,MAAM,GAAG,OAAO,UAAUA,WAAS,KAAK;AAI1D,eAAa,cAAe,EAAE;AAE9B,MAAI,KAAK,aACP,OAAM;AAIR,SAAO,KAAK,kBAAkB,SAC1B,SACA;GACE,OAAO;GACP,GAAG;GACJ;;CAGP,MAAM,gBACH,YAAmC,YAClC,QAAQ;EAAE,GAAG;EAAS;EAAQ,CAAC;CAEnC,MAAM,aACH,WAAkC,OAAO,YAA4B;EACpE,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,QAAQ;AAClD,SAAO,gBAAgB;GACrB,GAAG;GACH,MAAM,KAAK;GACX,SAAS,KAAK;GACd;GACA,WAAW,OAAO,OAAK,SAAS;IAC9B,IAAIA,YAAU,IAAI,QAAQG,OAAK,KAAK;AACpC,SAAK,MAAM,MAAM,aAAa,QAAQ,IACpC,KAAI,GACF,aAAU,MAAM,GAAGH,WAAS,KAAK;AAGrC,WAAOA;;GAET,gBAAgB,oBAAoB,KAAK;GAIzC;GACD,CAAC;;AAGN,QAAO;EACL;EACA,SAAS,aAAa,UAAU;EAChC,QAAQ,aAAa,SAAS;EAC9B,KAAK,aAAa,MAAM;EACxB;EACA,MAAM,aAAa,OAAO;EAC1B;EACA,SAAS,aAAa,UAAU;EAChC,OAAO,aAAa,QAAQ;EAC5B,MAAM,aAAa,OAAO;EAC1B,KAAK,aAAa,MAAM;EACxB;EACA;EACA,KAAK;GACH,SAAS,UAAU,UAAU;GAC7B,QAAQ,UAAU,SAAS;GAC3B,KAAK,UAAU,MAAM;GACrB,MAAM,UAAU,OAAO;GACvB,SAAS,UAAU,UAAU;GAC7B,OAAO,UAAU,QAAQ;GACzB,MAAM,UAAU,OAAO;GACvB,KAAK,UAAU,MAAM;GACrB,OAAO,UAAU,QAAQ;GAC1B;EACD,OAAO,aAAa,QAAQ;EAC7B;;;;;ACtSH,MAAa,SAAS,aAAa,aAA6B,EAAE,SAAS,6BAA6B,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;ACsB1G,MAAa,eAAqD,aAAsD,SAAS,UAAU,QAAQ,IAA2D;CAC1M,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;;AAeF,MAAa,gBAAsD,aAAsD,QAAQ,UAAU,QAAQ,KAA8D;CAC7M,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;;;;;;AAeF,MAAa,cAAoD,aAAoD,QAAQ,UAAU,QAAQ,IAAyD;CACpM,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;;;;;;AAmBF,MAAa,qBAA2D,aAA4D,SAAS,UAAU,QAAQ,IAAuE;CAClO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;;AAeF,MAAa,sBAA4D,aAA6D,SAAS,UAAU,QAAQ,KAA0E;CACvO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,SAAS;EACf;CACJ,CAAC;;;;;;;;;;;;;;AAeF,MAAa,oBAA0D,aAA0D,QAAQ,UAAU,QAAQ,IAAqE;CAC5N,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,uBAA6D,aAA6D,QAAQ,UAAU,QAAQ,IAA2E;CACxO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;;;;;;;;AAiBF,MAAa,wBAA8D,aAA+D,SAAS,UAAU,QAAQ,IAA6E;CAC9O,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;;;;AAiBF,MAAa,yBAA+D,aAAgE,SAAS,UAAU,QAAQ,KAAgF;CACnP,GAAG;CACH,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,SAAS;EACf;CACJ,CAAC;;;;;;;;;;;;;;;;;;;AAoBF,MAAa,oBAA0D,aAA2D,SAAS,UAAU,QAAQ,IAAqE;CAC9N,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;;AAeF,MAAa,qBAA2D,aAA2D,QAAQ,UAAU,QAAQ,KAAwE;CACjO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;;;;;;AAeF,MAAa,kBAAwD,aAAwD,QAAQ,UAAU,QAAQ,IAAiE;CACpN,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;;AAeF,MAAa,oBAA0D,aAA0D,QAAQ,UAAU,QAAQ,IAAqE;CAC5N,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;;;;;;;;;;AAmBF,MAAa,oCAA0E,aAA0E,QAAQ,UAAU,QAAQ,IAAqG;CAC5R,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,uBAA6D,aAA8D,SAAS,UAAU,QAAQ,IAA2E;CAC1O,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,sBAA4D,aAA4D,QAAQ,UAAU,QAAQ,IAAyE;CACpO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,kCAAwE,aAAyE,SAAS,UAAU,QAAQ,OAAoG;CACzR,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,SAAS;EACf;CACJ,CAAC;;;;;;;;;;;;AAaF,MAAa,8BAAoE,aAAqE,SAAS,UAAU,QAAQ,KAA0F;CACvQ,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,SAAS;EACf;CACJ,CAAC;;;;;;;;;;;;;;;;;;;AAoBF,MAAa,+CAAqF,aAAqF,QAAQ,UAAU,QAAQ,IAA2H;CACxU,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;;AAeF,MAAa,iCAAuE,aAAuE,QAAQ,UAAU,QAAQ,IAA+F;CAChR,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;;;AAgBF,MAAa,iCAAuE,aAAuE,QAAQ,UAAU,QAAQ,IAA+F;CAChR,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,uBAA6D,aAA8D,SAAS,UAAU,QAAQ,IAA2E;CAC1O,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;AAYF,MAAa,wBAA8D,aAA8D,QAAQ,UAAU,QAAQ,KAA8E;CAC7O,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;;;;AAaF,MAAa,0BAAgE,aAAgE,QAAQ,UAAU,QAAQ,KAAkF;CACrP,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;;;AAYF,MAAa,kCAAwE,aAAwE,QAAQ,UAAU,QAAQ,KAAkG;CACrR,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,2BAAiE,aAAkE,SAAS,UAAU,QAAQ,IAAmF;CAC1P,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;AAYF,MAAa,4BAAkE,aAAkE,QAAQ,UAAU,QAAQ,KAAsF;CAC7P,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,0BAAgE,aAAgE,QAAQ,UAAU,QAAQ,IAAiF;CACpP,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,2BAAiE,aAAiE,QAAQ,UAAU,QAAQ,IAAmF;CACxP,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,6CAAmF,aAAmF,QAAQ,UAAU,QAAQ,IAAuH;CAChU,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,sCAA4E,aAA4E,QAAQ,UAAU,QAAQ,IAAyG;CACpS,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,eAAqD,aAAsD,SAAS,UAAU,QAAQ,IAA2D;CAC1M,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,gBAAsD,aAAsD,QAAQ,UAAU,QAAQ,KAA8D;CAC7M,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,cAAoD,aAAoD,QAAQ,UAAU,QAAQ,IAAyD;CACpM,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,cAAoD,aAAoD,QAAQ,UAAU,QAAQ,IAAyD;CACpM,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;;;;;;AAeF,MAAa,sBAA4D,aAA6D,SAAS,UAAU,QAAQ,IAAyE;CACtO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;AAcF,MAAa,uBAA6D,aAA6D,QAAQ,UAAU,QAAQ,KAA4E;CACzO,GAAG;CACH,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,+BAAqE,aAAsE,SAAS,UAAU,QAAQ,IAA2F;CAC1Q,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,iCAAuE,aAAuE,QAAQ,UAAU,QAAQ,KAAgG;CACjR,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,oCAA0E,aAA0E,QAAQ,UAAU,QAAQ,IAAqG;CAC5R,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,aAAmD,aAAmD,QAAQ,UAAU,QAAQ,KAAwD;CACjM,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,gBAAsD,aAAsD,QAAQ,UAAU,QAAQ,IAA6D;CAC5M,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,uBAA6D,aAA6D,QAAQ,UAAU,QAAQ,KAA4E;CACzO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,sBAA4D,aAA4D,QAAQ,UAAU,QAAQ,IAAyE;CACpO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,sBAA4D,aAA4D,QAAQ,UAAU,QAAQ,IAAyE;CACpO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,0BAAgE,aAAgE,QAAQ,UAAU,QAAQ,KAAkF;CACrP,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,yBAA+D,aAA+D,QAAQ,UAAU,QAAQ,IAA+E;CAChP,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,yBAA+D,aAA+D,QAAQ,UAAU,QAAQ,IAA+E;CAChP,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,gBAAsD,aAAuD,SAAS,UAAU,QAAQ,IAA6D;CAC9M,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,eAAqD,aAAqD,QAAQ,UAAU,QAAQ,IAA2D;CACxM,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,uBAA6D,aAA6D,QAAQ,UAAU,QAAQ,IAA2E;CACxO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,gBAAsD,aAAuD,SAAS,UAAU,QAAQ,IAA6D;CAC9M,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,gBAAsD,aAAsD,QAAQ,UAAU,QAAQ,KAA8D;CAC7M,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,eAAqD,aAAqD,QAAQ,UAAU,QAAQ,IAA2D;CACxM,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,eAAqD,aAAqD,QAAQ,UAAU,QAAQ,IAA2D;CACxM,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;;;;;;;AAgBF,MAAa,aAAmD,aAAoD,SAAS,UAAU,QAAQ,KAAwD;CACnM,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,SAAS;EACf;CACJ,CAAC;;;;;;;;;;;;;;;AAgBF,MAAa,YAAkD,aAAkD,QAAQ,UAAU,QAAQ,IAAqD;CAC5L,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,YAAkD,aAAkD,QAAQ,UAAU,QAAQ,IAAqD;CAC5L,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;AAOF,MAAa,SAA+C,aAAgD,SAAS,UAAU,QAAQ,IAA+C;CAClL,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,yCAA+E,aAA+E,QAAQ,UAAU,QAAQ,IAA+G;CAChT,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,kCAAwE,aAAwE,QAAQ,UAAU,QAAQ,IAAiG;CACpR,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,8BAAoE,aAAoE,QAAQ,UAAU,QAAQ,IAAyF;CACpQ,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,yCAA+E,aAA+E,QAAQ,UAAU,QAAQ,IAA+G;CAChT,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;AAcF,MAAa,0CAAgF,aAAgF,QAAQ,UAAU,QAAQ,KAAkH;CACrT,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;;AAWF,MAAa,4CAAkF,aAAkF,QAAQ,UAAU,QAAQ,OAAwH;CAC/T,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,gCAAsE,aAAsE,QAAQ,UAAU,QAAQ,IAA6F;CAC5Q,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;AAaF,MAAa,iCAAuE,aAAuE,QAAQ,UAAU,QAAQ,KAAgG;CACjR,GAAG;CACH,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,0BAAgE,aAAgE,QAAQ,UAAU,QAAQ,OAAoF;CACvP,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,sBAA4D,aAA4D,QAAQ,UAAU,QAAQ,IAAyE;CACpO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,yBAA+D,aAA+D,QAAQ,UAAU,QAAQ,IAA+E;CAChP,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;;;AAYF,MAAa,6BAAmE,aAAmE,QAAQ,UAAU,QAAQ,IAAuF;CAChQ,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;;;;AAiBF,MAAa,8BAAoE,aAAoE,QAAQ,UAAU,QAAQ,KAA0F;CACrQ,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,gCAAsE,aAAsE,QAAQ,UAAU,QAAQ,IAA6F;CAC5Q,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;;;;;;AAmBF,MAAa,gCAAsE,aAAsE,QAAQ,UAAU,QAAQ,IAA6F;CAC5Q,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;;;AAYF,MAAa,iCAAuE,aAAuE,QAAQ,UAAU,QAAQ,IAA+F;CAChR,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;;;AAYF,MAAa,2BAAiE,aAAiE,QAAQ,UAAU,QAAQ,IAAmF;CACxP,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,kBAAwD,aAAwD,QAAQ,UAAU,QAAQ,KAAkE;CACrN,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,2BAAiE,aAAiE,QAAQ,UAAU,QAAQ,IAAmF;CACxP,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,uBAA6D,aAA8D,SAAS,UAAU,QAAQ,IAA2E;CAC1O,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,sBAA4D,aAA4D,QAAQ,UAAU,QAAQ,IAAyE;CACpO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,sBAA4D,aAA4D,QAAQ,UAAU,QAAQ,IAAyE;CACpO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,gCAAsE,aAAsE,QAAQ,UAAU,QAAQ,IAA6F;CAC5Q,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;;;;;AAkBF,MAAa,gCAAsE,aAAsE,QAAQ,UAAU,QAAQ,IAA6F;CAC5Q,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,8BAAoE,aAAoE,QAAQ,UAAU,QAAQ,IAAyF;CACpQ,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;AAYF,MAAa,sCAA4E,aAA4E,QAAQ,UAAU,QAAQ,IAAyG;CACpS,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,yCAA+E,aAA+E,QAAQ,UAAU,QAAQ,IAA+G;CAChT,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;AAcF,MAAa,0CAAgF,aAAgF,QAAQ,UAAU,QAAQ,KAAkH;CACrT,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;;;AAYF,MAAa,4CAAkF,aAAkF,QAAQ,UAAU,QAAQ,OAAwH;CAC/T,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;AAcF,MAAa,6CAAmF,aAAmF,QAAQ,UAAU,QAAQ,KAAwH;CACjU,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;;;AAYF,MAAa,yBAA+D,aAA+D,QAAQ,UAAU,QAAQ,KAAgF;CACjP,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,qCAA2E,aAA2E,QAAQ,UAAU,QAAQ,IAAuG;CAChS,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,iBAAuD,aAAwD,SAAS,UAAU,QAAQ,KAAgE;CACnN,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,SAAS;EACf;CACJ,CAAC;;;;;;AAOF,MAAa,+BAAqE,aAAqE,QAAQ,UAAU,QAAQ,IAA2F;CACxQ,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,qBAA2D,aAA4D,SAAS,UAAU,QAAQ,IAAuE;CAClO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,oBAA0D,aAA0D,QAAQ,UAAU,QAAQ,IAAqE;CAC5N,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,8BAAoE,aAAoE,QAAQ,UAAU,QAAQ,IAAyF;CACpQ,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,iBAAuD,aAAwD,SAAS,UAAU,QAAQ,IAA+D;CAClN,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,kBAAwD,aAAwD,QAAQ,UAAU,QAAQ,KAAkE;CACrN,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,eAAqD,aAAqD,QAAQ,UAAU,QAAQ,IAA2D;CACxM,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,kBAAwD,aAAwD,QAAQ,UAAU,QAAQ,IAAiE;CACpN,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,mBAAyD,aAAyD,QAAQ,UAAU,QAAQ,IAAmE;CACxN,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;;;;;;AAmBF,MAAa,sBAA4D,aAA6D,SAAS,UAAU,QAAQ,IAAyE;CACtO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;AAcF,MAAa,8BAAoE,aAAqE,SAAS,UAAU,QAAQ,IAAyF;CACtQ,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;AAcF,MAAa,8BAAoE,aAAqE,SAAS,UAAU,QAAQ,IAAyF;CACtQ,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;AAcF,MAAa,sBAA4D,aAA6D,SAAS,UAAU,QAAQ,IAAyE;CACtO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;AAcF,MAAa,sBAA4D,aAA6D,SAAS,UAAU,QAAQ,IAAyE;CACtO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;AAcF,MAAa,qBAA2D,aAA4D,SAAS,UAAU,QAAQ,IAAuE;CAClO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;;;;;AAkBF,MAAa,6BAAmE,aAAoE,SAAS,UAAU,QAAQ,IAAuF;CAClQ,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;AAcF,MAAa,yBAA+D,aAAgE,SAAS,UAAU,QAAQ,IAA+E;CAClP,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,mBAAyD,aAA0D,SAAS,UAAU,QAAQ,IAAmE;CAC1N,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,mBAAyD,aAAyD,QAAQ,UAAU,QAAQ,KAAoE;CACzN,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,kBAAwD,aAAwD,QAAQ,UAAU,QAAQ,IAAiE;CACpN,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,mBAAyD,aAA0D,SAAS,UAAU,QAAQ,IAAmE;CAC1N,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,qBAA2D,aAA2D,QAAQ,UAAU,QAAQ,KAAwE;CACjO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,kBAAwD,aAAwD,QAAQ,UAAU,QAAQ,IAAiE;CACpN,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,qBAA2D,aAA2D,QAAQ,UAAU,QAAQ,IAAuE;CAChO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,4BAAkE,aAAkE,QAAQ,UAAU,QAAQ,IAAqF;CAC5P,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;;;;;AAkBF,MAAa,4BAAkE,aAAkE,QAAQ,UAAU,QAAQ,IAAqF;CAC5P,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,iCAAuE,aAAuE,QAAQ,UAAU,QAAQ,IAA+F;CAChR,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,cAAoD,aAAqD,SAAS,UAAU,QAAQ,IAAyD;CACtM,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,cAAoD,aAAoD,QAAQ,UAAU,QAAQ,KAA0D;CACrM,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,YAAkD,aAAkD,QAAQ,UAAU,QAAQ,IAAqD;CAC5L,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,eAAqD,aAAqD,QAAQ,UAAU,QAAQ,IAA2D;CACxM,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,sBAA4D,aAA4D,QAAQ,UAAU,QAAQ,IAAyE;CACpO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;AAaF,MAAa,uBAA6D,aAA6D,QAAQ,UAAU,QAAQ,KAA4E;CACzO,GAAG;CACH,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,wBAA8D,aAA8D,QAAQ,UAAU,QAAQ,IAA6E;CAC5O,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,+BAAqE,aAAqE,QAAQ,UAAU,QAAQ,IAA2F;CACxQ,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;;;;;AAiBF,MAAa,oBAA0D,aAA0D,QAAQ,UAAU,QAAQ,KAAsE;CAC7N,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,qBAA2D,aAA2D,QAAQ,UAAU,QAAQ,IAAuE;CAChO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,2BAAiE,aAAkE,SAAS,UAAU,QAAQ,IAAmF;CAC1P,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,yBAA+D,aAA+D,QAAQ,UAAU,QAAQ,IAA+E;CAChP,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,mCAAyE,aAAyE,QAAQ,UAAU,QAAQ,IAAmG;CACxR,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;;;;AAaF,MAAa,oCAA0E,aAA0E,QAAQ,UAAU,QAAQ,KAAsG;CAC7R,GAAG;CACH,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,qCAA2E,aAA2E,QAAQ,UAAU,QAAQ,IAAuG;CAChS,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,4CAAkF,aAAkF,QAAQ,UAAU,QAAQ,IAAqH;CAC5T,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,mBAAyD,aAA0D,SAAS,UAAU,QAAQ,IAAmE;CAC1N,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,oBAA0D,aAA0D,QAAQ,UAAU,QAAQ,KAAsE;CAC7N,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,qBAA2D,aAA2D,QAAQ,UAAU,QAAQ,OAA0E;CACnO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,kBAAwD,aAAwD,QAAQ,UAAU,QAAQ,IAAiE;CACpN,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,kBAAwD,aAAwD,QAAQ,UAAU,QAAQ,IAAiE;CACpN,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,yBAA+D,aAAgE,SAAS,UAAU,QAAQ,IAA+E;CAClP,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,wBAA8D,aAA8D,QAAQ,UAAU,QAAQ,IAA6E;CAC5O,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,qCAA2E,aAA2E,QAAQ,UAAU,QAAQ,KAAwG;CACjS,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,sCAA4E,aAA4E,QAAQ,UAAU,QAAQ,KAA0G;CACrS,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,qCAA2E,aAA2E,QAAQ,UAAU,QAAQ,KAAwG;CACjS,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,wCAA8E,aAA8E,QAAQ,UAAU,QAAQ,IAA6G;CAC5S,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,wBAA8D,aAA8D,QAAQ,UAAU,QAAQ,KAA8E;CAC7O,GAAG;CACH,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;;;AAYF,MAAa,+BAAqE,aAAqE,QAAQ,UAAU,QAAQ,KAA4F;CACzQ,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;;;;AAUF,MAAa,sBAA4D,aAA4D,QAAQ,UAAU,QAAQ,IAAyE;CACpO,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,uBAA6D,aAA8D,SAAS,UAAU,QAAQ,IAA2E;CAC1O,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;;;;;;AAUF,MAAa,yBAA+D,aAAgE,SAAS,UAAU,QAAQ,IAA+E;CAClP,UAAU,CAAC;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CAC9C,KAAK;CACL,GAAG;CACN,CAAC;;;;ACljFF,MAAa,qBAAqB;CAC9B,qBAAqB;CACrB,0BAA0B;CAC1B,sBAAsB;CACtB,iBAAiB;CACjB,qBAAqB;CACrB,6BAA6B;CAC7B,mBAAmB;CACnB,qBAAqB;CACrB,sBAAsB;CACtB,6BAA6B;CAC7B,mBAAmB;CACnB,qBAAqB;CACrB,sBAAsB;CACtB,sBAAsB;CACtB,YAAY;CACZ,kBAAkB;CAClB,mCAAmC;CACnC,uCAAuC;CACvC,uCAAuC;CACvC,+BAA+B;CAC/B,wBAAwB;CACxB,kCAAkC;CAClC,gBAAgB;CAChB,YAAY;CACZ,gBAAgB;CACnB;AA6BD,MAAa,yBAAyB;CAClC,SAAS;CACT,SAAS;CACT,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,WAAW;CACX,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,OAAO;CACP,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,aAAa;CACb,aAAa;CACb,aAAa;CACb,cAAc;CACd,aAAa;CACb,UAAU;CACV,oBAAoB;CACpB,qBAAqB;CACrB,qBAAqB;CACrB,KAAK;CACL,OAAO;CACV;AAID,MAAa,iCAAiC;CAC1C,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,KAAK;CACR;AAgBD,MAAa,WAAW;CACpB,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACR;;;;;;;AAmND,MAAa,8BAA8B;CAAE,MAAM;CAAQ,SAAS;CAAW;AAuH/E,MAAa,kBAAkB;CAC3B,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACR;AAID,MAAa,6BAA6B;CAAE,OAAO;CAAS,OAAO;CAAS;AAI5E,MAAa,kBAAkB;CAC3B,UAAU;CACV,YAAY;CACZ,WAAW;CACX,MAAM;CACN,qBAAqB;CACrB,UAAU;CACV,MAAM;CACN,OAAO;CACP,aAAa;CAChB;;;;;;;AAUD,MAAa,eAAe;CAAE,UAAU;CAAY,UAAU;CAAY;;;;AAmN1E,MAAa,UAAU;CACnB,SAAS;CACT,SAAS;CACT,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,WAAW;CACX,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,OAAO;CACP,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,UAAU;CACV,aAAa;CACb,aAAa;CACb,aAAa;CACb,cAAc;CACd,aAAa;CACb,oBAAoB;CACpB,qBAAqB;CACrB,qBAAqB;CACrB,OAAO;CACV;AAm8BD,MAAa,4BAA4B;CACrC,OAAO;CACP,SAAS;CACT,UAAU;CACV,SAAS;CACT,aAAa;CACb,aAAa;CAChB;;;;;;;AAUD,MAAa,0BAA0B;CACnC,qBAAqB;CACrB,WAAW;CACX,OAAO;CACV;AAUD,MAAa,uCAAuC;CAChD,cAAc;CACd,UAAU;CACV,WAAW;CACX,WAAW;CACX,wBAAwB;CACxB,WAAW;CACX,wBAAwB;CACxB,WAAW;CACd;AAID,MAAa,OAAO,EAAE,MAAM,MAAM;;;;;;;AAUlC,MAAa,mCAAmC;CAAE,SAAS;CAAW,yBAAyB;CAA2B;AAU1H,MAAa,uCAAuC;CAChD,QAAQ;CACR,SAAS;CACT,QAAQ;CACX;;;;AAyND,MAAa,eAAe;CACxB,SAAS;CACT,OAAO;CACP,OAAO;CACV;;;;AAUD,MAAa,oBAAoB;CAC7B,cAAc;CACd,QAAQ;CACR,UAAU;CACV,WAAW;CACX,WAAW;CACX,wBAAwB;CACxB,WAAW;CACX,wBAAwB;CACxB,WAAW;CACd;;;;AAUD,MAAa,0BAA0B;CACnC,OAAO;CACP,OAAO;CACP,OAAO;CACV;AA6PD,MAAa,wBAAwB;CACjC,oBAAoB;CACpB,iBAAiB;CACjB,oBAAoB;CACpB,kBAAkB;CAClB,OAAO;CACP,MAAM;CACN,MAAM;CACT;AAID,MAAa,sBAAsB;CAAE,MAAM;CAAQ,sBAAsB;CAAwB;AA+CjG,MAAa,gBAAgB;CACzB,WAAW;CACX,SAAS;CACT,SAAS;CACT,OAAO;CACP,WAAW;CACX,SAAS;CACT,OAAO;CACP,UAAU;CACV,UAAU;CACV,2BAA2B;CAC3B,oBAAoB;CACpB,WAAW;CACX,WAAW;CACX,UAAU;CACV,WAAW;CACX,0BAA0B;CAC1B,QAAQ;CACR,cAAc;CACd,wBAAwB;CAC3B;;;;;;;;;;AA4YD,MAAa,2BAA2B;CACpC,OAAO;CACP,UAAU;CACV,OAAO;CACP,mBAAmB;CACnB,UAAU;CACb;AAaD,MAAa,uBAAuB;CAChC,iBAAiB;CACjB,YAAY;CACZ,gBAAgB;CAChB,eAAe;CACf,mBAAmB;CACnB,qBAAqB;CACrB,iBAAiB;CACjB,eAAe;CACf,cAAc;CACd,YAAY;CACf;;;;AAkQD,MAAa,oBAAoB;CAAE,SAAS;CAAW,UAAU;CAAY;AAO7E,MAAa,QAAQ,EAAE,MAAM,MAAM;AAmCnC,MAAa,cAAc;CACvB,MAAM;CACN,SAAS;CACT,QAAQ;CACR,MAAM;CACN,gBAAgB;CAChB,OAAO;CACP,UAAU;CACb;;;;;;;;;AAoHD,MAAa,cAAc;CACvB,SAAS;CACT,UAAU;CACV,QAAQ;CACR,UAAU;CACV,SAAS;CACZ;AAwiBD,MAAa,yBAAyB;CAClC,UAAU;CACV,gBAAgB;CAChB,kBAAkB;CACrB;;;;;;;;;AAkJD,MAAa,mBAAmB;CAC5B,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACT;AA+DD,MAAa,gBAAgB;CACzB,2BAA2B;CAC3B,oBAAoB;CACpB,WAAW;CACX,QAAQ;CACR,QAAQ;CACR,WAAW;CACX,SAAS;CACT,UAAU;CACV,UAAU;CACV,SAAS;CACT,mBAAmB;CACtB;AAoCD,MAAa,0BAA0B;CACnC,OAAO;CACP,MAAM;CACN,KAAK;CACL,OAAO;CACP,UAAU;CACV,IAAI;CACJ,IAAI;CACJ,KAAK;CACL,IAAI;CACJ,SAAS;CACZ;AAID,MAAa,0BAA0B;CACnC,iBAAiB;CACjB,UAAU;CACV,UAAU;CACV,UAAU;CACb"}
|