Google 住宿格式通訊協定緩衝區

// This proto relies on set vs. unset primitive-typed fields.
edition = "2023";

package hotels.knowledge_base.external;

option features.field_presence = IMPLICIT;
option java_package = "com.google.travel.hotels.content.knowledge.base.schema.external";
option java_multiple_files = true;

// LodgingList is a wrapper message to store multiple Lodging instances.
message LodgingList {
  repeated Lodging lodgings = 1;
}

// Lodging represents factual information for a single property that provides
// accomodations.
message Lodging {
  // REQUIRED.
  Metadata metadata = 1;

  // REQUIRED. Unique identifier for the property.
  // Either the Place ID (https://developers.google.com/places/place-id)
  // which uniquely identifies a place in the Google Places database and on
  // Google Maps, or, the listing Hotel ID from your hotel list feed.
  string place_id = 6;
  Property property = 12;
  Services services = 13;
  Policies policies = 14;
  FoodAndDrink food_and_drink = 15;
  Pools pools = 16;
  Wellness wellness = 17;
  PublicBath public_bath = 29;
  Activities activities = 18;
  Transportation transportation = 19;
  Families families = 20;
  Connectivity connectivity = 21;
  Business business = 22;
  Accessibility accessibility = 23;
  Pets pets = 24;
  Parking parking = 25;
  Housekeeping housekeeping = 26;
  HealthAndSafety health_and_safety = 27;
  Sustainability sustainability = 28;

  // Living area features that are shared amongst guests,
  // such as shared bathrooms, kitchen areas, grills, etc.
  LivingArea common_living_area = 100;

  // All units on the property have at least these attributes.
  // E.g., a living area size means all units are at least that big.
  GuestUnitType all_units = 101;

  // Some units have as much as these attributes.
  // E.g., a living area size means it is possible to book a unit that big.
  GuestUnitType some_units = 102;

  // Individual GuestUnitTypes that are available in this Lodging.
  repeated GuestUnitType guest_units = 104;
}

/////////////////////////////
// Property level messages //
/////////////////////////////

message Property {
  // Built year.
  oneof built_year_oneof {
    int32 built_year = 2;
    Exception built_year_exception = 3;
  }

  // Last renovated year.
  oneof last_renovated_year_oneof {
    int32 last_renovated_year = 4;
    Exception last_renovated_year_exception = 5;
  }

  // Number of rooms.
  oneof number_of_rooms_oneof {
    int32 number_of_rooms = 6;
    Exception number_of_rooms_exception = 7;
  }

  // Floors.
  oneof floors_oneof {
    int32 floors = 8;
    Exception floors_exception = 9;
  }
}

message Services {
  // Class rating.
  oneof class_rating_oneof {
    // Class rating from 1.0 to 5.0.
    float class_rating = 2;
    Exception class_rating_exception = 3;
  }

  ///////////////////////
  // Reception and lobby.

  // Front desk.
  oneof front_desk_oneof {
    bool front_desk = 4;
    Exception front_desk_exception = 5;
  }

  // Front desk 24hrs.
  oneof front_desk_24hrs_oneof {
    bool front_desk_24hrs = 6;
    Exception front_desk_24hrs_exception = 7;
  }

  // Concierge.
  oneof concierge_oneof {
    bool concierge = 8;
    Exception concierge_exception = 9;
  }

  // Elevator.
  oneof elevator_oneof {
    bool elevator = 43;
    Exception elevator_exception = 44;
  }

  ////////////////
  // Conveniences.

  // Baggage storage.
  oneof baggage_storage_oneof {
    bool baggage_storage = 16;
    Exception baggage_storage_exception = 17;
  }

  // Laundry full service.
  oneof laundry_full_service_oneof {
    bool laundry_full_service = 18;
    Exception laundry_full_service_exception = 19;
  }

  // Laundry self service.
  oneof laundry_self_service_oneof {
    bool laundry_self_service = 20;
    Exception laundry_self_service_exception = 21;
  }

  // Social hour.
  oneof social_hour_oneof {
    bool social_hour = 22;
    Exception social_hour_exception = 23;
  }

  // Wake up calls.
  oneof wake_up_calls_oneof {
    bool wake_up_calls = 24;
    Exception wake_up_calls_exception = 25;
  }

  // Convenience store.
  oneof convenience_store_oneof {
    bool convenience_store = 26;
    Exception convenience_store_exception = 27;
  }

  // Gift shop.
  oneof gift_shop_oneof {
    bool gift_shop = 28;
    Exception gift_shop_exception = 29;
  }

  // Currency exchange.
  oneof currency_exchange_oneof {
    bool currency_exchange = 30;
    Exception currency_exchange_exception = 31;
  }

  LanguagesSpoken languages_spoken = 42;
}

message LanguagesSpoken {
  // Arabic spoken.
  oneof arabic_spoken_oneof {
    bool arabic_spoken = 1;
    Exception arabic_spoken_exception = 2;
  }

  // Cantonese spoken.
  oneof cantonese_spoken_oneof {
    bool cantonese_spoken = 3;
    Exception cantonese_spoken_exception = 4;
  }

  // Dutch spoken.
  oneof dutch_spoken_oneof {
    bool dutch_spoken = 5;
    Exception dutch_spoken_exception = 6;
  }

  // English spoken.
  oneof english_spoken_oneof {
    bool english_spoken = 7;
    Exception english_spoken_exception = 8;
  }

  // Filipino spoken.
  oneof filipino_spoken_oneof {
    bool filipino_spoken = 9;
    Exception filipino_spoken_exception = 10;
  }

  // French spoken.
  oneof french_spoken_oneof {
    bool french_spoken = 11;
    Exception french_spoken_exception = 12;
  }

  // German spoken.
  oneof german_spoken_oneof {
    bool german_spoken = 13;
    Exception german_spoken_exception = 14;
  }

  // Hindi spoken.
  oneof hindi_spoken_oneof {
    bool hindi_spoken = 15;
    Exception hindi_spoken_exception = 16;
  }

  // Indonesian spoken.
  oneof indonesian_spoken_oneof {
    bool indonesian_spoken = 17;
    Exception indonesian_spoken_exception = 18;
  }

  // Italian spoken.
  oneof italian_spoken_oneof {
    bool italian_spoken = 31;
    Exception italian_spoken_exception = 32;
  }

  // Japanese spoken.
  oneof japanese_spoken_oneof {
    bool japanese_spoken = 35;
    Exception japanese_spoken_exception = 36;
  }

  // Korean spoken.
  oneof korean_spoken_oneof {
    bool korean_spoken = 19;
    Exception korean_spoken_exception = 20;
  }

  // Mandarin spoken.
  oneof mandarin_spoken_oneof {
    bool mandarin_spoken = 21;
    Exception mandarin_spoken_exception = 22;
  }

  // Portuguese spoken.
  oneof portuguese_spoken_oneof {
    bool portuguese_spoken = 23;
    Exception portuguese_spoken_exception = 24;
  }

  // Russian spoken.
  oneof russian_spoken_oneof {
    bool russian_spoken = 33;
    Exception russian_spoken_exception = 34;
  }

  // Spanish spoken.
  oneof spanish_spoken_oneof {
    bool spanish_spoken = 25;
    Exception spanish_spoken_exception = 26;
  }

  // Vietnamese spoken.
  oneof vietnamese_spoken_oneof {
    bool vietnamese_spoken = 27;
    Exception vietnamese_spoken_exception = 28;
  }
}

message Housekeeping {
  // Housekeeping available.
  oneof housekeeping_available_oneof {
    bool housekeeping_available = 2;
    Exception housekeeping_available_exception = 3;
  }

  // Housekeeping daily.
  oneof housekeeping_daily_oneof {
    bool housekeeping_daily = 4;
    Exception housekeeping_daily_exception = 5;
  }

  // Turndown service.
  oneof turndown_service_oneof {
    bool turndown_service = 6;
    Exception turndown_service_exception = 7;
  }
}

message Parking {
  // Parking available.
  oneof parking_available_oneof {
    bool parking_available = 2;
    Exception parking_available_exception = 3;
  }

  // Parking for free.
  oneof parking_for_free_oneof {
    bool parking_for_free = 4;
    Exception parking_for_free_exception = 5;
  }

  // Self parking available.
  oneof self_parking_available_oneof {
    bool self_parking_available = 6;
    Exception self_parking_available_exception = 7;
  }

  // Self parking for free.
  oneof self_parking_for_free_oneof {
    bool self_parking_for_free = 8;
    Exception self_parking_for_free_exception = 9;
  }

  // Valet parking available.
  oneof valet_parking_available_oneof {
    bool valet_parking_available = 10;
    Exception valet_parking_available_exception = 11;
  }

  // Valet parking for free.
  oneof valet_parking_for_free_oneof {
    bool valet_parking_for_free = 12;
    Exception valet_parking_for_free_exception = 13;
  }

  // Electric car charging stations.
  oneof electric_car_charging_stations_oneof {
    bool electric_car_charging_stations = 14;
    Exception electric_car_charging_stations_exception = 15;
  }
}

message Policies {
  // Check in time.
  oneof check_in_time_oneof {
    // 24hr clock, e.g. "1500" or "1600", in hotel local time.
    // This is the ISO 8601 dense time format with minute precision.
    // For normalization, extended format (with colons) is not supported.
    string check_in_time = 4;
    Exception check_in_time_exception = 5;
  }

  // Check out time.
  oneof check_out_time_oneof {
    // 24hr clock, e.g. "1130" or "1200", in hotel local time.
    // This is the ISO 8601 dense time format with minute precision.
    // For normalization, extended format (with colons) is not supported.
    string check_out_time = 6;
    Exception check_out_time_exception = 7;
  }

  // Kids stay for free.
  oneof kids_stay_for_free_oneof {
    bool kids_stay_for_free = 24;
    Exception kids_stay_for_free_exception = 25;
  }

  // Max number of kids stay for free.
  oneof max_number_of_kids_stay_for_free_oneof {
    int32 max_number_of_kids_stay_for_free = 26;
    Exception max_number_of_kids_stay_for_free_exception = 27;
  }

  // Max child age.
  oneof max_child_age_oneof {
    int32 max_child_age = 28;
    Exception max_child_age_exception = 29;
  }

  // Smoke free property.
  oneof smoke_free_property_oneof {
    bool smoke_free_property = 30;
    Exception smoke_free_property_exception = 31;
  }

  // All inclusive rates available.
  oneof all_inclusive_available_oneof {
    bool all_inclusive_available = 32;
    Exception all_inclusive_available_exception = 33;
  }

  // All inclusive rates only.
  oneof all_inclusive_only_oneof {
    bool all_inclusive_only = 34;
    Exception all_inclusive_only_exception = 35;
  }

  PaymentOptions payment_options = 36;
}

message PaymentOptions {
  // Pay cash.
  oneof cash_oneof {
    bool cash = 2;
    Exception cash_exception = 3;
  }

  // Pay by cheque.
  oneof cheque_oneof {
    bool cheque = 4;
    Exception cheque_exception = 5;
  }

  // Pay credit card.
  oneof credit_card_oneof {
    bool credit_card = 6;
    Exception credit_card_exception = 7;
  }

  // Pay debit card.
  oneof debit_card_oneof {
    bool debit_card = 8;
    Exception debit_card_exception = 9;
  }

  // Pay mobile nfc.
  oneof mobile_nfc_oneof {
    bool mobile_nfc = 10;
    Exception mobile_nfc_exception = 11;
  }
}

