import {z} from 'zod' export type GetApiApiMasterTablesV1Options = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; export const accountType = z.object({id_account_type: z.string(), name: z.string(), description: z.string(), external_code: z.string(), aml_risk: z.object({}).optional(), form_order: z.number(), translations: z.object({}).optional()}); export const ownerAccountDetail = z.object({status: z.enum(["OPENING", "ACTIVE", "INACTIVE", "CLOSED", "REJECTED", "CANCELED", "BLOCKED"]), id_account: z.string(), name: z.string(), created_at: z.string()}); export const ownerPersonDetail = z.object({tax_id_type: z.enum(["CUIT_AR", "CUIL_AR", "CDI_AR", "CIE_AR", "NIT_CO", "CC_CO", "NIF", "PASS", "RUT_UY"]), status: z.enum(["APPROVED", "PENDING", "REJECTED"]), id_person: z.string(), name: z.string(), tax_id_number: z.string(), external_code: z.string().optional(), created_at: z.string()}); export const accountOwner = z.object({type: z.enum(["OWNER", "JOINT_HOLDER", "BENEFICIARY", "ASSET_MANAGER", "AUTHORIZED", "CARD_HOLDER", "CARD_ISSUER", "GUARANTOR", "TRUST"]), signature_type: z.enum(["INDIVIDUAL", "JOINT"]), account: ownerAccountDetail, person: ownerPersonDetail, detail: z.string().optional(), account_number: z.string().optional(), created_at: z.string().nullable(), id_account: z.string().nullable(), id_account_owner: z.string().nullable(), id_person: z.string().nullable(), name: z.string().nullable()}); export const addressType = z.object({id_address_type: z.string(), name: z.string(), description: z.object({}).optional(), external_code: z.object({}).optional(), aml_risk: z.object({}).optional(), form_order: z.number(), translations: z.object({}).optional()}); export const civilStatus = z.object({id_civil_status: z.string(), name: z.string(), description: z.string(), external_code: z.string(), aml_risk: z.object({}).optional(), form_order: z.number(), translations: z.object({}).optional()}); export const companyType = z.object({id_company_type: z.string(), name: z.string(), description: z.string(), form_order: z.number(), translations: z.object({}).optional()}); export const country = z.object({id_country: z.string(), name: z.string(), description: z.string(), external_code: z.object({}).optional(), aml_risk: z.object({}).optional(), form_order: z.number(), translations: z.object({}).optional()}); export const currency = z.object({id_currency: z.string(), name: z.string(), description: z.object({}).optional(), external_code: z.string(), aml_risk: z.object({}).optional(), iso_code: z.object({}).optional(), form_order: z.number(), translations: z.object({}).optional()}); export const economicActivity = z.object({id_economic_activity: z.string(), name: z.string(), description: z.string(), external_code: z.object({}).optional(), aml_risk: z.object({}).optional(), form_order: z.number(), translations: z.object({}).optional()}); export const financialEntity = z.object({id_financial_entity: z.string(), name: z.string(), description: z.object({}).optional(), external_code: z.object({}).optional(), logo: z.object({}).optional(), url: z.object({}).optional(), swift: z.object({}).optional(), lei: z.object({}).optional(), aml_risk: z.object({}).optional(), form_order: z.number(), translations: z.object({}).optional()}); export const gender = z.object({id_gender: z.string(), name: z.string(), description: z.string(), external_code: z.object({}).optional(), aml_risk: z.object({}).optional(), form_order: z.number(), translations: z.object({}).optional()}); export const idType = z.object({id_id_type: z.string(), name: z.string(), description: z.string(), external_code: z.object({}).optional(), aml_risk: z.object({}).optional(), form_order: z.number(), regex: z.string().optional(), translations: z.object({}).optional()}); export const representationType = z.object({id_representation_type: z.string(), name: z.string(), description: z.object({}).optional(), external_code: z.object({}).optional(), aml_risk: z.object({}).optional(), form_order: z.number(), translations: z.object({}).optional()}); export const state = z.object({id_state: z.string(), id_country: z.string(), name: z.string(), description: z.string(), external_code: z.object({}).optional(), aml_risk: z.object({}).optional(), form_order: z.number(), translations: z.object({}).optional()}); export const taxIdType = z.object({id_tax_id_type: z.string(), name: z.string(), description: z.string(), external_code: z.string(), aml_risk: z.object({}).optional(), form_order: z.number(), translations: z.object({}).optional()}); export const thirdPartyAccountType = z.object({id_third_party_account_type: z.string(), name: z.string(), description: z.object({}).optional(), external_code: z.object({}).optional(), aml_risk: z.object({}).optional(), form_order: z.number(), translations: z.object({}).optional()}); export const legalPeopleExtraDataMT = z.object({id_legal_people_extra_data_mt: z.string(), id_field: z.object({}), id_option: z.object({}), name: z.string(), description: z.object({}).optional(), aml_risk: z.object({}).optional(), external_code: z.object({}).optional(), form_order: z.number(), translations: z.object({}).optional()}); export const humanPeopleExtraDataMT = z.object({id_human_people_extra_data_mt: z.string(), id_field: z.object({}), id_option: z.object({}), name: z.string(), description: z.object({}).optional(), aml_risk: z.object({}).optional(), external_code: z.object({}).optional(), form_order: z.number(), translations: z.object({}).optional()}); export const accountExtraDataMT = z.object({id_account_extra_data_mt: z.string(), id_field: z.object({}), id_option: z.object({}), name: z.string(), description: z.object({}).optional(), aml_risk: z.object({}).optional(), external_code: z.object({}).optional(), form_order: z.number(), translations: z.object({}).optional()}); export const documentTypeMT = z.object({id_document_type: z.string(), name: z.string(), expiration_interval: z.string(), expiration_type: z.string(), description: z.string(), form_order: z.number(), translations: z.object({}).optional()}); export const peopleTypeMT = z.object({id_people_type: z.string(), name: z.string(), description: z.string(), form_order: z.number(), translations: z.object({}).optional()}); export const city = z.object({id_city: z.string(), id_state: z.string(), id_country: z.string(), name: z.string(), description: z.string().optional(), translations: z.object({}).optional()}); export const masterTables = z.object({account_types: z.array(accountType), account_owners: z.array(accountOwner), address_types: z.array(addressType), civil_statuses: z.array(civilStatus), company_types: z.array(companyType), countries: z.array(country), currencies: z.array(currency), economic_activities: z.array(economicActivity), financial_entities: z.array(financialEntity), genders: z.array(gender), id_types: z.array(idType), representation_types: z.array(representationType), states: z.array(state), tax_id_types: z.array(taxIdType), third_party_account_types: z.array(thirdPartyAccountType), legal_people_extra_data_mt: z.array(legalPeopleExtraDataMT), human_people_extra_data_mt: z.array(humanPeopleExtraDataMT), account_extra_data_mt: z.array(accountExtraDataMT), document_types: z.array(documentTypeMT), people_types: z.array(peopleTypeMT), cities: z.array(city)}); export const getApiApiMasterTablesV1Response = z.array(masterTables); 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 }; /** * GET /api/master-tables/v1 */ export const getApiApiMasterTablesV1 = async (options?: GetApiApiMasterTablesV1Options) => { const {baseUrl = "https://api.complif.com", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") const url = `${baseUrl.replace(/\/+$/, '')}/api/master-tables/v1${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(getApiApiMasterTablesV1Response, await res.json()) };