import {z} from 'zod' export type GetApiTravelentriesUuidArgs = {uuid: string}; export type GetApiTravelentriesUuidOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; export const deaContentEntry = z.object({caption: z.string().max(512).optional(), value: z.string().max(512).optional()}); export const diseaseVariant = z.object({allProperties: z.object({}).optional(), caption: z.string().optional(), hasDetails: z.boolean().optional(), properties: z.record(z.string(), z.object({})).optional(), value: z.string().optional()}); export const personReferenceDto = z.object({caption: z.string().optional(), firstName: z.string().optional(), lastName: z.string().optional(), uuid: z.string()}); export const pointOfEntryReferenceDto = z.object({caption: z.string().optional(), externalId: z.string().optional(), otherPointOfEntry: z.boolean().optional(), pointOfEntryType: z.enum(["AIRPORT", "SEAPORT", "GROUND_CROSSING", "OTHER"]).optional(), uuid: z.string()}); export const districtReferenceDto = z.object({caption: z.string().optional(), externalId: z.string().optional(), uuid: z.string()}); export const regionReferenceDto = z.object({caption: z.string().optional(), externalId: z.string().optional(), uuid: z.string()}); export const userReferenceDto = z.object({caption: z.string().optional(), firstName: z.string().optional(), lastName: z.string().optional(), uuid: z.string()}); export const communityReferenceDto = z.object({caption: z.string().optional(), externalId: z.string().optional(), uuid: z.string()}); export const caseReferenceDto = z.object({caption: z.string().optional(), firstName: z.string().optional(), lastName: z.string().optional(), uuid: z.string()}); export const travelEntryDto = z.object({archived: z.boolean().optional(), changeDate: z.string().optional(), creationDate: z.string().optional(), dateOfArrival: z.string().optional(), deaContent: z.array(deaContentEntry).optional(), deleted: z.boolean().optional(), deletionReason: z.enum(["GDPR", "DELETION_REQUEST", "CREATED_WITH_NO_LEGAL_REASON", "TRANSFERRED_RESPONSIBILITY", "DUPLICATE_ENTRIES", "OTHER_REASON"]).optional(), disease: z.enum(["AFP", "CHOLERA", "CONGENITAL_RUBELLA", "CSM", "DENGUE", "EVD", "GUINEA_WORM", "LASSA", "MEASLES", "MONKEYPOX", "NEW_INFLUENZA", "PLAGUE", "POLIO", "UNSPECIFIED_VHF", "WEST_NILE_FEVER", "YELLOW_FEVER", "RABIES", "ANTHRAX", "CORONAVIRUS", "PNEUMONIA", "MALARIA", "TYPHOID_FEVER", "ACUTE_VIRAL_HEPATITIS", "NON_NEONATAL_TETANUS", "HIV", "SCHISTOSOMIASIS", "SOIL_TRANSMITTED_HELMINTHS", "TRYPANOSOMIASIS", "DIARRHEA_DEHYDRATION", "DIARRHEA_BLOOD", "SNAKE_BITE", "RUBELLA", "TUBERCULOSIS", "LATENT_TUBERCULOSIS", "LEPROSY", "LYMPHATIC_FILARIASIS", "BURULI_ULCER", "PERTUSSIS", "NEONATAL_TETANUS", "ONCHOCERCIASIS", "DIPHTHERIA", "TRACHOMA", "YAWS_ENDEMIC_SYPHILIS", "MATERNAL_DEATHS", "PERINATAL_DEATHS", "INFLUENZA", "INFLUENZA_A", "INFLUENZA_B", "H_METAPNEUMOVIRUS", "RESPIRATORY_SYNCYTIAL_VIRUS", "PARAINFLUENZA_1_4", "ADENOVIRUS", "RHINOVIRUS", "ENTEROVIRUS", "M_PNEUMONIAE", "C_PNEUMONIAE", "ARI", "CHIKUNGUNYA", "POST_IMMUNIZATION_ADVERSE_EVENTS_MILD", "POST_IMMUNIZATION_ADVERSE_EVENTS_SEVERE", "FHA", "INVASIVE_PNEUMOCOCCAL_INFECTION", "INVASIVE_MENINGOCOCCAL_INFECTION", "GIARDIASIS", "CRYPTOSPORIDIOSIS", "SHIGELLOSIS", "SALMONELLOSIS", "SYPHILIS", "YERSINIOSIS", "MUMPS", "GONOCOCCAL_INFECTION", "OTHER", "UNDEFINED"]).optional(), diseaseDetails: z.string().max(512).optional(), diseaseVariant: diseaseVariant.optional(), diseaseVariantDetails: z.string().max(512).optional(), externalId: z.string().max(255).optional(), inJurisdiction: z.boolean().optional(), otherDeletionReason: z.string().max(1000000).optional(), person: personReferenceDto, pointOfEntry: pointOfEntryReferenceDto.optional(), pointOfEntryDetails: z.string().max(1000000).optional(), pointOfEntryDistrict: districtReferenceDto.optional(), pointOfEntryRegion: regionReferenceDto.optional(), pseudonymized: z.boolean().optional(), quarantine: z.enum(["HOME", "INSTITUTIONELL", "HOSPITAL", "HOTEL", "ASYLUM_ACCOMMODATION", "NONE", "UNKNOWN", "OTHER"]).optional(), quarantineExtended: z.boolean().optional(), quarantineFrom: z.string().optional(), quarantineHelpNeeded: z.string().max(1000000).optional(), quarantineHomePossible: z.enum(["YES", "NO", "UNKNOWN"]).optional(), quarantineHomePossibleComment: z.string().max(1000000).optional(), quarantineHomeSupplyEnsured: z.enum(["YES", "NO", "UNKNOWN"]).optional(), quarantineHomeSupplyEnsuredComment: z.string().max(1000000).optional(), quarantineOfficialOrderSent: z.boolean().optional(), quarantineOfficialOrderSentDate: z.string().optional(), quarantineOrderedOfficialDocument: z.boolean().optional(), quarantineOrderedOfficialDocumentDate: z.string().optional(), quarantineOrderedVerbally: z.boolean().optional(), quarantineOrderedVerballyDate: z.string().optional(), quarantineReduced: z.boolean().optional(), quarantineTo: z.string().optional(), quarantineTypeDetails: z.string().max(1000000).optional(), recovered: z.boolean().optional(), reportDate: z.string().optional(), reportingUser: userReferenceDto.optional(), responsibleCommunity: communityReferenceDto.optional(), responsibleDistrict: districtReferenceDto.optional(), responsibleRegion: regionReferenceDto.optional(), resultingCase: caseReferenceDto.optional(), testedNegative: z.boolean().optional(), uuid: z.string().min(20).max(36).optional(), vaccinated: z.boolean().optional()}); 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 /travelentries/{uuid} */ export const getApiTravelentriesUuid = async (args: GetApiTravelentriesUuidArgs, options: GetApiTravelentriesUuidOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json; charset=UTF-8") const url = `${baseUrl.replace(/\/+$/, '')}/travelentries/${encodeURIComponent(String(args.uuid))}${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(travelEntryDto, await res.json()) };