message FoodAndDrink {
  // Room service.
  oneof room_service_oneof {
    bool room_service = 2;
    Exception room_service_exception = 3;
  }

  // Room service 24hrs.
  oneof room_service_24hrs_oneof {
    bool room_service_24hrs = 4;
    Exception room_service_24hrs_exception = 5;
  }

  // Existence of restaurant.
  oneof restaurant_oneof {
    bool restaurant = 24;
    Exception restaurant_exception = 25;
  }

  // Number of restaurants.
  oneof number_of_restaurants_oneof {
    int32 number_of_restaurants = 6;
    Exception number_of_restaurants_exception = 7;
  }

  // Table service.
  oneof table_service_oneof {
    bool table_service = 8;
    Exception table_service_exception = 9;
  }

  // Buffet.
  oneof buffet_oneof {
    bool buffet = 10;
    Exception buffet_exception = 11;
  }

  // Buffet dinner.
  oneof buffet_dinner_oneof {
    bool buffet_dinner = 12;
    Exception buffet_dinner_exception = 13;
  }

  // Buffet breakfast.
  oneof buffet_breakfast_oneof {
    bool buffet_breakfast = 14;
    Exception buffet_breakfast_exception = 15;
  }

  // Breakfast available.
  oneof breakfast_available_oneof {
    bool breakfast_available = 22;
    Exception breakfast_available_exception = 23;
  }

  // Breakfast for free.
  oneof breakfast_for_free_oneof {
    bool breakfast_for_free = 16;
    Exception breakfast_for_free_exception = 17;
  }

  // Bar.
  oneof bar_oneof {
    bool bar = 18;
    Exception bar_exception = 19;
  }

  // Vending machine.
  oneof vending_machine_oneof {
    bool vending_machine = 20;
    Exception vending_machine_exception = 21;
  }
}

message Pools {
  // Existence of pool.
  oneof pool_oneof {
    bool pool = 2;
    Exception pool_exception = 3;
  }

  // Number of pools.
  oneof number_of_pools_oneof {
    // Min count of all pools on property.
    int32 number_of_pools = 4;
    Exception number_of_pools_exception = 5;
  }

  // Existence of indoor pool.
  oneof indoor_pool_oneof {
    // Including hot tubs, adult pools, etc.
    bool indoor_pool = 30;
    Exception indoor_pool_exception = 31;
  }

  // Number of indoor pools.
  oneof number_of_indoor_pools_oneof {
    // Including hot tubs, adult pools, etc.
    int32 number_of_indoor_pools = 6;
    Exception number_of_indoor_pools_exception = 7;
  }

  // Existence of outdoor pool.
  oneof outdoor_pool_oneof {
    // Including hot tubs, lazy rivers, etc.
    bool outdoor_pool = 32;
    Exception outdoor_pool_exception = 33;
  }

  // Number of outdoor pools.
  oneof number_of_outdoor_pools_oneof {
    // Including hot tubs, lazy rivers, etc.
    int32 number_of_outdoor_pools = 8;
    Exception number_of_outdoor_pools_exception = 9;
  }

  // Hot tub.
  oneof hot_tub_oneof {
    bool hot_tub = 12;
    Exception hot_tub_exception = 13;
  }

  // Waterslide.
  oneof waterslide_oneof {
    bool waterslide = 14;
    Exception waterslide_exception = 15;
  }

  // Lazy river.
  oneof lazy_river_oneof {
    bool lazy_river = 16;
    Exception lazy_river_exception = 17;
  }

  // Adult pool.
  oneof adult_pool_oneof {
    bool adult_pool = 18;
    Exception adult_pool_exception = 19;
  }

  // Wading pool.
  oneof wading_pool_oneof {
    bool wading_pool = 20;
    Exception wading_pool_exception = 21;
  }

  // Wave pool.
  oneof wave_pool_oneof {
    bool wave_pool = 22;
    Exception wave_pool_exception = 23;
  }

  // Thermal pool.
  oneof thermal_pool_oneof {
    // Includes hot springs.
    bool thermal_pool = 24;
    Exception thermal_pool_exception = 25;
  }

  // Water park.
  oneof water_park_oneof {
    bool water_park = 26;
    Exception water_park_exception = 27;
  }

  // Lifeguard.
  oneof lifeguard_oneof {
    bool lifeguard = 28;
    Exception lifeguard_exception = 29;
  }
}

message Wellness {
  // Fitness center.
  oneof fitness_center_oneof {
    bool fitness_center = 4;
    Exception fitness_center_exception = 5;
  }

  // Fitness center for free.
  oneof fitness_center_for_free_oneof {
    bool fitness_center_for_free = 24;
    Exception fitness_center_for_free_exception = 25;
  }

  // Elliptical machine.
  oneof elliptical_machine_oneof {
    bool elliptical_machine = 6;
    Exception elliptical_machine_exception = 7;
  }

  // Treadmill.
  oneof treadmill_oneof {
    bool treadmill = 8;
    Exception treadmill_exception = 9;
  }

  // Weight machine.
  oneof weight_machine_oneof {
    bool weight_machine = 10;
    Exception weight_machine_exception = 11;
  }

  // Free weights.
  oneof free_weights_oneof {
    bool free_weights = 12;
    Exception free_weights_exception = 13;
  }

  // Spa.
  oneof spa_oneof {
    bool spa = 14;
    Exception spa_exception = 15;
  }

  // Salon.
  oneof salon_oneof {
    bool salon = 16;
    Exception salon_exception = 17;
  }

  // Sauna.
  oneof sauna_oneof {
    bool sauna = 18;
    Exception sauna_exception = 19;
  }

  // Massage.
  oneof massage_oneof {
    bool massage = 20;
    Exception massage_exception = 21;
  }

  // Aesthetic salon.
  oneof aesthetic_salon_oneof {
    bool aesthetic_salon = 30;
    Exception aesthetic_salon_exception = 31;
  }

  //////////////
  // Healthcare.

  // Doctor on call.
  oneof doctor_on_call_oneof {
    bool doctor_on_call = 22;
    Exception doctor_on_call_exception = 23;
  }
}

message Activities {
  /////////////////////////
  // On-premise facilities.

  // Game room.
  oneof game_room_oneof {
    bool game_room = 2;
    Exception game_room_exception = 3;
  }

  // Nightclub.
  oneof nightclub_oneof {
    bool nightclub = 4;
    Exception nightclub_exception = 5;
  }

  // Casino.
  oneof casino_oneof {
    bool casino = 6;
    Exception casino_exception = 7;
  }

  // Boutique stores.
  oneof boutique_stores_oneof {
    bool boutique_stores = 8;
    Exception boutique_stores_exception = 9;
  }

  ////////////////////////////////////////////////////////////////
  // On-premise or adjacent sports facilities, possibly for a fee.

  // Tennis.
  oneof tennis_oneof {
    bool tennis = 10;
    Exception tennis_exception = 11;
  }

  // Golf.
  oneof golf_oneof {
    bool golf = 12;
    Exception golf_exception = 13;
  }

  // Horseback riding.
  oneof horseback_riding_oneof {
    bool horseback_riding = 14;
    Exception horseback_riding_exception = 15;
  }

  // Snorkeling.
  oneof snorkeling_oneof {
    bool snorkeling = 16;
    Exception snorkeling_exception = 17;
  }

  // Scuba.
  oneof scuba_oneof {
    bool scuba = 18;
    Exception scuba_exception = 19;
  }

  // Water skiing.
  oneof water_skiing_oneof {
    bool water_skiing = 20;
    Exception water_skiing_exception = 21;
  }

  // Bicycles rental.
  oneof bicycles_rental_oneof {
    bool bicycles_rental = 22;
    Exception bicycles_rental_exception = 23;
  }

  // Bicycles rental for free.
  oneof bicycles_rental_for_free_oneof {
    bool bicycles_rental_for_free = 24;
    Exception bicycles_rental_for_free_exception = 25;
  }

  // Watercraft rental.
  oneof watercraft_rental_oneof {
    bool watercraft_rental = 26;
    Exception watercraft_rental_exception = 27;
  }

  // Watercraft rental for free.
  oneof watercraft_rental_for_free_oneof {
    bool watercraft_rental_for_free = 28;
    Exception watercraft_rental_for_free_exception = 29;
  }

  // The property is directly accessible to a beach without users needing to
  // cross a public road.
  oneof beach_access_oneof {
    bool beach_access = 30;
    Exception beach_access_exception = 31;
  }

  // The property has a private beach that's only accessible by guests staying
  // at the property.
  oneof private_beach_oneof {
    bool private_beach = 32;
    Exception private_beach_exception = 33;
  }

  // The property is directly on the beach.
  oneof beach_front_oneof {
    bool beach_front = 34;
    Exception beach_front_exception = 35;
  }

  // Karaoke.
  oneof karaoke_oneof {
    bool karaoke = 36;
    Exception karaoke_exception = 37;
  }

  // Banquet hall.
  oneof banquet_hall_oneof {
    bool banquet_hall = 38;
    Exception banquet_hall_exception = 39;
  }

  // Table tennis.
  oneof table_tennis_oneof {
    bool table_tennis = 40;
    Exception table_tennis_exception = 41;
  }
}

message Transportation {
  // Transfer from/to lodging property.
  oneof transfer_oneof {
    bool transfer = 2;
    Exception transfer_exception = 3;
  }

  // Airport shuttle.
  oneof airport_shuttle_oneof {
    bool airport_shuttle = 4;
    Exception airport_shuttle_exception = 5;
  }

  // Airport shuttle for free.
  oneof airport_shuttle_for_free_oneof {
    bool airport_shuttle_for_free = 6;
    Exception airport_shuttle_for_free_exception = 7;
  }

  // Local shuttle.
  oneof local_shuttle_oneof {
    // Shuttle to local attractions and businesses.
    bool local_shuttle = 8;
    Exception local_shuttle_exception = 9;
  }

  // Car rental on property.
  oneof car_rental_on_property_oneof {
    bool car_rental_on_property = 10;
    Exception car_rental_on_property_exception = 11;
  }

  // Private car service.
  oneof private_car_service_oneof {
    // Private car services refers to taxis or black car as long as the car is
    // not shared.
    bool private_car_service = 12;
    Exception private_car_service_exception = 13;
  }

  // Private car service for free.
  oneof private_car_service_for_free_oneof {
    bool private_car_service_for_free = 14;
    Exception private_car_service_for_free_exception = 15;
  }
}

message Families {
  // Babysitting.
  oneof babysitting_oneof {
    bool babysitting = 4;
    Exception babysitting_exception = 5;
  }

  // Kids activities.
  oneof kids_activities_oneof {
    bool kids_activities = 6;
    Exception kids_activities_exception = 7;
  }

  // Kids club.
  oneof kids_club_oneof {
    bool kids_club = 8;
    Exception kids_club_exception = 9;
  }

  // Kids friendly.
  oneof kids_friendly_oneof {
    bool kids_friendly = 16;
    Exception kids_friendly_exception = 17;
  }
}

