import {z} from 'zod' export type GetApiBusinessSchedulesAppointmentRequestsIdArgs = {Authorization: string, SiteId: number, id: number}; export type GetApiBusinessSchedulesAppointmentRequestsIdOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; export const mindbodyRestApiDtoModelsSiteSchedulesAppointmentRequest = z.object({Id: z.number().int().optional(), StartDateTime: z.string().optional(), EndDateTime: z.string().optional(), Status: z.enum(["Booked", "Completed", "Confirmed", "Arrived", "NoShow", "Cancelled"]).optional(), ProgramId: z.number().int().optional(), SessionTypeId: z.number().int().optional(), PrepTime: z.number().int().optional(), FinishTime: z.number().int().optional(), StaffId: z.number().int().optional(), ClientId: z.number().int().optional(), LocationId: z.number().int().optional(), ClientName: z.string().optional(), ClientFormattedNameForSchedule: z.string().optional(), ClientHomePhone: z.string().optional(), ClientMobilePhone: z.string().optional(), ClientWorkPhone: z.string().optional(), ClientEmail: z.string().optional(), StaffProviderId: z.number().int().optional(), MemberIcon: z.number().int().optional(), MemberDetails: z.string().optional(), RequestedStaffId: z.number().int().optional(), SystemClient: z.boolean().optional(), Arrived: z.boolean().optional(), Confirmed: z.boolean().optional(), Completed: z.boolean().optional(), BookedOnline: z.boolean().optional(), FinderAppointment: z.boolean().optional(), PaymentApplied: z.boolean().optional(), Capacity: z.number().int().optional(), Notes: z.string().optional(), ReservedFor: z.string().optional(), ReservedByClientId: z.number().int().optional(), ReservedByClientName: z.string().optional(), Recurring: z.boolean().optional(), GenderPreference: z.enum(["None", "Male", "Female"]).optional(), ResourceIds: z.array(z.number().int()).optional(), BookedById: z.number().int().optional(), BookedDateTime: z.string().optional(), ModifiedById: z.number().int().optional(), ModifiedDateTime: z.string().optional(), ConfirmedById: z.number().int().optional(), ConfirmedDateTime: z.string().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 }; /** * Returns the Appointment Request identified by the ID. * * GET /Business/Schedules/AppointmentRequests/{id} */ export const getApiBusinessSchedulesAppointmentRequestsId = async (args: GetApiBusinessSchedulesAppointmentRequestsIdArgs, options?: GetApiBusinessSchedulesAppointmentRequestsIdOptions) => { const {baseUrl = "https://api.mindbodyonline.com", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.Authorization != null) headers.set("Authorization", String(args.Authorization)) if (args.SiteId != null) headers.set("SiteId", String(args.SiteId)) const url = `${baseUrl.replace(/\/+$/, '')}/Business/Schedules/AppointmentRequests/${encodeURIComponent(String(args.id))}${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(mindbodyRestApiDtoModelsSiteSchedulesAppointmentRequest, await res.json()) };