import {z} from 'zod' export type GetApiV3AvailabilitiesArgs = {'fields[availability]'?: string | undefined, include?: string | undefined, 'Accept-Language'?: string | undefined, channel_ids?: string | undefined, include_rentable_type_counts?: boolean | undefined, include_semantic_segment_counts?: boolean | undefined, include_amenity_counts?: boolean | undefined, referrer?: string | undefined, 'filter[start_date]'?: string | undefined, 'filter[overlaps_date]'?: string | undefined, 'filter[includes_date]'?: string | undefined, 'filter[arrangement]'?: string | undefined, 'filter[los]'?: string | undefined, 'filter[wday]'?: number | undefined, 'filter[administration_ids]'?: string | undefined, 'filter[rentable_type_ids]'?: string | undefined, 'filter[-rentable_type_ids]'?: string | undefined, 'filter[category_ids]'?: string | undefined, 'filter[-category_ids]'?: string | undefined, 'filter[region_ids]'?: string | undefined, 'filter[-region_ids]'?: string | undefined, 'filter[rentable_segment_ids]'?: string | undefined, 'filter[-rentable_segment_ids]'?: string | undefined, 'filter[amenity_ids]'?: string | undefined, 'filter[package_id]'?: string | undefined, 'filter[discount_campaign_id]'?: string | undefined, 'filter[promotion_id]'?: string | undefined, 'filter[inventory_object_id]'?: string | undefined, 'filter[promotion_token]'?: string | undefined, 'filter[country_codes]'?: string | undefined, 'filter[-country_codes]'?: string | undefined, 'filter[rentable_types]'?: string | undefined, 'filter[-rentable_types]'?: string | undefined, 'filter[semantic_segments]'?: string | undefined, 'filter[-semantic_segments]'?: string | undefined, 'filter[guest_group][seniors]'?: number | undefined, 'filter[guest_group][adults]'?: number | undefined, 'filter[guest_group][adolescents]'?: number | undefined, 'filter[guest_group][children]'?: number | undefined, 'filter[guest_group][babies]'?: number | undefined, 'filter[guest_group][pets]'?: number | undefined, 'filter[price]'?: string | undefined, 'filter[currency]'?: string | undefined, 'filter[number_of_bedrooms]'?: number | undefined, 'filter[number_of_beds]'?: number | undefined, 'filter[number_of_showers]'?: number | undefined, 'filter[number_of_toilets]'?: number | undefined, 'filter[number_of_bathrooms]'?: number | undefined, 'filter[number_of_parking_spots]'?: number | undefined, 'filter[number_of_child_beds]'?: number | undefined, 'filter[number_of_child_chairs]'?: number | undefined, sorters?: string | undefined, 'sorter[los][desc]'?: boolean | undefined, 'sorter[los_distance][desc]'?: boolean | undefined, 'sorter[los_distance][los]'?: number | undefined, 'sorter[start_date][desc]'?: boolean | undefined, 'sorter[start_date_distance][desc]'?: boolean | undefined, 'sorter[start_date_distance][start_date]'?: string | undefined, 'sorter[arrangement_distance][desc]'?: boolean | undefined, 'sorter[arrangement_distance][arrangement]'?: string | undefined, 'sorter[max_guests][desc]'?: boolean | undefined, 'sorter[highlighted][desc]'?: boolean | undefined, 'sorter[all_in_amount][desc]'?: boolean | undefined, 'sorter[amenity_ids_match_score][desc]'?: boolean | undefined, 'sorter[amenity_ids_match_score][amenity_ids]'?: string | undefined, 'sorter[avg_score][desc]'?: boolean | undefined, limit?: string | undefined, 'limiter[availabilities][limit]'?: number | undefined, 'limiter[start_dates][limit]'?: number | undefined, 'limiter[start_dates][availabilities]'?: number | undefined, 'limiter[los][limit]'?: number | undefined, 'limiter[los][availabilities]'?: number | undefined, 'limiter[categories][limit]'?: number | undefined, 'limiter[categories][offset]'?: number | undefined, 'limiter[categories][availabilities]'?: number | undefined, 'limiter[rentable_types][limit]'?: number | undefined, 'limiter[rentable_types][offset]'?: number | undefined, 'limiter[rentable_types][availabilities]'?: number | undefined, 'limiter[administrations][limit]'?: number | undefined, 'limiter[administrations][categories]'?: number | undefined, 'limiter[administrations][rentable_types]'?: number | undefined, 'limiter[administrations][availabilities]'?: number | undefined}; export type GetApiV3AvailabilitiesOptions = {baseUrl?: string | undefined, ApiKeyAuth?: string | undefined, fetch?: typeof fetch | undefined}; export const availability = z.object({id: z.string().optional(), type: z.string().optional(), attributes: z.object({start_date: z.string().optional(), los: z.number().int().optional(), checkin_time: z.string().optional(), checkout_time: z.string().optional(), price: z.object({currency: z.string().optional(), value: z.string().optional()}).optional(), original_price: z.object({currency: z.string().optional(), value: z.string().optional()}).optional(), rent_price: z.object({currency: z.string().optional(), value: z.string().optional()}).optional(), original_rent_price: z.object({currency: z.string().optional(), value: z.string().optional()}).optional(), fully_occupied_price: z.object({currency: z.string().optional(), value: z.string().optional()}).optional(), stock: z.number().int().optional(), available_for_pets: z.boolean().optional()}).optional(), relationships: z.object({administration: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), category: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), rentable_type: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), discount_campaign: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), promotion: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), discount_action: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), missing_amenities: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional(), available_rentables: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional()}).optional(), meta: z.object({temp_id: z.string().optional()}).optional()}); export const administration = z.object({id: z.string().optional(), type: z.string().optional(), attributes: z.object({name: z.string().optional(), email: z.string().optional(), phone: z.string().optional(), website: z.string().optional(), native_currency: z.string().optional(), address: z.string().optional(), country_code: z.string().optional(), postal_code: z.string().optional(), city: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), description: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), surroundings_description: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), tin: z.string().optional(), vat_nr: z.string().optional(), available_locales: z.array(z.string()).optional(), native_locale: z.string().optional(), timezone: z.string().optional(), invoice_email: z.string().optional(), invoice_phone: z.string().optional(), invoice_address: z.string().optional(), invoice_postalcode: z.string().optional(), invoice_city: z.string().optional(), invoice_country_code: z.string().optional(), billing_vat_percentage: z.number().int().optional(), available_currencies: z.array(z.string()).optional(), map_available: z.boolean().optional(), guest_list_group: z.enum(["main_guest", "all", "adults", "none"]).optional(), guest_accepted_document_type: z.array(z.enum(["passport", "license", "identity_card"])).optional(), guest_identification_required: z.enum(["none", "main_guest", "all", "adults"]).optional(), ask_for_guest_gender: z.boolean().optional(), ask_for_guest_address: z.boolean().optional(), ask_for_guest_postal_code: z.boolean().optional(), ask_for_guest_city: z.boolean().optional(), ask_for_guest_country: z.boolean().optional(), ask_for_guest_email: z.boolean().optional(), ask_for_guest_phone: z.boolean().optional(), ask_for_guest_profession: z.boolean().optional(), ask_for_guest_signature: z.boolean().optional(), ask_for_fellow_guest_gender: z.boolean().optional(), ask_for_fellow_guest_address: z.boolean().optional(), ask_for_fellow_guest_postal_code: z.boolean().optional(), ask_for_fellow_guest_city: z.boolean().optional(), ask_for_fellow_guest_country: z.boolean().optional(), ask_for_fellow_guest_email: z.boolean().optional(), ask_for_fellow_guest_phone: z.boolean().optional(), ask_for_fellow_guest_profession: z.boolean().optional(), ask_for_fellow_guest_signature: z.boolean().optional(), default_option_validity: z.number().int().optional(), max_options_per_customer: z.number().int().optional(), max_options_per_booker: z.number().int().optional(), latitude: z.number().optional(), longitude: z.number().optional(), allow_multi_reservation_bookings_through_api: z.boolean().optional(), accounting_closed_upto: z.string().optional(), enable_license_plates: z.boolean().optional(), iban: z.string().optional(), bic: z.string().optional(), peppol_identifiers: z.array(z.object({scheme: z.string().optional(), value: z.string().optional()})).optional(), created_at: z.string().optional(), updated_at: z.string().optional()}).optional(), links: z.object({self: z.string().optional(), url: z.string().optional()}).optional(), relationships: z.object({city: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), checkin_timetable: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), checkout_timetable: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), interactive_map: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), payment_handlers: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional()}).optional(), meta: z.object({temp_id: z.string().optional()}).optional()}); export const category = z.object({id: z.string().optional(), type: z.string().optional(), attributes: z.object({name: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), description: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), short_description: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), additional_house_rules: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), invoice_details: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), usps: z.object({cs: z.array(z.string()).optional(), "da-DK": z.array(z.string()).optional(), de: z.array(z.string()).optional(), "de-AT": z.array(z.string()).optional(), "de-CH": z.array(z.string()).optional(), "en-US": z.array(z.string()).optional(), "en-GB": z.array(z.string()).optional(), es: z.array(z.string()).optional(), fr: z.array(z.string()).optional(), "fr-BE": z.array(z.string()).optional(), "fr-LU": z.array(z.string()).optional(), it: z.array(z.string()).optional(), nb: z.array(z.string()).optional(), nl: z.array(z.string()).optional(), "nl-BE": z.array(z.string()).optional(), pl: z.array(z.string()).optional(), pt: z.array(z.string()).optional(), tr: z.array(z.string()).optional(), en: z.array(z.string()).optional(), da: z.array(z.string()).optional()}).optional(), highlighted: z.boolean().optional(), highlight_priority: z.number().int().optional(), reference: z.string().optional(), original_identifier: z.string().optional(), registration_number: z.string().optional(), additional_registration_number: z.string().optional(), minimum_number_of_nights: z.number().int().optional(), maximum_number_of_nights: z.number().int().optional(), number_of_bedrooms: z.number().int().optional(), number_of_beds: z.number().int().optional(), number_of_showers: z.number().int().optional(), number_of_toilets: z.number().int().optional(), number_of_bathrooms: z.number().int().optional(), number_of_parking_spots: z.number().int().optional(), number_of_child_beds: z.number().int().optional(), number_of_child_chairs: z.number().int().optional(), surface_area: z.number().int().optional(), summer_video_id: z.string().optional(), winter_video_id: z.string().optional(), whole_year_video_id: z.string().optional(), master_price_list_price_factor: z.number().optional(), master_price_list_fixed_rate: z.number().optional(), same_day_bookings_allowed: z.boolean().optional(), same_day_booking_closing_time: z.string().optional(), address: z.string().optional(), postal_code: z.string().optional(), latitude: z.number().optional(), longitude: z.number().optional(), checkin_times_for_week: z.array(z.string()).optional(), checkout_times_for_week: z.array(z.string()).optional(), energy_label: z.enum(["exempt", "A++++", "A+++", "A++", "A+", "A", "B", "C", "D", "E", "F", "G", "H"]).optional(), energy_labels: z.array(z.enum(["exempt", "A++++", "A+++", "A++", "A+", "A", "B", "C", "D", "E", "F", "G", "H"])).optional(), virtual: z.boolean().optional(), archived: z.boolean().optional(), max_number_of_people: z.number().int().optional(), max_number_of_seniors: z.number().int().optional(), max_number_of_adults: z.number().int().optional(), max_number_of_adolescents: z.number().int().optional(), max_number_of_children: z.number().int().optional(), max_number_of_babies: z.number().int().optional(), max_number_of_pets: z.number().int().optional(), highlighted_amenity_ids: z.array(z.number().int()).optional(), prices_updated_at: z.string().optional(), prices_indexed_at: z.string().optional(), stock_updated_at: z.string().optional(), stock_indexed_at: z.string().optional(), costs_updated_at: z.string().optional(), extras_updated_at: z.string().optional(), bookable_discounts_changed_at: z.string().optional(), agreements_changed_at: z.string().optional(), max_baby_age: z.number().int().optional(), max_child_age: z.number().int().optional(), max_adolescent_age: z.number().int().optional(), min_senior_age: z.number().int().optional(), pets_allowed: z.enum(["all", "some", "none"]).optional(), last_date_with_price: z.string().optional(), city: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), region: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), country_code: z.enum(["AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW", "XK", "AN", "ZZ", "WW"]).optional(), location_is_exact: z.boolean().optional(), has_current_or_future_owner_that_should_check_reservations: z.boolean().optional(), created_at: z.string().optional(), updated_at: z.string().optional(), rentable_type: z.string().optional()}).optional(), links: z.object({parkcms_url: z.string().optional()}).optional(), relationships: z.object({city: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), terms: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), rentable_segment: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), master_price_list: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), guest_group_limits: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional(), administration: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), rent_earned_ledger_account: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), checkin_timetable: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), checkout_timetable: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), images: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional(), rooms: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional(), rentable_type_amenities: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional(), optional_amenities: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional(), attachments: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional(), accommodation_type: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), category_amenities: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional()}).optional(), meta: z.object({temp_id: z.string().optional()}).optional()}); export const rentableType = z.object({id: z.string().optional(), type: z.string().optional(), attributes: z.object({name: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), description: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), short_description: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), additional_house_rules: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), invoice_details: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), usps: z.object({cs: z.array(z.string()).optional(), "da-DK": z.array(z.string()).optional(), de: z.array(z.string()).optional(), "de-AT": z.array(z.string()).optional(), "de-CH": z.array(z.string()).optional(), "en-US": z.array(z.string()).optional(), "en-GB": z.array(z.string()).optional(), es: z.array(z.string()).optional(), fr: z.array(z.string()).optional(), "fr-BE": z.array(z.string()).optional(), "fr-LU": z.array(z.string()).optional(), it: z.array(z.string()).optional(), nb: z.array(z.string()).optional(), nl: z.array(z.string()).optional(), "nl-BE": z.array(z.string()).optional(), pl: z.array(z.string()).optional(), pt: z.array(z.string()).optional(), tr: z.array(z.string()).optional(), en: z.array(z.string()).optional(), da: z.array(z.string()).optional()}).optional(), highlighted: z.boolean().optional(), highlight_priority: z.number().int().optional(), reference: z.string().optional(), original_identifier: z.string().optional(), registration_number: z.string().optional(), additional_registration_number: z.string().optional(), minimum_number_of_nights: z.number().int().optional(), maximum_number_of_nights: z.number().int().optional(), number_of_bedrooms: z.number().int().optional(), number_of_beds: z.number().int().optional(), number_of_showers: z.number().int().optional(), number_of_toilets: z.number().int().optional(), number_of_bathrooms: z.number().int().optional(), number_of_parking_spots: z.number().int().optional(), number_of_child_beds: z.number().int().optional(), number_of_child_chairs: z.number().int().optional(), surface_area: z.number().int().optional(), summer_video_id: z.string().optional(), winter_video_id: z.string().optional(), whole_year_video_id: z.string().optional(), master_price_list_price_factor: z.number().optional(), master_price_list_fixed_rate: z.number().optional(), same_day_bookings_allowed: z.boolean().optional(), same_day_booking_closing_time: z.string().optional(), address: z.string().optional(), postal_code: z.string().optional(), latitude: z.number().optional(), longitude: z.number().optional(), checkin_times_for_week: z.array(z.string()).optional(), checkout_times_for_week: z.array(z.string()).optional(), energy_label: z.enum(["exempt", "A++++", "A+++", "A++", "A+", "A", "B", "C", "D", "E", "F", "G", "H"]).optional(), energy_labels: z.array(z.enum(["exempt", "A++++", "A+++", "A++", "A+", "A", "B", "C", "D", "E", "F", "G", "H"])).optional(), virtual: z.boolean().optional(), archived: z.boolean().optional(), max_number_of_people: z.number().int().optional(), max_number_of_seniors: z.number().int().optional(), max_number_of_adults: z.number().int().optional(), max_number_of_adolescents: z.number().int().optional(), max_number_of_children: z.number().int().optional(), max_number_of_babies: z.number().int().optional(), max_number_of_pets: z.number().int().optional(), highlighted_amenity_ids: z.array(z.number().int()).optional(), prices_updated_at: z.string().optional(), prices_indexed_at: z.string().optional(), stock_updated_at: z.string().optional(), stock_indexed_at: z.string().optional(), costs_updated_at: z.string().optional(), extras_updated_at: z.string().optional(), bookable_discounts_changed_at: z.string().optional(), agreements_changed_at: z.string().optional(), max_baby_age: z.number().int().optional(), max_child_age: z.number().int().optional(), max_adolescent_age: z.number().int().optional(), min_senior_age: z.number().int().optional(), pets_allowed: z.enum(["all", "some", "none"]).optional(), last_date_with_price: z.string().optional(), city: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), region: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), country_code: z.enum(["AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW", "XK", "AN", "ZZ", "WW"]).optional(), location_is_exact: z.boolean().optional(), has_current_or_future_owner_that_should_check_reservations: z.boolean().optional(), created_at: z.string().optional(), updated_at: z.string().optional()}).optional(), links: z.object({parkcms_url: z.string().optional()}).optional(), relationships: z.object({city: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), terms: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), rentable_segment: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), master_price_list: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), guest_group_limits: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional(), administration: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), rent_earned_ledger_account: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), checkin_timetable: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), checkout_timetable: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), images: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional(), rooms: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional(), rentable_type_amenities: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional(), optional_amenities: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional(), attachments: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional()}).optional(), meta: z.object({temp_id: z.string().optional()}).optional()}); export const discountCampaign = z.object({id: z.string().optional(), type: z.string().optional(), attributes: z.object({name: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), description: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), rules: z.object({start_date: z.string().optional(), end_date: z.string().optional(), minimum_number_of_nights: z.number().int().optional(), maximum_number_of_nights: z.number().int().optional(), early_bird_minimum_number_of_days_in_advance: z.number().int().optional(), last_minute_maximum_number_of_days_in_advance: z.number().int().optional()}).optional(), start_date: z.string().optional(), minimum_stay_duration: z.number().int().optional(), suggested_guest_group: z.object({seniors: z.number().int().optional(), adults: z.number().int().optional(), adolescents: z.number().int().optional(), children: z.number().int().optional(), babies: z.number().int().optional(), pets: z.number().int().optional()}).optional(), banner: z.object({original: z.string().optional(), banner: z.string().optional(), large: z.string().optional(), polaroid: z.string().optional(), thumb: z.string().optional()}).optional()}).optional(), meta: z.object({temp_id: z.string().optional()}).optional()}); export const promotion = z.object({id: z.string().optional(), type: z.string().optional(), attributes: z.object({name: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), description: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), rules: z.object({start_date: z.string().optional(), end_date: z.string().optional(), minimum_number_of_nights: z.number().int().optional(), maximum_number_of_nights: z.number().int().optional(), early_bird_minimum_number_of_days_in_advance: z.number().int().optional(), last_minute_maximum_number_of_days_in_advance: z.number().int().optional()}).optional(), start_date: z.string().optional(), minimum_stay_duration: z.number().int().optional(), suggested_guest_group: z.object({seniors: z.number().int().optional(), adults: z.number().int().optional(), adolescents: z.number().int().optional(), children: z.number().int().optional(), babies: z.number().int().optional(), pets: z.number().int().optional()}).optional(), banner: z.object({original: z.string().optional(), banner: z.string().optional(), large: z.string().optional(), polaroid: z.string().optional(), thumb: z.string().optional()}).optional()}).optional(), meta: z.object({temp_id: z.string().optional()}).optional()}); export const discountAction = z.object({id: z.string().optional(), type: z.string().optional(), attributes: z.object({discount_percentage: z.number().optional(), fixed_discount: z.object({currency: z.string().optional(), value: z.string().optional()}).optional(), minimum_number_of_nights: z.number().int().optional(), maximum_number_of_nights: z.number().int().optional(), days_in_advance_mode: z.enum(["none", "early_bird", "last_minute"]).optional(), number_of_days_in_advance: z.number().int().optional(), coupon_codes: z.array(z.string()).optional(), archived: z.boolean().optional(), created_at: z.string().optional(), updated_at: z.string().optional(), name: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), book_period: z.array(z.array(z.string())).optional(), stay_period: z.array(z.array(z.string())).optional()}).optional(), relationships: z.object({administration: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), discount_campaign: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), promotion: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), book_period: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), stay_period: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), guest_group_limits: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional(), rentable_types: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional(), channels: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional()}).optional(), meta: z.object({temp_id: z.string().optional()}).optional()}); export const amenity = z.object({id: z.string().optional(), type: z.string().optional(), attributes: z.object({name: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), description: z.object({cs: z.string().optional(), "da-DK": z.string().optional(), de: z.string().optional(), "de-AT": z.string().optional(), "de-CH": z.string().optional(), "en-US": z.string().optional(), "en-GB": z.string().optional(), es: z.string().optional(), fr: z.string().optional(), "fr-BE": z.string().optional(), "fr-LU": z.string().optional(), it: z.string().optional(), nb: z.string().optional(), nl: z.string().optional(), "nl-BE": z.string().optional(), pl: z.string().optional(), pt: z.string().optional(), tr: z.string().optional(), en: z.string().optional(), da: z.string().optional()}).optional(), icon_url: z.string().optional(), type: z.enum(["Amenity", "Amenities::NumericalAmenity", "Amenities::MultipleChoiceAmenity"]).optional(), position: z.number().int().optional(), semantic_amenity_type: z.enum(["accessible_toilet", "accessible_washbasin", "afternoon_sun", "air_hockey", "airco", "amazon_prime", "animation", "baby_bath", "baby_monitor", "balcony", "bathtub", "bbq", "beach_front", "beach_view", "bed_linen_provided", "bedroom_tv", "bicycle", "bicycle_rental", "bicycle_storage", "bidet", "billiard_table", "bluray_player", "boat", "bocce_ball", "bowling_alley", "box_bed", "boxspring", "breakfast_service", "bunk_bed", "cabinet_locks", "cable_tv", "cai_hookup", "canoe", "car_free", "carbon_monoxide_detector", "cd_player", "ceiling_fan", "central_heating", "central_location", "ceramic_cooktop", "child_friendly", "childproof_electrical_outlets", "close_to_beach", "coffee_brewing_system", "coffee_capsule_system", "coffee_pad_system", "combi_microwave", "combi_oven", "communal_pool", "computer_monitor", "conservatory", "cookware", "corner_site", "cot", "cradle", "crib", "cutlery", "dartboard", "deck", "decorative_fireplace", "desk", "desk_chair", "dining_table", "disco", "dishes", "dishwasher", "disinfected", "disney_plus", "double_bed", "double_washbasin", "downtown", "drinking_glasses", "dryer", "drying_rack", "dvd_player", "ebike_charging_point", "electric_cooktop", "electricity_hookup", "elevator", "enhanced_cleaning", "ev_charging_point", "evening_sun", "extractor_hood", "fenced_pool", "fenced_yard", "final_cleaning", "fire_extinguisher", "fire_pit", "fireplace", "first_aid_kit", "fitness_room", "flatscreen_tv", "floor", "football_pitch", "forest", "forest_front", "forest_view", "free_standing", "free_wifi", "freezer", "gaming_console", "garden", "garden_furniture", "gas_cooktop", "gas_heater", "golf_course_front", "golf_course_view", "golfcourt", "grill", "guest_gap_period_24_hours", "guest_gap_period_48_hours", "guest_gap_period_72_hours", "hair_dryer", "hammock", "hangers", "hbo", "heated_pool", "heater", "high_chair", "high_touch_surfaces_disinfected", "horseriding", "hot_tub", "indoor_playground", "indoor_pool", "induction_cooktop", "insect_screens", "internet", "iron", "ironing_board", "jacuzzi", "kettle", "kingsize_bed", "kitchen", "kitchen_island", "kitchen_utensils", "kitchenette", "lake_front", "lake_view", "linens_high_temp_wash", "lounge_set", "loungers", "marina", "microwave", "minibar", "minigolf", "morning_sun", "motion_detector", "mountain_view", "mountains", "netflix", "ocean_front", "ocean_view", "office", "other", "outdoor_kitchen", "outdoor_playground", "outdoor_pool", "outdoor_shower", "oven", "paid_wifi", "parasol", "parking_area", "party_games", "patio", "paved_surface", "pedal_gokarts", "pellet_stove", "pet_friendly", "petting_zoo", "playground_front", "playground_view", "playpen", "pool_front", "pool_table", "printer", "private_garage", "private_golf", "private_parking", "private_pool", "private_sanitary", "private_tennis", "quay", "queensize_bed", "quiet_location", "radio", "refrigerator", "resort", "restaurant", "river", "rowboat", "rural", "safe", "sanitary_front", "satellite_tv", "sauna", "self_service_check_in", "semi_double_bed", "sewer_hookup", "shadow", "shower", "shower_chair", "single_bed", "single_floor", "smart_tv", "smoke_detector", "smoke_free", "smoking_allowed", "sofa_bed", "sound_system", "stair_gate", "storage_room", "streaming_service", "sunshower", "swing", "table_football_table", "table_tennis_table", "tanning_bed", "telephone", "tenniscourt", "toaster", "toilet", "towels", "toys", "trampoline", "twin_beds", "underfloor_heating", "vacuum_cleaner", "veranda", "videoland", "village", "volleyball_court", "wardrobe", "washbasin", "washer", "water_front", "water_hookup", "water_view", "wellness", "wheelchair_accessible", "wifi", "wood_stove"]).optional(), filterable: z.boolean().optional(), highlightable: z.boolean().optional()}).optional(), relationships: z.object({amenity_group: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), amenity_options: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional()}).optional(), meta: z.object({temp_id: z.string().optional()}).optional()}); export const rentable = z.object({id: z.string().optional(), type: z.string().optional(), attributes: z.object({active_from: z.string().optional(), active_till: z.string().optional(), pets_allowed: z.boolean().optional(), for_rental: z.boolean().optional(), name: z.string().optional(), map_identifier: z.string().optional(), unbooked_date_ranges: z.array(z.array(z.string())).optional(), geo_json: z.record(z.string(), z.unknown()).optional(), created_at: z.string().optional(), updated_at: z.string().optional()}).optional(), relationships: z.object({category: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), rentable_type: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), rentable_identity: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), inventory_object: z.object({data: z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()}).optional()}).optional(), rentable_amenities: z.object({data: z.array(z.object({id: z.string().optional(), type: z.string().optional(), meta: z.object({temp_id: z.string().optional(), method: z.string().optional()}).optional()})).optional()}).optional()}).optional(), meta: z.object({temp_id: z.string().optional()}).optional()}); export const getApiV3AvailabilitiesResponse = z.object({data: z.array(availability).optional(), included: z.array(z.union([administration, category, rentableType, discountCampaign, promotion, discountAction, amenity, rentable])).optional(), meta: z.object({amenity_counts: z.record(z.string(), z.number().int()).optional(), semantic_segment_counts: z.record(z.string(), z.number().int()).optional()}).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 availabilities * * GET /v3/availabilities * * Also accepts auth: OAuth2 */ export const getApiV3Availabilities = async (args: GetApiV3AvailabilitiesArgs, options?: GetApiV3AvailabilitiesOptions) => { const {baseUrl = "https://api.bookingexperts.com", fetch: fetchFn = fetch, ApiKeyAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/vnd.api+json") if (args['fields[availability]'] != null) query.append("fields[availability]", String(args['fields[availability]'])) if (args.include != null) query.append("include", String(args.include)) if (args['Accept-Language'] != null) headers.set("Accept-Language", String(args['Accept-Language'])) if (args.channel_ids != null) query.append("channel_ids", String(args.channel_ids)) if (args.include_rentable_type_counts != null) query.append("include_rentable_type_counts", String(args.include_rentable_type_counts)) if (args.include_semantic_segment_counts != null) query.append("include_semantic_segment_counts", String(args.include_semantic_segment_counts)) if (args.include_amenity_counts != null) query.append("include_amenity_counts", String(args.include_amenity_counts)) if (args.referrer != null) query.append("referrer", String(args.referrer)) if (args['filter[start_date]'] != null) query.append("filter[start_date]", String(args['filter[start_date]'])) if (args['filter[overlaps_date]'] != null) query.append("filter[overlaps_date]", String(args['filter[overlaps_date]'])) if (args['filter[includes_date]'] != null) query.append("filter[includes_date]", String(args['filter[includes_date]'])) if (args['filter[arrangement]'] != null) query.append("filter[arrangement]", String(args['filter[arrangement]'])) if (args['filter[los]'] != null) query.append("filter[los]", String(args['filter[los]'])) if (args['filter[wday]'] != null) query.append("filter[wday]", String(args['filter[wday]'])) if (args['filter[administration_ids]'] != null) query.append("filter[administration_ids]", String(args['filter[administration_ids]'])) if (args['filter[rentable_type_ids]'] != null) query.append("filter[rentable_type_ids]", String(args['filter[rentable_type_ids]'])) if (args['filter[-rentable_type_ids]'] != null) query.append("filter[-rentable_type_ids]", String(args['filter[-rentable_type_ids]'])) if (args['filter[category_ids]'] != null) query.append("filter[category_ids]", String(args['filter[category_ids]'])) if (args['filter[-category_ids]'] != null) query.append("filter[-category_ids]", String(args['filter[-category_ids]'])) if (args['filter[region_ids]'] != null) query.append("filter[region_ids]", String(args['filter[region_ids]'])) if (args['filter[-region_ids]'] != null) query.append("filter[-region_ids]", String(args['filter[-region_ids]'])) if (args['filter[rentable_segment_ids]'] != null) query.append("filter[rentable_segment_ids]", String(args['filter[rentable_segment_ids]'])) if (args['filter[-rentable_segment_ids]'] != null) query.append("filter[-rentable_segment_ids]", String(args['filter[-rentable_segment_ids]'])) if (args['filter[amenity_ids]'] != null) query.append("filter[amenity_ids]", String(args['filter[amenity_ids]'])) if (args['filter[package_id]'] != null) query.append("filter[package_id]", String(args['filter[package_id]'])) if (args['filter[discount_campaign_id]'] != null) query.append("filter[discount_campaign_id]", String(args['filter[discount_campaign_id]'])) if (args['filter[promotion_id]'] != null) query.append("filter[promotion_id]", String(args['filter[promotion_id]'])) if (args['filter[inventory_object_id]'] != null) query.append("filter[inventory_object_id]", String(args['filter[inventory_object_id]'])) if (args['filter[promotion_token]'] != null) query.append("filter[promotion_token]", String(args['filter[promotion_token]'])) if (args['filter[country_codes]'] != null) query.append("filter[country_codes]", String(args['filter[country_codes]'])) if (args['filter[-country_codes]'] != null) query.append("filter[-country_codes]", String(args['filter[-country_codes]'])) if (args['filter[rentable_types]'] != null) query.append("filter[rentable_types]", String(args['filter[rentable_types]'])) if (args['filter[-rentable_types]'] != null) query.append("filter[-rentable_types]", String(args['filter[-rentable_types]'])) if (args['filter[semantic_segments]'] != null) query.append("filter[semantic_segments]", String(args['filter[semantic_segments]'])) if (args['filter[-semantic_segments]'] != null) query.append("filter[-semantic_segments]", String(args['filter[-semantic_segments]'])) if (args['filter[guest_group][seniors]'] != null) query.append("filter[guest_group][seniors]", String(args['filter[guest_group][seniors]'])) if (args['filter[guest_group][adults]'] != null) query.append("filter[guest_group][adults]", String(args['filter[guest_group][adults]'])) if (args['filter[guest_group][adolescents]'] != null) query.append("filter[guest_group][adolescents]", String(args['filter[guest_group][adolescents]'])) if (args['filter[guest_group][children]'] != null) query.append("filter[guest_group][children]", String(args['filter[guest_group][children]'])) if (args['filter[guest_group][babies]'] != null) query.append("filter[guest_group][babies]", String(args['filter[guest_group][babies]'])) if (args['filter[guest_group][pets]'] != null) query.append("filter[guest_group][pets]", String(args['filter[guest_group][pets]'])) if (args['filter[price]'] != null) query.append("filter[price]", String(args['filter[price]'])) if (args['filter[currency]'] != null) query.append("filter[currency]", String(args['filter[currency]'])) if (args['filter[number_of_bedrooms]'] != null) query.append("filter[number_of_bedrooms]", String(args['filter[number_of_bedrooms]'])) if (args['filter[number_of_beds]'] != null) query.append("filter[number_of_beds]", String(args['filter[number_of_beds]'])) if (args['filter[number_of_showers]'] != null) query.append("filter[number_of_showers]", String(args['filter[number_of_showers]'])) if (args['filter[number_of_toilets]'] != null) query.append("filter[number_of_toilets]", String(args['filter[number_of_toilets]'])) if (args['filter[number_of_bathrooms]'] != null) query.append("filter[number_of_bathrooms]", String(args['filter[number_of_bathrooms]'])) if (args['filter[number_of_parking_spots]'] != null) query.append("filter[number_of_parking_spots]", String(args['filter[number_of_parking_spots]'])) if (args['filter[number_of_child_beds]'] != null) query.append("filter[number_of_child_beds]", String(args['filter[number_of_child_beds]'])) if (args['filter[number_of_child_chairs]'] != null) query.append("filter[number_of_child_chairs]", String(args['filter[number_of_child_chairs]'])) if (args.sorters != null) query.append("sorters", String(args.sorters)) if (args['sorter[los][desc]'] != null) query.append("sorter[los][desc]", String(args['sorter[los][desc]'])) if (args['sorter[los_distance][desc]'] != null) query.append("sorter[los_distance][desc]", String(args['sorter[los_distance][desc]'])) if (args['sorter[los_distance][los]'] != null) query.append("sorter[los_distance][los]", String(args['sorter[los_distance][los]'])) if (args['sorter[start_date][desc]'] != null) query.append("sorter[start_date][desc]", String(args['sorter[start_date][desc]'])) if (args['sorter[start_date_distance][desc]'] != null) query.append("sorter[start_date_distance][desc]", String(args['sorter[start_date_distance][desc]'])) if (args['sorter[start_date_distance][start_date]'] != null) query.append("sorter[start_date_distance][start_date]", String(args['sorter[start_date_distance][start_date]'])) if (args['sorter[arrangement_distance][desc]'] != null) query.append("sorter[arrangement_distance][desc]", String(args['sorter[arrangement_distance][desc]'])) if (args['sorter[arrangement_distance][arrangement]'] != null) query.append("sorter[arrangement_distance][arrangement]", String(args['sorter[arrangement_distance][arrangement]'])) if (args['sorter[max_guests][desc]'] != null) query.append("sorter[max_guests][desc]", String(args['sorter[max_guests][desc]'])) if (args['sorter[highlighted][desc]'] != null) query.append("sorter[highlighted][desc]", String(args['sorter[highlighted][desc]'])) if (args['sorter[all_in_amount][desc]'] != null) query.append("sorter[all_in_amount][desc]", String(args['sorter[all_in_amount][desc]'])) if (args['sorter[amenity_ids_match_score][desc]'] != null) query.append("sorter[amenity_ids_match_score][desc]", String(args['sorter[amenity_ids_match_score][desc]'])) if (args['sorter[amenity_ids_match_score][amenity_ids]'] != null) query.append("sorter[amenity_ids_match_score][amenity_ids]", String(args['sorter[amenity_ids_match_score][amenity_ids]'])) if (args['sorter[avg_score][desc]'] != null) query.append("sorter[avg_score][desc]", String(args['sorter[avg_score][desc]'])) if (args.limit != null) query.append("limit", String(args.limit)) if (args['limiter[availabilities][limit]'] != null) query.append("limiter[availabilities][limit]", String(args['limiter[availabilities][limit]'])) if (args['limiter[start_dates][limit]'] != null) query.append("limiter[start_dates][limit]", String(args['limiter[start_dates][limit]'])) if (args['limiter[start_dates][availabilities]'] != null) query.append("limiter[start_dates][availabilities]", String(args['limiter[start_dates][availabilities]'])) if (args['limiter[los][limit]'] != null) query.append("limiter[los][limit]", String(args['limiter[los][limit]'])) if (args['limiter[los][availabilities]'] != null) query.append("limiter[los][availabilities]", String(args['limiter[los][availabilities]'])) if (args['limiter[categories][limit]'] != null) query.append("limiter[categories][limit]", String(args['limiter[categories][limit]'])) if (args['limiter[categories][offset]'] != null) query.append("limiter[categories][offset]", String(args['limiter[categories][offset]'])) if (args['limiter[categories][availabilities]'] != null) query.append("limiter[categories][availabilities]", String(args['limiter[categories][availabilities]'])) if (args['limiter[rentable_types][limit]'] != null) query.append("limiter[rentable_types][limit]", String(args['limiter[rentable_types][limit]'])) if (args['limiter[rentable_types][offset]'] != null) query.append("limiter[rentable_types][offset]", String(args['limiter[rentable_types][offset]'])) if (args['limiter[rentable_types][availabilities]'] != null) query.append("limiter[rentable_types][availabilities]", String(args['limiter[rentable_types][availabilities]'])) if (args['limiter[administrations][limit]'] != null) query.append("limiter[administrations][limit]", String(args['limiter[administrations][limit]'])) if (args['limiter[administrations][categories]'] != null) query.append("limiter[administrations][categories]", String(args['limiter[administrations][categories]'])) if (args['limiter[administrations][rentable_types]'] != null) query.append("limiter[administrations][rentable_types]", String(args['limiter[administrations][rentable_types]'])) if (args['limiter[administrations][availabilities]'] != null) query.append("limiter[administrations][availabilities]", String(args['limiter[administrations][availabilities]'])) if (ApiKeyAuth !== undefined) headers.set("X-API-KEY", ApiKeyAuth) const url = `${baseUrl.replace(/\/+$/, '')}/v3/availabilities${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(getApiV3AvailabilitiesResponse, await res.json()) };