message Connectivity {
  // Internet and WiFi options.

  // Wifi available.
  oneof wifi_available_oneof {
    bool wifi_available = 2;
    Exception wifi_available_exception = 3;
  }

  // Wifi for free.
  oneof wifi_for_free_oneof {
    bool wifi_for_free = 22;
    Exception wifi_for_free_exception = 23;
  }

  // Wifi in public areas.
  oneof wifi_in_public_areas_oneof {
    bool wifi_in_public_areas = 6;
    Exception wifi_in_public_areas_exception = 7;
  }

  // Public internet terminal.
  oneof public_internet_terminal_oneof {
    bool public_internet_terminal = 12;
    Exception public_internet_terminal_exception = 13;
  }
}

message Business {
  // Business center.
  oneof business_center_oneof {
    bool business_center = 2;
    Exception business_center_exception = 3;
  }

  // Meeting rooms.
  oneof meeting_rooms_oneof {
    bool meeting_rooms = 6;
    Exception meeting_rooms_exception = 7;
  }

  // Meeting room count.
  oneof number_of_meeting_rooms_oneof {
    int32 number_of_meeting_rooms = 8;
    Exception number_of_meeting_rooms_exception = 9;
  }
}

message Accessibility {
  // Mobility accessible.
  oneof mobility_accessible_oneof {
    bool mobility_accessible = 4;
    Exception mobility_accessible_exception = 5;
  }

  // Mobility accessible parking.
  oneof mobility_accessible_parking_oneof {
    bool mobility_accessible_parking = 2;
    Exception mobility_accessible_parking_exception = 3;
  }

  // Mobility accessible elevator.
  oneof mobility_accessible_elevator_oneof {
    bool mobility_accessible_elevator = 6;
    Exception mobility_accessible_elevator_exception = 7;
  }

  // Mobility accessible pool.
  oneof mobility_accessible_pool_oneof {
    bool mobility_accessible_pool = 8;
    Exception mobility_accessible_pool_exception = 9;
  }

  // Rental wheelchair.
  oneof wheelchair_rental_oneof {
    bool wheelchair_rental = 10;
    Exception wheelchair_rental_exception = 11;
  }
}

message Pets {
  // Pets allowed.
  oneof pets_allowed_oneof {
    bool pets_allowed = 2;
    Exception pets_allowed_exception = 3;
  }

  // Pets allowed for free.
  oneof pets_allowed_for_free_oneof {
    // No standard fees apply for having an allowed pet in the guest unit.
    bool pets_allowed_for_free = 4;
    Exception pets_allowed_for_free_exception = 5;
  }

  // Dogs allowed.
  oneof dogs_allowed_oneof {
    bool dogs_allowed = 6;
    Exception dogs_allowed_exception = 7;
  }

  // Cats allowed.
  oneof cats_allowed_oneof {
    bool cats_allowed = 8;
    Exception cats_allowed_exception = 9;
  }
}

message PublicBath {
  // Onsen.
  oneof onsen_oneof {
    bool onsen = 2;
    Exception onsen_exception = 3;
  }

  // Natural onsen.
  oneof natural_onsen_oneof {
    bool natural_onsen = 4;
    Exception natural_onsen_exception = 5;
  }

  // Artificial onsen.
  oneof artificial_onsen_oneof {
    bool artificial_onsen = 6;
    Exception artificial_onsen_exception = 7;
  }

  // Public bath.
  oneof public_bath_oneof {
    bool public_bath = 8;
    Exception public_bath_exception = 9;
  }

  // Open-air bath.
  oneof open_air_bath_oneof {
    bool open_air_bath = 10;
    Exception open_air_bath_exception = 11;
  }

  // Private Bath.
  oneof private_bath_oneof {
    bool private_bath = 12;
    Exception private_bath_exception = 13;
  }

  // Jacuzzi.
  oneof jacuzzi_oneof {
    bool jacuzzi = 14;
    Exception jacuzzi_exception = 15;
  }

  // Water bath.
  oneof water_bath_oneof {
    bool water_bath = 16;
    Exception water_bath_exception = 17;
  }

  // Bedrock bath.
  oneof bedrock_bath_oneof {
    bool bedrock_bath = 18;
    Exception bedrock_bath_exception = 19;
  }

  // Mixed bathing.
  oneof mixed_bathing_oneof {
    bool mixed_bathing = 20;
    Exception mixed_bathing_exception = 21;
  }
}

///////////////////////////////
// Guest Unit level messages //
///////////////////////////////

message GuestUnitType {
  // REQUIRED. Unit or room code identifiers for a single GuestUnitType. Each
  // code must be unique within a Lodging instance.
  repeated string code = 59;

  // REQUIRED. Short name of the GuestUnitType. Target <50 chars for English
  // version.
  string name = 2;

  // Tier.
  oneof tier_oneof {
    // Standard or deluxe.
    // A non-standard tier is only permitted if at least one other unit
    // type is of a lower tier.
    UnitTier tier = 5;
    Exception tier_exception = 6;
  }

  /////////////
  // Occupancy.

  // Max number of occupants.
  oneof max_number_of_occupants_oneof {
    int32 max_number_of_occupants = 7;
    Exception max_number_of_occupants_exception = 8;
  }

  // Max number of adult occupants.
  oneof max_number_of_adult_occupants_oneof {
    int32 max_number_of_adult_occupants = 9;
    Exception max_number_of_adult_occupants_exception = 10;
  }

  // Max number of child occupants.
  oneof max_number_of_child_occupants_oneof {
    int32 max_number_of_child_occupants = 11;
    Exception max_number_of_child_occupants_exception = 12;
  }

  /////////////////////////
  // Guest unit attributes.
  // Where possible features should be defined in GuestUnitFeatures and
  // assigned at the most precise known granularity, e.g. some/all guest
  // units, vs. a specific guest unit type vs. a living area.

  // Private home.
  oneof private_home_oneof {
    bool private_home = 13;
    Exception private_home_exception = 14;
  }

  // Suite with multiple living areas / bedrooms.
  oneof suite_oneof {
    bool suite = 19;
    Exception suite_exception = 20;
  }

  // Bungalow or villa.
  oneof bungalow_or_villa_oneof {
    bool bungalow_or_villa = 21;
    Exception bungalow_or_villa_exception = 22;
  }

  // Access to executive floor lounge or related benefits.
  oneof executive_floor_oneof {
    bool executive_floor = 23;
    Exception executive_floor_exception = 24;
  }

  // Connecting unit available.
  oneof connecting_unit_available_oneof {
    bool connecting_unit_available = 25;
    Exception connecting_unit_available_exception = 26;
  }

  ViewsFromUnit views = 60;

  ////////////////
  // Living areas.

  // Features that cannot be associated with a particular
  // living area but are available in the guest unit type.
  // Prefer to associate with living areas when possible.
  // In general, summable numbers are summarized by taking
  // the max of (the value stored in this field) and
  // (the sum of the values for the individual living areas).
  LivingArea total_living_areas = 100;
}

enum UnitTier {
  // Standard. The basic tier for this kind of unit.
  DEFAULT_STANDARD = 0;

  // Deluxe or Superior. Only allowed if another unit type is a standard tier.
  DELUXE = 1;
}

//////////////////////////////////////////////
// Views available from the guest unit itself.
message ViewsFromUnit {
  // View of beach.
  oneof view_of_beach_oneof {
    bool view_of_beach = 2;
    Exception view_of_beach_exception = 3;
  }

  // View of city.
  oneof view_of_city_oneof {
    bool view_of_city = 4;
    Exception view_of_city_exception = 5;
  }

  // View of garden.
  oneof view_of_garden_oneof {
    bool view_of_garden = 6;
    Exception view_of_garden_exception = 7;
  }

  // View of lake.
  oneof view_of_lake_oneof {
    bool view_of_lake = 8;
    Exception view_of_lake_exception = 9;
  }

  // View of landmark.
  oneof view_of_landmark_oneof {
    bool view_of_landmark = 10;
    Exception view_of_landmark_exception = 11;
  }

  // View of ocean.
  oneof view_of_ocean_oneof {
    bool view_of_ocean = 12;
    Exception view_of_ocean_exception = 13;
  }

  // View of pool.
  oneof view_of_pool_oneof {
    bool view_of_pool = 14;
    Exception view_of_pool_exception = 15;
  }

  // View of valley.
  oneof view_of_valley_oneof {
    bool view_of_valley = 16;
    Exception view_of_valley_exception = 17;
  }
}

// An individual room, such as kitchen, bathroom, bedroom, within
// a bookable guest unit.
message LivingArea {
  LivingAreaLayout layout = 100;
  LivingAreaFeatures features = 101;
  LivingAreaEating eating = 102;
  LivingAreaSleeping sleeping = 103;
  LivingAreaAccessibility accessibility = 104;
}

message LivingAreaLayout {
  // Living area sq meters.
  oneof living_area_sq_meters_oneof {
    float living_area_sq_meters = 2;
    Exception living_area_sq_meters_exception = 3;
  }

  // Stairs inside the LivingArea.
  oneof stairs_oneof {
    bool stairs = 4;
    Exception stairs_exception = 5;
  }

  // Loft.
  oneof loft_oneof {
    bool loft = 6;
    Exception loft_exception = 7;
  }

  // Non smoking.
  oneof non_smoking_oneof {
    bool non_smoking = 12;
    Exception non_smoking_exception = 13;
  }

  // Patio.
  oneof patio_oneof {
    // Has a patio or deck, ground or rooftop.
    bool patio = 16;
    Exception patio_exception = 17;
  }

  // Balcony.
  oneof balcony_oneof {
    // Has a balcony or lanai.
    bool balcony = 18;
    Exception balcony_exception = 19;
  }
}

