export type BookStages = 1 | 2 | 3 | 4 | 5 | 6 | 7; export type AccommodationUnitSelection = {uid: string, rid: string, qty: number}; export type TravellerTypes = 1 | 2 | 3; export type TravellerTitles = 0 | 1 | 2 | 3 | 4 | 5 | 6; export type GenderTypes = 0 | 1 | 2; export type FOID = 1 | 2 | 3; export type PhoneTypes = 1 | 2 | 3 | 4; export type PhoneNumber = {type?: PhoneTypes | undefined, countryPrefix?: (string | null) | undefined, number?: (string | null) | undefined}; export type TravellerData = {type: TravellerTypes, title: TravellerTitles, firstname: string, middleNames?: (string | null) | undefined, surname: string, dateOfBirth?: string | undefined, age?: (number | null) | undefined, gender?: GenderTypes | undefined, nationality?: (string | null) | undefined, foidType?: FOID | undefined, foidNumber?: (string | null) | undefined, foidStartDate?: (string | null) | undefined, foidExpiryDate?: (string | null) | undefined, foidIssuingCountry?: (string | null) | undefined, emailAddress?: (string | null) | undefined, telephone?: PhoneNumber | undefined, extras?: (Array | null) | undefined, roomAllocIdx?: (number | null) | undefined}; export type ExtraSelectionItem = {eid: string, gid?: (string | null) | undefined, tid?: (number | null) | undefined, qty: number, participants?: (Array | null) | undefined}; export type FlightRouteSelectionItem = {rid: string, extras?: (Array | null) | undefined}; export type QuestionAnswer = {qid?: number | undefined, answer?: (string | null) | undefined}; export type TransferSelectionItem = {rid: string, extras?: (Array | null) | undefined, questionAnswers?: (Array | null) | undefined, travellers?: (Array | null) | undefined}; export type CarRentalSelectionItem = {rid: string, pid?: (string | null) | undefined, extras?: (Array | null) | undefined, questionAnswers?: (Array | null) | undefined, driver?: TravellerData | undefined, additionalDriver?: TravellerData | undefined}; export type TicketOptionSelection = {oid: string, qty: number, dateOption?: (string | null) | undefined, subOptions?: (Array | null) | undefined, extras?: (Array | null) | undefined}; export type TicketSelectionItem = {rid: string, pickupPointID?: (number | null) | undefined, options?: (Array | null) | undefined, questionAnswers?: (Array | null) | undefined, travellers?: (Array | null) | undefined}; export type AirportExtrasSelectionItem = {rid: string, pid?: (string | null) | undefined, questionAnswers?: (Array | null) | undefined, travellers?: (Array | null) | undefined}; export type AddCriteria = {bookStage?: BookStages | undefined, searchRef: string, rid: string, riD2?: (string | null) | undefined, units?: (Array | null) | undefined, routes?: (Array | null) | undefined, transfer?: TransferSelectionItem | undefined, carRental?: CarRentalSelectionItem | undefined, ticketAttraction?: TicketSelectionItem | undefined, airportExtras?: (Array | null) | undefined, extras?: (Array | null) | undefined, agentMarkup?: (number | null) | undefined}; export type CreateApiAccountHotlistIdKeyArgs = {id: number, key: string, body: AddCriteria}; export type CreateApiAccountHotlistIdKeyOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; /** * Add item to hotlist * * POST /account/hotlist/{id}/{key} */ export const createApiAccountHotlistIdKey = async (args: CreateApiAccountHotlistIdKeyArgs, options?: CreateApiAccountHotlistIdKeyOptions) => { const {baseUrl = "https://api.travelify.io", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") const url = `${baseUrl.replace(/\/+$/, '')}/account/hotlist/${encodeURIComponent(String(args.id))}/${encodeURIComponent(String(args.key))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return undefined };