import {z} from 'zod' export type GetApiApiV1DocumentDocumentFieldsArgs = {jq_filters?: {[key: string]: string} | undefined}; export type GetApiApiV1DocumentDocumentFieldsOptions = {baseUrl: string, AuthToken?: string | undefined, fetch?: typeof fetch | undefined}; export const documentFieldListCategory = z.object({id: z.number().int().optional(), name: z.string().max(100), order: z.number().int().gte(-2147483648).lte(2147483647).optional()}); export const documentFieldListFamily = z.object({id: z.number().int().optional(), code: z.string().max(100).nullable().optional(), title: z.string().max(100)}); export const documentFieldList = z.object({uid: z.string().optional(), document_type: z.string(), document_type__title: z.string().optional(), code: z.string().max(50), long_code: z.string().max(150).optional(), title: z.string().max(100), description: z.string().nullable().optional(), type: z.enum(["address", "choice", "company", "date", "date_recurring", "datetime", "duration", "float", "geography", "int", "linked_documents", "money", "multi_choice", "percent", "person", "ratio", "related_info", "string", "string_no_word_wrap", "text"]).optional(), text_unit_type: z.enum(["sentence", "paragraph", "section"]).optional(), value_detection_strategy: z.enum(["disabled", "use_regexps_only", "use_formula_only", "regexp_table", "text_based_ml_only", "fields_based_ml_only", "fields_based_prob_ml_only", "field_based_regexps", "mlflow_model"]).optional(), classifier_init_script: z.string().nullable().optional(), formula: z.string().nullable().optional(), convert_decimals_to_floats_in_formula_args: z.boolean().optional(), value_regexp: z.string().nullable().optional(), depends_on_fields: z.array(z.string()).optional(), value_detection_strategy_name: z.string().optional(), confidence: z.enum(["High", "Medium", "Low"]).nullable().optional(), requires_text_annotations: z.boolean().optional(), read_only: z.boolean().optional(), category: documentFieldListCategory.optional(), family: documentFieldListFamily.optional(), default_value: z.object({}).nullable().optional(), choices: z.array(z.string()).optional(), allow_values_not_specified_in_choices: z.boolean().optional(), metadata: z.object({}).nullable().optional(), training_finished: z.boolean().optional(), dirty: z.boolean().optional(), order: z.number().int().gte(0).lte(32767).optional(), trained_after_documents_number: z.number().int().gte(1).lte(2147483647).optional(), hidden_always: z.boolean().optional(), hide_until_python: z.string().nullable().optional(), hide_until_js: z.string().nullable().optional(), is_value_detection_strategy_disabled: z.boolean().optional(), display_yes_no: z.boolean().optional(), value_aware: z.boolean().optional(), created_by__name: z.string().optional(), modified_by__name: z.string().optional(), created_date: z.string().optional(), modified_date: z.string().optional(), vectorizer_stop_words: z.string().nullable().optional(), unsure_choice_value: z.string().max(256).nullable().optional(), unsure_thresholds_by_value: z.object({}).nullable().optional(), mlflow_model_uri: z.string().max(1024).nullable().optional(), mlflow_detect_on_document_level: z.boolean().optional()}); export const getApiApiV1DocumentDocumentFieldsResponse = z.array(documentFieldList); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Document Field List * * GET /api/v1/document/document-fields/ */ export const getApiApiV1DocumentDocumentFields = async (args: GetApiApiV1DocumentDocumentFieldsArgs, options: GetApiApiV1DocumentDocumentFieldsOptions) => { const {baseUrl, fetch: fetchFn = fetch, AuthToken} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.jq_filters != null) query.append("jq_filters", JSON.stringify(args.jq_filters)) if (AuthToken !== undefined) headers.set("Authorization", AuthToken) const url = `${baseUrl.replace(/\/+$/, '')}/api/v1/document/document-fields/${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(getApiApiV1DocumentDocumentFieldsResponse, await res.json()) };