message LivingAreaFeatures {
  /////////////////////
  // Bathroom features.

  // Private bathroom.
  oneof private_bathroom_oneof {
    // Not shared with other guests.
    bool private_bathroom = 2;
    Exception private_bathroom_exception = 3;
  }

  // Toilet.
  oneof toilet_oneof {
    bool toilet = 4;
    Exception toilet_exception = 5;
  }

  // Bidet.
  oneof bidet_oneof {
    bool bidet = 6;
    Exception bidet_exception = 7;
  }

  // Shower.
  oneof shower_oneof {
    bool shower = 8;
    Exception shower_exception = 9;
  }

  // Bathtub.
  oneof bathtub_oneof {
    bool bathtub = 12;
    Exception bathtub_exception = 13;
  }

  // Hairdryer.
  oneof hairdryer_oneof {
    bool hairdryer = 14;
    Exception hairdryer_exception = 15;
  }

  ///////////////
  // Convenience.

  // Washer.
  oneof washer_oneof {
    bool washer = 64;
    Exception washer_exception = 65;
  }

  // Dryer.
  oneof dryer_oneof {
    bool dryer = 66;
    Exception dryer_exception = 67;
  }

  // Ironing equipment.
  oneof ironing_equipment_oneof {
    bool ironing_equipment = 28;
    Exception ironing_equipment_exception = 29;
  }

  // Universal power adapters.
  oneof universal_power_adapters_oneof {
    bool universal_power_adapters = 30;
    Exception universal_power_adapters_exception = 31;
  }

  ///////////
  // Comfort.

  // Air conditioning.
  oneof air_conditioning_oneof {
    bool air_conditioning = 32;
    Exception air_conditioning_exception = 33;
  }

  // Heating.
  oneof heating_oneof {
    bool heating = 34;
    Exception heating_exception = 35;
  }

  // Fireplace.
  oneof fireplace_oneof {
    bool fireplace = 36;
    Exception fireplace_exception = 37;
  }

  /////////////////
  // Entertainment.

  // TV available.
  oneof tv_oneof {
    bool tv = 38;
    Exception tv_exception = 39;
  }

  // TV with casting.
  oneof tv_with_casting_oneof {
    // Chromecast, Apple TV, etc.
    bool tv_with_casting = 40;
    Exception tv_with_casting_exception = 41;
  }

  // TV with streaming.
  oneof tv_with_streaming_oneof {
    // Built in Netflix, Hulu, etc.
    bool tv_with_streaming = 42;
    Exception tv_with_streaming_exception = 43;
  }

  // Pay per view movies.
  oneof pay_per_view_movies_oneof {
    bool pay_per_view_movies = 44;
    Exception pay_per_view_movies_exception = 45;
  }

  ////////////
  // Security.

  // In unit safe.
  oneof in_unit_safe_oneof {
    bool in_unit_safe = 48;
    Exception in_unit_safe_exception = 49;
  }

  // Electronic room key.
  oneof electronic_room_key_oneof {
    bool electronic_room_key = 50;
    Exception electronic_room_key_exception = 51;
  }

  ///////////////
  // Connectivity

  // In unit Wifi available.
  oneof in_unit_wifi_available_oneof {
    bool in_unit_wifi_available = 62;
    Exception in_unit_wifi_available_exception = 63;
  }
}

message LivingAreaEating {
  // Kitchen available in unit.
  oneof kitchen_available_oneof {
    bool kitchen_available = 2;
    Exception kitchen_available_exception = 3;
  }

  /////////////////////////
  // Major kitchen features.

  // Refrigerator.
  oneof refrigerator_oneof {
    bool refrigerator = 4;
    Exception refrigerator_exception = 5;
  }

  // Dishwasher.
  oneof dishwasher_oneof {
    bool dishwasher = 6;
    Exception dishwasher_exception = 7;
  }

  // Stove.
  oneof stove_oneof {
    bool stove = 8;
    Exception stove_exception = 9;
  }

  // Oven.
  oneof oven_oneof {
    bool oven = 10;
    Exception oven_exception = 11;
  }

  //////////////////////////
  // Minor kitchen features.

  // Cookware.
  oneof cookware_oneof {
    bool cookware = 12;
    Exception cookware_exception = 13;
  }

  // Sink.
  oneof sink_oneof {
    bool sink = 14;
    Exception sink_exception = 15;
  }

  // Microwave.
  oneof microwave_oneof {
    bool microwave = 16;
    Exception microwave_exception = 17;
  }

  // Toaster.
  oneof toaster_oneof {
    bool toaster = 18;
    Exception toaster_exception = 19;
  }

  // Indoor grill.
  oneof indoor_grill_oneof {
    bool indoor_grill = 22;
    Exception indoor_grill_exception = 23;
  }

  // Outdoor grill.
  oneof outdoor_grill_oneof {
    bool outdoor_grill = 24;
    Exception outdoor_grill_exception = 25;
  }

  //////////////////////////////
  // In-unit food and beverages.

  // Minibar.
  oneof minibar_oneof {
    bool minibar = 34;
    Exception minibar_exception = 35;
  }

  // Snackbar.
  oneof snackbar_oneof {
    bool snackbar = 36;
    Exception snackbar_exception = 37;
  }

  // Coffee maker.
  oneof coffee_maker_oneof {
    bool coffee_maker = 42;
    Exception coffee_maker_exception = 43;
  }

  // Kettle.
  oneof kettle_oneof {
    bool kettle = 48;
    Exception kettle_exception = 49;
  }

  // Tea station.
  oneof tea_station_oneof {
    bool tea_station = 50;
    Exception tea_station_exception = 51;
  }
}

message LivingAreaSleeping {
  ////////////////////
  // Bed types counts.

  // Number of beds.
  oneof number_of_beds_oneof {
    int32 number_of_beds = 2;
    Exception number_of_beds_exception = 3;
  }

  // King beds.
  oneof king_beds_oneof {
    // Including California king and super king.
    int32 king_beds = 4;
    Exception king_beds_exception = 5;
  }

  // Queen beds.
  oneof queen_beds_oneof {
    int32 queen_beds = 6;
    Exception queen_beds_exception = 7;
  }

  // Double beds.
  oneof double_beds_oneof {
    int32 double_beds = 8;
    Exception double_beds_exception = 9;
  }

  // Single or twin beds.
  oneof single_or_twin_beds_oneof {
    int32 single_or_twin_beds = 10;
    Exception single_or_twin_beds_exception = 11;
  }

  // Sofa beds.
  oneof sofa_beds_oneof {
    int32 sofa_beds = 14;
    Exception sofa_beds_exception = 15;
  }

  // Bunk beds.
  oneof bunk_beds_oneof {
    int32 bunk_beds = 16;
    Exception bunk_beds_exception = 17;
  }

  // Other beds.
  oneof other_beds_oneof {
    // Tatami, trundle, etc.
    int32 other_beds = 18;
    Exception other_beds_exception = 19;
  }

  // Roll away beds available.
  // This field is deprecated. Please use field roll_away_bed_count for the
  // number of roll away beds. Otherwise, just use field roll_away_beds for the
  // existence of roll away beds.
  oneof roll_away_beds_available_oneof {
    int32 roll_away_beds_available = 20 [deprecated = true];

    Exception roll_away_beds_available_exception = 21 [deprecated = true];
  }

  // Roll away beds.
  oneof roll_away_beds_oneof {
    bool roll_away_beds = 40;
    Exception roll_away_beds_exception = 41;
  }

  // Roll away bed count.
  oneof roll_away_bed_count_oneof {
    int32 roll_away_bed_count = 42;
    Exception roll_away_bed_count_exception = 43;
  }

  // Cribs available.
  // This field is deprecated. Please use field crib_count for the number of
  // cribs. Otherwise, just use field cribs for the existence of cribs.
  oneof cribs_available_oneof {
    int32 cribs_available = 22 [deprecated = true];

    Exception cribs_available_exception = 23 [deprecated = true];
  }

  // Cribs.
  oneof cribs_oneof {
    bool cribs = 44;
    Exception cribs_exception = 45;
  }

  // Crib count.
  oneof crib_count_oneof {
    int32 crib_count = 46;
    Exception crib_count_exception = 47;
  }

  ////////////
  // Sleeping.

  // Hypoallergenic bedding.
  oneof hypoallergenic_bedding_oneof {
    bool hypoallergenic_bedding = 28;
    Exception hypoallergenic_bedding_exception = 29;
  }

  // Synthetic pillows.
  oneof synthetic_pillows_oneof {
    bool synthetic_pillows = 32;
    Exception synthetic_pillows_exception = 33;
  }

  // Memory foam pillows available.
  oneof memory_foam_pillows_oneof {
    bool memory_foam_pillows = 34;
    Exception memory_foam_pillows_exception = 35;
  }

  // Feather pillows available.
  oneof feather_pillows_oneof {
    bool feather_pillows = 36;
    Exception feather_pillows_exception = 37;
  }
}

message LivingAreaAccessibility {
  // Mobility-accessible unit. Generally what "accessible room" refers to in
  // public lodging offerings.
  oneof mobility_accessible_unit_oneof {
    // True if ada_compliant_unit.
    bool mobility_accessible_unit = 2;
    Exception mobility_accessible_unit_exception = 3;
  }

  // ADA standards compliant unit.
  oneof ada_compliant_unit_oneof {
    bool ada_compliant_unit = 4;
    Exception ada_compliant_unit_exception = 5;
  }

  // Hearing-accessible unit.
  oneof hearing_accessible_unit_oneof {
    bool hearing_accessible_unit = 6;
    Exception hearing_accessible_unit_exception = 7;
  }

  ////////////////////////////////
  // Mobility-accessible features.

  // Mobility-accessible shower.
  oneof mobility_accessible_shower_oneof {
    bool mobility_accessible_shower = 10;
    Exception mobility_accessible_shower_exception = 11;
  }

  // Mobility-accessible bathtub.
  oneof mobility_accessible_bathtub_oneof {
    bool mobility_accessible_bathtub = 12;
    Exception mobility_accessible_bathtub_exception = 13;
  }

  // Mobility-accessible toilet.
  oneof mobility_accessible_toilet_oneof {
    bool mobility_accessible_toilet = 14;
    Exception mobility_accessible_toilet_exception = 15;
  }

  //////////////////////////////////
  // Hearing-accessible features.

  // Hearing-accessible doorbell.
  oneof hearing_accessible_doorbell_oneof {
    bool hearing_accessible_doorbell = 30;
    Exception hearing_accessible_doorbell_exception = 31;
  }

  // Hearing-accessible fire_alarm.
  oneof hearing_accessible_fire_alarm_oneof {
    bool hearing_accessible_fire_alarm = 32;
    Exception hearing_accessible_fire_alarm_exception = 33;
  }
}

message HealthAndSafety {
  // Website URL containing Health & Safety measures provided by the hotel.
  oneof learn_more_uri_oneof {
    string learn_more_uri = 2;
    Exception learn_more_uri_exception = 3;
  }

  EnhancedCleaning enhanced_cleaning = 5;
  IncreasedFoodSafety increased_food_safety = 6;
  MinimizedContact minimized_contact = 7;
  PersonalProtection personal_protection = 8;
  PhysicalDistancing physical_distancing = 9;

  reserved 4;  // multi-language support for "learn more" URL.
}

message EnhancedCleaning {
  // Enhanced cleaning of common areas.
  oneof common_areas_enhanced_cleaning_oneof {
    bool common_areas_enhanced_cleaning = 2;
    Exception common_areas_enhanced_cleaning_exception = 3;
  }

  // Enhanced cleaning of guest rooms.
  oneof guest_rooms_enhanced_cleaning_oneof {
    bool guest_rooms_enhanced_cleaning = 4;
    Exception guest_rooms_enhanced_cleaning_exception = 5;
  }

  // Commercial-grade disinfectant used to clean the property.
  oneof commercial_grade_disinfectant_cleaning_oneof {
    bool commercial_grade_disinfectant_cleaning = 6;
    Exception commercial_grade_disinfectant_cleaning_exception = 7;
  }

  // Employees trained in COVID-19 cleaning procedures.
  oneof employees_trained_cleaning_procedures_oneof {
    bool employees_trained_cleaning_procedures = 8;
    Exception employees_trained_cleaning_procedures_exception = 9;
  }

  // Employees trained in thorough hand-washing.
  oneof employees_trained_hand_washing_protocols_oneof {
    bool employees_trained_hand_washing_protocols = 10;
    Exception employees_trained_hand_washing_protocols_exception = 11;
  }

  // Employees wear masks, face shields, and/or gloves.
  oneof employees_wear_protective_equipment_oneof {
    bool employees_wear_protective_equipment = 12;
    Exception employees_wear_protective_equipment_exception = 13;
  }
}

message IncreasedFoodSafety {
  // Additional safety measures during food prep and serving.
  oneof food_preparation_and_serving_safe_handling_oneof {
    bool food_preparation_and_serving_safe_handling = 2;
    Exception food_preparation_and_serving_safe_handling_exception = 3;
  }

  // Additional sanitation in dining areas.
  oneof food_areas_additional_sanitation_oneof {
    bool food_areas_additional_sanitation = 4;
    Exception food_areas_additional_sanitation_exception = 5;
  }

  // Individually-packaged meals.
  oneof individual_packaged_meals_available_oneof {
    bool individual_packaged_meals_available = 6;
    Exception individual_packaged_meals_available_exception = 7;
  }

  // Disposable flatware.
  oneof disposable_flatware_oneof {
    bool disposable_flatware = 8;
    Exception disposable_flatware_exception = 9;
  }

  // Single-use menus.
  oneof single_use_food_menus_oneof {
    bool single_use_food_menus = 10;
    Exception single_use_food_menus_exception = 11;
  }
}

message MinimizedContact {
  // High-touch items, such as magazines, removed from common areas.
  oneof no_high_touch_items_common_areas_oneof {
    bool no_high_touch_items_common_areas = 2;
    Exception no_high_touch_items_common_areas_exception = 3;
  }

  // High-touch items, such as decorative pillows, removed from guest rooms.
  oneof no_high_touch_items_guest_rooms_oneof {
    bool no_high_touch_items_guest_rooms = 4;
    Exception no_high_touch_items_guest_rooms_exception = 5;
  }

  // Keyless mobile entry to guest rooms.
  oneof digital_guest_room_keys_oneof {
    bool digital_guest_room_keys = 6;
    Exception digital_guest_room_keys_exception = 7;
  }

  // Plastic key cards are disinfected or discarded.
  oneof plastic_keycards_disinfected_oneof {
    bool plastic_keycards_disinfected = 8;
    Exception plastic_keycards_disinfected_exception = 9;
  }

  // Buffer maintained between room bookings.
  oneof room_bookings_buffer_oneof {
    bool room_bookings_buffer = 10;
    Exception room_bookings_buffer_exception = 11;
  }

  // Housekeeping scheduled by request only.
  oneof housekeeping_scheduled_request_only_oneof {
    bool housekeeping_scheduled_request_only = 12;
    Exception housekeeping_scheduled_request_only_exception = 13;
  }

  // No-contact check-in and check-out.
  oneof contactless_checkin_checkout_oneof {
    bool contactless_checkin_checkout = 14;
    Exception contactless_checkin_checkout_exception = 15;
  }
}

message PersonalProtection {
  // Hand-sanitizer and/or sanitizing wipes in common areas.
  oneof common_areas_offer_sanitizing_items_oneof {
    bool common_areas_offer_sanitizing_items = 2;
    Exception common_areas_offer_sanitizing_items_exception = 3;
  }

  // In-room hygiene kits with masks, hand sanitizer, and/or antibacterial
  // wipes.
  oneof guest_room_hygiene_kits_available_oneof {
    bool guest_room_hygiene_kits_available = 4;
    Exception guest_room_hygiene_kits_available_exception = 5;
  }

  // Masks and/or gloves available for guests.
  oneof protective_equipment_available_oneof {
    bool protective_equipment_available = 6;
    Exception protective_equipment_available_exception = 7;
  }

  // Masks required on the property.
  oneof face_mask_required_oneof {
    bool face_mask_required = 8;
    Exception face_mask_required_exception = 9;
  }
}

message PhysicalDistancing {
  // Physical distancing required.
  oneof physical_distancing_required_oneof {
    bool physical_distancing_required = 2;
    Exception physical_distancing_required_exception = 3;
  }

  // Safety dividers at front desk and other locations.
  oneof plexiglass_used_oneof {
    bool plexiglass_used = 4;
    Exception plexiglass_used_exception = 5;
  }

  // Guest occupancy limited within shared facilities.
  oneof shared_areas_limited_occupancy_oneof {
    bool shared_areas_limited_occupancy = 6;
    Exception shared_areas_limited_occupancy_exception = 7;
  }

  // Private spaces designated in spa and wellness areas.
  oneof wellness_areas_have_private_spaces_oneof {
    bool wellness_areas_have_private_spaces = 8;
    Exception wellness_areas_have_private_spaces_exception = 9;
  }

  // Common areas arranged to maintain physical distancing.
  oneof common_areas_physical_distancing_arranged_oneof {
    bool common_areas_physical_distancing_arranged = 10;
    Exception common_areas_physical_distancing_arranged_exception = 11;
  }
}

message Sustainability {
  // Website URL containing sustainability information for the hotel.
  oneof sustainability_uri_oneof {
    string sustainability_uri = 2;
    Exception sustainability_uri_exception = 3;
  }

  EnergyEfficiency energy_efficiency = 5;
  WaterConservation water_conservation = 6;
  WasteReduction waste_reduction = 7;
  SustainableSourcing sustainable_sourcing = 8;
  SustainabilityCertifications sustainability_certifications = 9;

  reserved 4;  // multi-language support for sustainability_uri.
}

message EnergyEfficiency {
  // Energy conservation program.
  oneof energy_conservation_program_oneof {
    bool energy_conservation_program = 4;
    Exception energy_conservation_program_exception = 5;
  }

  // Energy use audited by an independent organization.
  oneof independent_organization_audits_energy_use_oneof {
    bool independent_organization_audits_energy_use = 6;
    Exception independent_organization_audits_energy_use_exception = 7;
  }

  // Energy from carbon-free sources.
  oneof carbon_free_energy_sources_oneof {
    bool carbon_free_energy_sources = 8;
    Exception carbon_free_energy_sources_exception = 9;
  }

  // Energy-efficient heating and cooling systems.
  oneof energy_efficient_heating_and_cooling_systems_oneof {
    bool energy_efficient_heating_and_cooling_systems = 10;
    Exception energy_efficient_heating_and_cooling_systems_exception = 11;
  }

  // Energy-efficient lighting.
  oneof energy_efficient_lighting_oneof {
    bool energy_efficient_lighting = 12;
    Exception energy_efficient_lighting_exception = 13;
  }

  // Energy-saving thermostats.
  oneof energy_saving_thermostats_oneof {
    bool energy_saving_thermostats = 14;
    Exception energy_saving_thermostats_exception = 15;
  }
}

message WaterConservation {
  // Water use audited by an independent organization.
  oneof independent_organization_audits_water_use_oneof {
    bool independent_organization_audits_water_use = 2;
    Exception independent_organization_audits_water_use_exception = 3;
  }

  // Water-efficient faucets.
  oneof water_saving_sinks_oneof {
    bool water_saving_sinks = 4;
    Exception water_saving_sinks_exception = 5;
  }

  // Water-efficient toilets.
  oneof water_saving_toilets_oneof {
    bool water_saving_toilets = 6;
    Exception water_saving_toilets_exception = 7;
  }

  // Water-efficient showers.
  oneof water_saving_showers_oneof {
    bool water_saving_showers = 8;
    Exception water_saving_showers_exception = 9;
  }

  // Towel reuse program.
  oneof towel_reuse_program_oneof {
    bool towel_reuse_program = 10;
    Exception towel_reuse_program_exception = 11;
  }

  // Linen reuse program.
  oneof linen_reuse_program_oneof {
    bool linen_reuse_program = 12;
    Exception linen_reuse_program_exception = 13;
  }
}

message WasteReduction {
  // Recycling program.
  oneof recycling_program_oneof {
    bool recycling_program = 2;
    Exception recycling_program_exception = 3;
  }

  // Food waste reduction program.
  oneof food_waste_reduction_program_oneof {
    bool food_waste_reduction_program = 4;
    Exception food_waste_reduction_program_exception = 5;
  }

  // Donates excess food.
  oneof donates_excess_food_oneof {
    bool donates_excess_food = 6;
    Exception donates_excess_food_exception = 7;
  }

  // Composts excess food.
  oneof composts_excess_food_oneof {
    bool composts_excess_food = 8;
    Exception composts_excess_food_exception = 9;
  }

  // Soap donation program.
  oneof soap_donation_program_oneof {
    bool soap_donation_program = 10;
    Exception soap_donation_program_exception = 11;
  }

  // Toiletry donation program.
  oneof toiletry_donation_program_oneof {
    bool toiletry_donation_program = 12;
    Exception toiletry_donation_program_exception = 13;
  }

  // Safely handles hazardous substances.
  oneof safely_handles_hazardous_substances_oneof {
    bool safely_handles_hazardous_substances = 14;
    Exception safely_handles_hazardous_substances_exception = 15;
  }

  // Safely disposes of electronics.
  oneof safely_disposes_electronics_oneof {
    bool safely_disposes_electronics = 16;
    Exception safely_disposes_electronics_exception = 17;
  }

  // Safely disposes of batteries.
  oneof safely_disposes_batteries_oneof {
    bool safely_disposes_batteries = 18;
    Exception safely_disposes_batteries_exception = 19;
  }

  // Safely disposes of lightbulbs.
  oneof safely_disposes_lightbulbs_oneof {
    bool safely_disposes_lightbulbs = 20;
    Exception safely_disposes_lightbulbs_exception = 21;
  }

  // Refillable toiletry containers.
  oneof refillable_toiletry_containers_oneof {
    bool refillable_toiletry_containers = 22;
    Exception refillable_toiletry_containers_exception = 23;
  }

  // Water bottle filling stations.
  oneof water_bottle_filling_stations_oneof {
    bool water_bottle_filling_stations = 24;
    Exception water_bottle_filling_stations_exception = 25;
  }

  // Compostable food containers and cutlery.
  oneof compostable_food_containers_and_cutlery_oneof {
    bool compostable_food_containers_and_cutlery = 26;
    Exception compostable_food_containers_and_cutlery_exception = 27;
  }

  // No Styrofoam food containers.
  oneof no_styrofoam_food_containers_oneof {
    bool no_styrofoam_food_containers = 28;
    Exception no_styrofoam_food_containers_exception = 29;
  }

  // No single-use plastic water bottles.
  oneof no_single_use_plastic_water_bottles_oneof {
    bool no_single_use_plastic_water_bottles = 30;
    Exception no_single_use_plastic_water_bottles_exception = 31;
  }

  // No single-use plastic straws.
  oneof no_single_use_plastic_straws_oneof {
    bool no_single_use_plastic_straws = 32;
    Exception no_single_use_plastic_straws_exception = 33;
  }
}

message SustainableSourcing {
  // Responsible purchasing policy.
  oneof responsible_purchasing_policy_oneof {
    bool responsible_purchasing_policy = 2;
    Exception responsible_purchasing_policy_exception = 3;
  }

  // Organic food and beverages.
  oneof organic_food_and_beverages_oneof {
    bool organic_food_and_beverages = 4;
    Exception organic_food_and_beverages_exception = 5;
  }

  // Locally sourced food and beverages.
  oneof locally_sourced_food_and_beverages_oneof {
    bool locally_sourced_food_and_beverages = 6;
    Exception locally_sourced_food_and_beverages_exception = 7;
  }

  // Responsibly sourced seafood.
  oneof responsibly_sources_seafood_oneof {
    bool responsibly_sources_seafood = 8;
    Exception responsibly_sources_seafood_exception = 9;
  }

  // Organic cage-free eggs.
  oneof organic_cage_free_eggs_oneof {
    bool organic_cage_free_eggs = 10;
    Exception organic_cage_free_eggs_exception = 11;
  }

  // Vegetarian meals.
  oneof vegetarian_meals_oneof {
    bool vegetarian_meals = 12;
    Exception vegetarian_meals_exception = 13;
  }

  // Vegan meals.
  oneof vegan_meals_oneof {
    bool vegan_meals = 14;
    Exception vegan_meals_exception = 15;
  }

  // Eco-friendly toiletries.
  oneof eco_friendly_toiletries_oneof {
    bool eco_friendly_toiletries = 16;
    Exception eco_friendly_toiletries_exception = 17;
  }
}

message SustainabilityCertifications {
  // Actively Green: Bronze.
  oneof actively_green_bronze_oneof {
    bool actively_green_bronze = 106;
    Exception actively_green_bronze_exception = 107;
  }

  // Actively Green: Silver.
  oneof actively_green_silver_oneof {
    bool actively_green_silver = 108;
    Exception actively_green_silver_exception = 109;
  }

  // Actively Green: Gold.
  oneof actively_green_gold_oneof {
    bool actively_green_gold = 110;
    Exception actively_green_gold_exception = 111;
  }

  // ARC360: Ambassador.
  oneof arc360_ambassador_oneof {
    bool arc360_ambassador = 364;
    Exception arc360_ambassador_exception = 365;
  }

  // Asian Ecotourism Standard for Accommodations (AESA).
  oneof asian_ecotourism_oneof {
    bool asian_ecotourism = 24;
    Exception asian_ecotourism_exception = 25;
  }

  // Austrian Ecolabel.
  oneof austrian_ecolabel_oneof {
    bool austrian_ecolabel = 112;
    Exception austrian_ecolabel_exception = 113;
  }

  // Beyond Green.
  oneof beyond_green_oneof {
    bool beyond_green = 346;
    Exception beyond_green_exception = 347;
  }

  // Bioscore Sustainable: C.
  oneof bioscore_sustainable_c_oneof {
    bool bioscore_sustainable_c = 116;
    Exception bioscore_sustainable_c_exception = 117;
  }

  // Bioscore Sustainable: B.
  oneof bioscore_sustainable_b_oneof {
    bool bioscore_sustainable_b = 118;
    Exception bioscore_sustainable_b_exception = 119;
  }

  // Bioscore Sustainable: A.
  oneof bioscore_sustainable_a_oneof {
    bool bioscore_sustainable_a = 120;
    Exception bioscore_sustainable_a_exception = 121;
  }

  // Bioscore Sustainable: A+.
  oneof bioscore_sustainable_a_plus_oneof {
    bool bioscore_sustainable_a_plus = 122;
    Exception bioscore_sustainable_a_plus_exception = 123;
  }

  // Biosphere Responsible Tourism Standard.
  oneof biosphere_responsible_tourism_oneof {
    bool biosphere_responsible_tourism = 26;
    Exception biosphere_responsible_tourism_exception = 27;
  }

  // Bio Hotels.
  oneof bio_hotels_oneof {
    bool bio_hotels = 342;
    Exception bio_hotels_exception = 343;
  }

  // BREEAM: Pass.
  oneof breeam_pass_oneof {
    bool breeam_pass = 2;
    Exception breeam_pass_exception = 3;
  }

  // BREEAM: Good.
  oneof breeam_good_oneof {
    bool breeam_good = 4;
    Exception breeam_good_exception = 5;
  }

  // BREEAM: Very Good.
  oneof breeam_very_good_oneof {
    bool breeam_very_good = 6;
    Exception breeam_very_good_exception = 7;
  }

  // BREEAM: Excellent.
  oneof breeam_excellent_oneof {
    bool breeam_excellent = 8;
    Exception breeam_excellent_exception = 9;
  }

  // BREEAM: Outstanding.
  oneof breeam_outstanding_oneof {
    bool breeam_outstanding = 10;
    Exception breeam_outstanding_exception = 11;
  }

  // Bureau Veritas.
  // This field is deprecated. The certification is now covered by
  // `gstc_criteria` and `turkiye_sustainable_tourism_program`.
  oneof bureau_veritas_oneof {
    bool bureau_veritas = 28 [deprecated = true];
    Exception bureau_veritas_exception = 29 [deprecated = true];
  }

  // CENIA EFS (Environmentally Friendly Service).
  oneof cenia_efs_oneof {
    bool cenia_efs = 124;
    Exception cenia_efs_exception = 125;
  }

  // Certified Green Hotel: Good.
  oneof certified_green_hotel_good_oneof {
    bool certified_green_hotel_good = 128;
    Exception certified_green_hotel_good_exception = 129;
  }

  // Certified Green Hotel: Very Good.
  oneof certified_green_hotel_very_good_oneof {
    bool certified_green_hotel_very_good = 130;
    Exception certified_green_hotel_very_good_exception = 131;
  }

  // Certified Green Hotel: Excellent.
  oneof certified_green_hotel_excellent_oneof {
    bool certified_green_hotel_excellent = 132;
    Exception certified_green_hotel_excellent_exception = 133;
  }

  // Control Union (GSTC Criteria).
  // This field is deprecated. The certification is now covered by
  // `gstc_criteria` and `turkiye_sustainable_tourism_program`.
  oneof control_union_oneof {
    bool control_union = 30 [deprecated = true];
    Exception control_union_exception = 31 [deprecated = true];
  }

  // Costa Rica Certification for Sustainable Tourism (CST): Basico.
  oneof costa_rica_sustainable_tourism_basico_oneof {
    bool costa_rica_sustainable_tourism_basico = 136;
    Exception costa_rica_sustainable_tourism_basico_exception = 137;
  }

  // Costa Rica Certification for Sustainable Tourism (CST): Elite.
  oneof costa_rica_sustainable_tourism_elite_oneof {
    bool costa_rica_sustainable_tourism_elite = 138;
    Exception costa_rica_sustainable_tourism_elite_exception = 139;
  }

  // DCA ESG: Sustainable.
  oneof dca_esg_sustainable_oneof {
    bool dca_esg_sustainable = 142;
    Exception dca_esg_sustainable_exception = 143;
  }

  // DCA ESG: Sustainable: L.
  oneof dca_esg_sustainable_l_oneof {
    bool dca_esg_sustainable_l = 144;
    Exception dca_esg_sustainable_l_exception = 145;
  }

  // DEHOGA Umweltcheck: Bronze.
  oneof dehoga_umweltcheck_bronze_oneof {
    bool dehoga_umweltcheck_bronze = 148;
    Exception dehoga_umweltcheck_bronze_exception = 149;
  }

  // DEHOGA Umweltcheck: Silver.
  oneof dehoga_umweltcheck_silver_oneof {
    bool dehoga_umweltcheck_silver = 150;
    Exception dehoga_umweltcheck_silver_exception = 151;
  }

  // DEHOGA Umweltcheck: Gold.
  oneof dehoga_umweltcheck_gold_oneof {
    bool dehoga_umweltcheck_gold = 152;
    Exception dehoga_umweltcheck_gold_exception = 153;
  }

  // EarthCheck: Silver.
  oneof earthcheck_silver_oneof {
    bool earthcheck_silver = 154;
    Exception earthcheck_silver_exception = 155;
  }

  // EarthCheck: Gold.
  oneof earthcheck_gold_oneof {
    bool earthcheck_gold = 156;
    Exception earthcheck_gold_exception = 157;
  }

  // EarthCheck: Platinum.
  oneof earthcheck_platinum_oneof {
    bool earthcheck_platinum = 158;
    Exception earthcheck_platinum_exception = 159;
  }

  // EarthCheck: Master.
  oneof earthcheck_master_oneof {
    bool earthcheck_master = 160;
    Exception earthcheck_master_exception = 161;
  }

  // ECOSmart.
  oneof ecosmart_oneof {
    bool ecosmart = 340;
    Exception ecosmart_exception = 341;
  }

  // Eco-Certification Malta Standard.
  oneof eco_certification_malta_oneof {
    bool eco_certification_malta = 34;
    Exception eco_certification_malta_exception = 35;
  }

  // Ecostars: 1 Ecostar.
  oneof ecostars_level1_oneof {
    bool ecostars_level1 = 164;
    Exception ecostars_level1_exception = 165;
  }

  // Ecostars: 2 Ecostars.
  oneof ecostars_level2_oneof {
    bool ecostars_level2 = 166;
    Exception ecostars_level2_exception = 167;
  }

  // Ecostars: 3 Ecostars.
  oneof ecostars_level3_oneof {
    bool ecostars_level3 = 168;
    Exception ecostars_level3_exception = 169;
  }

  // Ecostars: 4 Ecostars.
  oneof ecostars_level4_oneof {
    bool ecostars_level4 = 170;
    Exception ecostars_level4_exception = 171;
  }

  // Ecostars: 5 Ecostars.
  oneof ecostars_level5_oneof {
    bool ecostars_level5 = 172;
    Exception ecostars_level5_exception = 173;
  }

  // Ecotourism Australia ECO Certification Standard: Ecotourism.
  oneof ecotourism_australia_ecotourism_oneof {
    bool ecotourism_australia_ecotourism = 176;
    Exception ecotourism_australia_ecotourism_exception = 177;
  }

  // Ecotourism Australia ECO Certification Standard: EcotourismAdvanced.
  oneof ecotourism_australia_ecotourism_advanced_oneof {
    bool ecotourism_australia_ecotourism_advanced = 178;
    Exception ecotourism_australia_ecotourism_advanced_exception = 179;
  }

  // Ecotourism Kenya Eco-rating Certification Scheme: Bronze.
  oneof ecotourism_kenya_eco_rating_bronze_oneof {
    bool ecotourism_kenya_eco_rating_bronze = 182;
    Exception ecotourism_kenya_eco_rating_bronze_exception = 183;
  }

  // Ecotourism Kenya Eco-rating Certification Scheme: Silver.
  oneof ecotourism_kenya_eco_rating_silver_oneof {
    bool ecotourism_kenya_eco_rating_silver = 184;
    Exception ecotourism_kenya_eco_rating_silver_exception = 185;
  }

  // Ecotourism Kenya Eco-rating Certification Scheme: Gold.
  oneof ecotourism_kenya_eco_rating_gold_oneof {
    bool ecotourism_kenya_eco_rating_gold = 186;
    Exception ecotourism_kenya_eco_rating_gold_exception = 187;
  }

  // Ecoworldhotel: 1 Eco-Leaf.
  oneof ecoworldhotel_level1_oneof {
    bool ecoworldhotel_level1 = 352;
    Exception ecoworldhotel_level1_exception = 353;
  }

  // Ecoworldhotel: 2 Eco-Leaves.
  oneof ecoworldhotel_level2_oneof {
    bool ecoworldhotel_level2 = 354;
    Exception ecoworldhotel_level2_exception = 355;
  }

  // Ecoworldhotel: 3 Eco-Leaves.
  oneof ecoworldhotel_level3_oneof {
    bool ecoworldhotel_level3 = 356;
    Exception ecoworldhotel_level3_exception = 357;
  }

  // Ecoworldhotel: 4 Eco-Leaves.
  oneof ecoworldhotel_level4_oneof {
    bool ecoworldhotel_level4 = 358;
    Exception ecoworldhotel_level4_exception = 359;
  }

  // Ecoworldhotel: 5 Eco-Leaves.
  oneof ecoworldhotel_level5_oneof {
    bool ecoworldhotel_level5 = 360;
    Exception ecoworldhotel_level5_exception = 361;
  }

  // EDGE Green Building Certification.
  oneof edge_green_building_oneof {
    bool edge_green_building = 368;
    Exception edge_green_building_exception = 369;
  }

  // Eco-Management and Audit Scheme (EMAS).
  oneof emas_oneof {
    bool emas = 366;
    Exception emas_exception = 367;
  }

  // Environmentally Friendly Service.
  // This field is deprecated. The certification is covered by `cenia_efs`.
  oneof environmentally_friendly_service_oneof {
    bool environmentally_friendly_service = 334 [deprecated = true];
    Exception environmentally_friendly_service_exception = 335
        [deprecated = true];
  }

  // EU Ecolabel.
  oneof eu_ecolabel_oneof {
    bool eu_ecolabel = 188;
    Exception eu_ecolabel_exception = 189;
  }

  // Fair Trade Tourism.
  oneof fair_trade_tourism_oneof {
    bool fair_trade_tourism = 190;
    Exception fair_trade_tourism_exception = 191;
  }

  // FuturePlus.
  oneof futureplus_oneof {
    bool futureplus = 338;
    Exception futureplus_exception = 339;
  }

  // Global Ecosphere Retreats Standard.
  oneof global_ecosphere_retreats_standard_oneof {
    bool global_ecosphere_retreats_standard = 298;
    Exception global_ecosphere_retreats_standard_exception = 299;
  }

  // GREAT Green Deal Certification.
  oneof great_green_deal_oneof {
    bool great_green_deal = 38;
    Exception great_green_deal_exception = 39;
  }

  // Green Destinations: Level 1.
  oneof green_destinations_level1_oneof {
    bool green_destinations_level1 = 328;
    Exception green_destinations_level1_exception = 329;
  }

  // Green Destinations: Level 2.
  oneof green_destinations_level2_oneof {
    bool green_destinations_level2 = 330;
    Exception green_destinations_level2_exception = 331;
  }

  // Green Destinations: Level 3.
  oneof green_destinations_level3_oneof {
    bool green_destinations_level3 = 332;
    Exception green_destinations_level3_exception = 333;
  }

  // Green Globe: Certified.
  oneof green_globe_certified_oneof {
    bool green_globe_certified = 192;
    Exception green_globe_certified_exception = 193;
  }

  // Green Globe: Gold.
  oneof green_globe_gold_oneof {
    bool green_globe_gold = 194;
    Exception green_globe_gold_exception = 195;
  }

  // Green Globe: Platinum.
  oneof green_globe_platinum_oneof {
    bool green_globe_platinum = 196;
    Exception green_globe_platinum_exception = 197;
  }

  // Green Growth 2050 Standard: Silver.
  oneof green_growth2050_silver_oneof {
    bool green_growth2050_silver = 198;
    Exception green_growth2050_silver_exception = 199;
  }

  // Green Growth 2050 Standard: Gold.
  oneof green_growth2050_gold_oneof {
    bool green_growth2050_gold = 200;
    Exception green_growth2050_gold_exception = 201;
  }

  // Green Growth 2050 Standard: Platinum.
  oneof green_growth2050_platinum_oneof {
    bool green_growth2050_platinum = 202;
    Exception green_growth2050_platinum_exception = 203;
  }

  // Green Hospitality Certified.
  oneof green_hospitality_oneof {
    bool green_hospitality = 204;
    Exception green_hospitality_exception = 205;
  }

  // Green Key.
  oneof green_key_oneof {
    bool green_key = 44;
    Exception green_key_exception = 45;
  }

  // Green Key Global Eco-Rating: 1 Green Key.
  oneof green_key_global_level1_oneof {
    bool green_key_global_level1 = 206;
    Exception green_key_global_level1_exception = 207;
  }

  // Green Key Global Eco-Rating: 2 Green Keys.
  oneof green_key_global_level2_oneof {
    bool green_key_global_level2 = 208;
    Exception green_key_global_level2_exception = 209;
  }

  // Green Key Global Eco-Rating: 3 Green Keys.
  oneof green_key_global_level3_oneof {
    bool green_key_global_level3 = 210;
    Exception green_key_global_level3_exception = 211;
  }

  // Green Key Global Eco-Rating: 4 Green Keys.
  oneof green_key_global_level4_oneof {
    bool green_key_global_level4 = 212;
    Exception green_key_global_level4_exception = 213;
  }

  // Green Key Global Eco-Rating: 5 Green Keys.
  oneof green_key_global_level5_oneof {
    bool green_key_global_level5 = 214;
    Exception green_key_global_level5_exception = 215;
  }

  // Green Pearls Unique Places.
  oneof green_pearls_unique_places_oneof {
    bool green_pearls_unique_places = 216;
    Exception green_pearls_unique_places_exception = 217;
  }

  // Green Seal: Bronze.
  oneof green_seal_bronze_oneof {
    bool green_seal_bronze = 218;
    Exception green_seal_bronze_exception = 219;
  }

  // Green Seal: Silver.
  oneof green_seal_silver_oneof {
    bool green_seal_silver = 220;
    Exception green_seal_silver_exception = 221;
  }

  // Green Seal: Gold.
  oneof green_seal_gold_oneof {
    bool green_seal_gold = 222;
    Exception green_seal_gold_exception = 223;
  }

  // Green Star Hotel Standard: 3 Stars.
  oneof green_star_level3_oneof {
    bool green_star_level3 = 224;
    Exception green_star_level3_exception = 225;
  }

  // Green Star Hotel Standard: 4 Stars.
  oneof green_star_level4_oneof {
    bool green_star_level4 = 226;
    Exception green_star_level4_exception = 227;
  }

  // Green Star Hotel Standard: 5 Stars.
  oneof green_star_level5_oneof {
    bool green_star_level5 = 228;
    Exception green_star_level5_exception = 229;
  }

  // GreenSign Hotel: Level 1.
  oneof green_sign_level1_oneof {
    bool green_sign_level1 = 234;
    Exception green_sign_level1_exception = 235;
  }

  // GreenSign Hotel: Level 2.
  oneof green_sign_level2_oneof {
    bool green_sign_level2 = 236;
    Exception green_sign_level2_exception = 237;
  }

  // GreenSign Hotel: Level 3.
  oneof green_sign_level3_oneof {
    bool green_sign_level3 = 238;
    Exception green_sign_level3_exception = 239;
  }

  // GreenSign Hotel: Level 4.
  oneof green_sign_level4_oneof {
    bool green_sign_level4 = 240;
    Exception green_sign_level4_exception = 241;
  }

  // GreenSign Hotel: Level 5.
  oneof green_sign_level5_oneof {
    bool green_sign_level5 = 242;
    Exception green_sign_level5_exception = 243;
  }

  // GreenStep Sustainable Tourism: Bronze.
  oneof green_step_sustainable_tourism_bronze_oneof {
    bool green_step_sustainable_tourism_bronze = 246;
    Exception green_step_sustainable_tourism_bronze_exception = 247;
  }

  // GreenStep Sustainable Tourism: Silver.
  oneof green_step_sustainable_tourism_silver_oneof {
    bool green_step_sustainable_tourism_silver = 248;
    Exception green_step_sustainable_tourism_silver_exception = 249;
  }

  // GreenStep Sustainable Tourism: Gold.
  oneof green_step_sustainable_tourism_gold_oneof {
    bool green_step_sustainable_tourism_gold = 250;
    Exception green_step_sustainable_tourism_gold_exception = 251;
  }

  // GreenStep Sustainable Tourism: Platinum.
  oneof green_step_sustainable_tourism_platinum_oneof {
    bool green_step_sustainable_tourism_platinum = 252;
    Exception green_step_sustainable_tourism_platinum_exception = 253;
  }

  // Green Tourism: Bronze.
  oneof green_tourism_bronze_oneof {
    bool green_tourism_bronze = 312;
    Exception green_tourism_bronze_exception = 313;
  }

  // Green Tourism: Silver.
  oneof green_tourism_silver_oneof {
    bool green_tourism_silver = 314;
    Exception green_tourism_silver_exception = 315;
  }

  // Green Tourism: Gold.
  oneof green_tourism_gold_oneof {
    bool green_tourism_gold = 316;
    Exception green_tourism_gold_exception = 317;
  }

  // Green Tourism Active: Green Initiate.
  oneof green_tourism_active_green_initiate_oneof {
    bool green_tourism_active_green_initiate = 254;
    Exception green_tourism_active_green_initiate_exception = 255;
  }

  // Green Tourism Active: Green Leader.
  oneof green_tourism_active_green_leader_oneof {
    bool green_tourism_active_green_leader = 256;
    Exception green_tourism_active_green_leader_exception = 257;
  }

  // Green Tourism Active: Green Champion.
  oneof green_tourism_active_green_champion_oneof {
    bool green_tourism_active_green_champion = 258;
    Exception green_tourism_active_green_champion_exception = 259;
  }

  // Green Tourism Active: Green Champion with Distinction.
  oneof green_tourism_active_green_champion_distinction_oneof {
    bool green_tourism_active_green_champion_distinction = 260;
    Exception green_tourism_active_green_champion_distinction_exception = 261;
  }

  // GSTC Criteria.
  oneof gstc_criteria_oneof {
    bool gstc_criteria = 370;
    Exception gstc_criteria_exception = 371;
  }

  // Hilton LightStay.
  // This field is deprecated. The certification is no longer supported.
  oneof hilton_lightstay_oneof {
    bool hilton_lightstay = 52 [deprecated = true];
    Exception hilton_lightstay_exception = 53 [deprecated = true];
  }

  // Hostelling International Quality and Sustainability Standard: Small.
  oneof hostelling_international_quality_and_sustainability_small_oneof {
    bool hostelling_international_quality_and_sustainability_small = 262;
    Exception
        hostelling_international_quality_and_sustainability_small_exception =
            263;
  }

  // Hostelling International Quality and Sustainability Standard: Standard.
  oneof hostelling_international_quality_and_sustainability_standard_oneof {
    bool hostelling_international_quality_and_sustainability_standard = 264;
    Exception
        hostelling_international_quality_and_sustainability_standard_exception =
            265;
  }

  // Hostelling International Quality and Sustainability Standard: Key.
  oneof hostelling_international_quality_and_sustainability_key_oneof {
    bool hostelling_international_quality_and_sustainability_key = 266;
    Exception
        hostelling_international_quality_and_sustainability_key_exception = 267;
  }

  // Hoteles más Verdes: Bronce.
  oneof hoteles_mas_verdes_bronce_oneof {
    bool hoteles_mas_verdes_bronce = 268;
    Exception hoteles_mas_verdes_bronce_exception = 269;
  }

  // Hoteles más Verdes: Plata.
  oneof hoteles_mas_verdes_plata_oneof {
    bool hoteles_mas_verdes_plata = 270;
    Exception hoteles_mas_verdes_plata_exception = 271;
  }

  // Hoteles más Verdes: Oro.
  oneof hoteles_mas_verdes_oro_oneof {
    bool hoteles_mas_verdes_oro = 272;
    Exception hoteles_mas_verdes_oro_exception = 273;
  }

  // ibex fairstay: Bronze.
  oneof ibex_fairstay_bronze_oneof {
    bool ibex_fairstay_bronze = 276;
    Exception ibex_fairstay_bronze_exception = 277;
  }

  // ibex fairstay: Silver.
  oneof ibex_fairstay_silver_oneof {
    bool ibex_fairstay_silver = 278;
    Exception ibex_fairstay_silver_exception = 279;
  }

  // ibex fairstay: Gold.
  oneof ibex_fairstay_gold_oneof {
    bool ibex_fairstay_gold = 280;
    Exception ibex_fairstay_gold_exception = 281;
  }

  // ibex fairstay: Platinum.
  oneof ibex_fairstay_platinum_oneof {
    bool ibex_fairstay_platinum = 282;
    Exception ibex_fairstay_platinum_exception = 283;
  }

  // ISO 14001.
  oneof iso14001_oneof {
    bool iso14001 = 20;
    Exception iso14001_exception = 21;
  }

  // ISO 50001.
  oneof iso50001_oneof {
    bool iso50001 = 22;
    Exception iso50001_exception = 23;
  }

  // ISO 9001.
  oneof iso9001_oneof {
    bool iso9001 = 284;
    Exception iso9001_exception = 285;
  }

  // LEED: Certified.
  oneof leed_certified_oneof {
    bool leed_certified = 12;
    Exception leed_certified_exception = 13;
  }

  // LEED: Silver.
  oneof leed_silver_oneof {
    bool leed_silver = 14;
    Exception leed_silver_exception = 15;
  }

  // LEED: Gold.
  oneof leed_gold_oneof {
    bool leed_gold = 16;
    Exception leed_gold_exception = 17;
  }

  // LEED: Platinum.
  oneof leed_platinum_oneof {
    bool leed_platinum = 18;
    Exception leed_platinum_exception = 19;
  }

  // Nordic Swan Ecolabel.
  oneof nordic_swan_ecolabel_oneof {
    bool nordic_swan_ecolabel = 70;
    Exception nordic_swan_ecolabel_exception = 71;
  }

  // Preferred by Nature Sustainable Tourism Standard for Accommodation.
  oneof preferred_by_nature_sustainable_tourism_oneof {
    bool preferred_by_nature_sustainable_tourism = 58;
    Exception preferred_by_nature_sustainable_tourism_exception = 59;
  }

  // Sakura Quality An ESG Practice Standard: 1 Cherry Blossom.
  oneof sakura_quality_level1_oneof {
    bool sakura_quality_level1 = 92;
    Exception sakura_quality_level1_exception = 93;
  }

  // Sakura Quality An ESG Practice Standard: 2 Cherry Blossoms.
  oneof sakura_quality_level2_oneof {
    bool sakura_quality_level2 = 94;
    Exception sakura_quality_level2_exception = 95;
  }

  // Sakura Quality An ESG Practice Standard: 3 Cherry Blossoms.
  oneof sakura_quality_level3_oneof {
    bool sakura_quality_level3 = 96;
    Exception sakura_quality_level3_exception = 97;
  }

  // Sakura Quality An ESG Practice Standard: 4 Cherry Blossoms.
  oneof sakura_quality_level4_oneof {
    bool sakura_quality_level4 = 98;
    Exception sakura_quality_level4_exception = 99;
  }

  // Sakura Quality An ESG Practice Standard: 5 Cherry Blossoms.
  oneof sakura_quality_level5_oneof {
    bool sakura_quality_level5 = 100;
    Exception sakura_quality_level5_exception = 101;
  }

  // SERNATUR Sello S: Level 1.
  oneof sernatur_sello_level1_oneof {
    bool sernatur_sello_level1 = 288;
    Exception sernatur_sello_level1_exception = 289;
  }

  // SERNATUR Sello S: Level 2.
  oneof sernatur_sello_level2_oneof {
    bool sernatur_sello_level2 = 290;
    Exception sernatur_sello_level2_exception = 291;
  }

  // SERNATUR Sello S: Level 3.
  oneof sernatur_sello_level3_oneof {
    bool sernatur_sello_level3 = 292;
    Exception sernatur_sello_level3_exception = 293;
  }

  // Seychelles Sustainable Tourism Label.
  oneof seychelles_sustainable_tourism_label_oneof {
    bool seychelles_sustainable_tourism_label = 294;
    Exception seychelles_sustainable_tourism_label_exception = 295;
  }

  // SOCOTEC SuMS.
  oneof socotec_sums_oneof {
    bool socotec_sums = 296;
    Exception socotec_sums_exception = 297;
  }

  // Sustainable Meetings Berlin.
  oneof sustainable_meetings_berlin_oneof {
    bool sustainable_meetings_berlin = 344;
    Exception sustainable_meetings_berlin_exception = 345;
  }

  // Sustainable Travel Ireland – GSTC Industry Criteria: Bronze.
  oneof sustainable_travel_ireland_bronze_oneof {
    bool sustainable_travel_ireland_bronze = 318;
    Exception sustainable_travel_ireland_bronze_exception = 319;
  }

  // Sustainable Travel Ireland – GSTC Industry Criteria: Silver.
  oneof sustainable_travel_ireland_silver_oneof {
    bool sustainable_travel_ireland_silver = 320;
    Exception sustainable_travel_ireland_silver_exception = 321;
  }

  // Sustainable Travel Ireland – GSTC Industry Criteria: Gold.
  oneof sustainable_travel_ireland_gold_oneof {
    bool sustainable_travel_ireland_gold = 322;
    Exception sustainable_travel_ireland_gold_exception = 323;
  }

  // Sustonica - Sustainable Vacation Rental.
  oneof sustonica_sustainable_vacation_rental_oneof {
    bool sustonica_sustainable_vacation_rental = 336;
    Exception sustonica_sustainable_vacation_rental_exception = 337;
  }

  // TOFTigers Footprint Certification: Good.
  oneof tof_tigers_footprint_good_oneof {
    bool tof_tigers_footprint_good = 302;
    Exception tof_tigers_footprint_good_exception = 303;
  }

  // TOFTigers Footprint Certification: Quality.
  oneof tof_tigers_footprint_quality_oneof {
    bool tof_tigers_footprint_quality = 304;
    Exception tof_tigers_footprint_quality_exception = 305;
  }

  // TOFTigers Footprint Certification: Outstanding.
  oneof tof_tigers_footprint_outstanding_oneof {
    bool tof_tigers_footprint_outstanding = 306;
    Exception tof_tigers_footprint_outstanding_exception = 307;
  }

  // TOFTigers PUG certification: Good.
  oneof tof_tigers_pug_good_oneof {
    bool tof_tigers_pug_good = 308;
    Exception tof_tigers_pug_good_exception = 309;
  }

  // TOFTigers PUG certification: Quality.
  oneof tof_tigers_pug_quality_oneof {
    bool tof_tigers_pug_quality = 310;
    Exception tof_tigers_pug_quality_exception = 311;
  }

  // TOFTigers PUG certification: Outstanding.
  oneof tof_tigers_pug_outstanding_oneof {
    bool tof_tigers_pug_outstanding = 174;
    Exception tof_tigers_pug_outstanding_exception = 175;
  }

  // TourCert Certification.
  oneof tourcert_certification_oneof {
    bool tourcert_certification = 324;
    Exception tourcert_certification_exception = 325;
  }

  // Travelife Standard for Hotels & Accommodations.
  oneof travelife_oneof {
    bool travelife = 64;
    Exception travelife_exception = 65;
  }

  // Türkiye Sustainable Tourism Program.
  oneof turkiye_sustainable_tourism_program_oneof {
    bool turkiye_sustainable_tourism_program = 372;
    Exception turkiye_sustainable_tourism_program_exception = 373;
  }

  // United Certification Systems Limited.
  // This field is deprecated. The certification is now covered by
  // `gstc_criteria`.
  oneof united_certification_systems_limited_oneof {
    bool united_certification_systems_limited = 66 [deprecated = true];
    Exception united_certification_systems_limited_exception = 67
        [deprecated = true];
  }

  // Viabono.
  oneof viabono_oneof {
    bool viabono = 348;
    Exception viabono_exception = 349;
  }

  // Vireo Srl (GSTC Criteria).
  // This field is deprecated. The certification is now covered by
  // `gstc_criteria` and `turkiye_sustainable_tourism_program`.
  oneof vireo_srl_oneof {
    bool vireo_srl = 68 [deprecated = true];
    Exception vireo_srl_exception = 69 [deprecated = true];
  }

  // Wyndham Green: Core.
  // This field is deprecated. The certification is no longer supported.
  oneof wyndham_green_core_oneof {
    bool wyndham_green_core = 80 [deprecated = true];
    Exception wyndham_green_core_exception = 81 [deprecated = true];
  }

  // Wyndham Green: Essential.
  // This field is deprecated. The certification is no longer supported.
  oneof wyndham_green_essential_oneof {
    bool wyndham_green_essential = 82 [deprecated = true];
    Exception wyndham_green_essential_exception = 83 [deprecated = true];
  }

  // Wyndham Green: Proficient.
  // This field is deprecated. The certification is no longer supported.
  oneof wyndham_green_proficient_oneof {
    bool wyndham_green_proficient = 84 [deprecated = true];
    Exception wyndham_green_proficient_exception = 85 [deprecated = true];
  }

  // Wyndham Green: Advanced.
  // This field is deprecated. The certification is no longer supported.
  oneof wyndham_green_advanced_oneof {
    bool wyndham_green_advanced = 86 [deprecated = true];
    Exception wyndham_green_advanced_exception = 87 [deprecated = true];
  }

  // Wyndham Green: Expert.
  // This field is deprecated. The certification is no longer supported.
  oneof wyndham_green_expert_oneof {
    bool wyndham_green_expert = 88 [deprecated = true];
    Exception wyndham_green_expert_exception = 89 [deprecated = true];
  }
}

// Exception mode. Only use this if the factual information cannot be
// represented by the relevant proto field. i.e. a service is only available
// during some days of the week, or an amenity is only available seasonally.
enum Exception {
  UNSPECIFIED_REASON = 0;
}

message Metadata {
  // REQUIRED.
  // The ISO 8601 datetime at which the Lodging data is asserted to be
  // true in the real world. Examples:
  // 2018-11-13T13:14:52-0800
  // 2018-11-13T13:14:52Z
  string last_updated = 1;
}