json_schema: {
      "$schema": "http://json-schema.org/draft-04/schema#",
      "id": "https://www.swiss-hotels.com/schema#",
      "definitions": {
          "destinationCity": {
              "type": "object",
              "properties": {
                  "cityId": {
                      "type": "string"
                  }
              },
              "required": [
                  "cityId"
              ]
          },
          "destinationRegion": {
              "type": "object",
              "properties": {
                  "regionId": {
                      "type": "string"
                  }
              },
              "required": [
                  "regionId"
              ]
          },
          "destinationGroup": {
              "type": "object",
              "properties": {
                  "groupId": {
                      "type": "string"
                  }
              },
              "required": [
                  "groupId"
              ]
          },
          "destinationHotel": {
              "type": "object",
              "properties": {
                  "hotelId": {
                      "type": "string"
                  }
              },
              "required": [
                  "hotelId"
              ]
          },
          "occupancyRoom": {
              "type": "object",
              "properties": {
                  "adults": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 5
                  },
                  "children": {
                      "type": "array",
                      "minItems": 0,
                      "maxItems": 5,
                      "items": {
                          "type": "object",
                          "properties": {
                              "age": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 12
                              }
                          },
                          "required": [
                              "age"
                          ]
                      }
                  }
              },
              "required": [
                  "adults"
              ]
          },
          "destination": {
              "type": "object",
              "oneOf": [
                  {
                      "$ref": "#/definitions/destinationCity"
                  },
                  {
                      "$ref": "#/definitions/destinationRegion"
                  },
                  {
                      "$ref": "#/definitions/destinationGroup"
                  },
                  {
                      "$ref": "#/definitions/destinationHotel"
                  }
              ]
          },
          "periodOfStay": {
              "type": "object",
              "properties": {
                  "checkInDate": {
                      "type": "string",
                      "format": "date"
                  },
                  "checkOutDate": {
                      "type": "string",
                      "format": "date"
                  }
              },
              "required": [
                  "checkInDate",
                  "checkOutDate"
              ]
          },
          "occupancy": {
              "type": "object",
              "properties": {
                  "rooms": {
                      "type": "array",
                      "minItems": 1,
                      "maxItems": 5,
                      "items": {
                          "$ref": "#/definitions/occupancyRoom"
                      }
                  }
              },
              "required": [
                  "rooms"
              ]
          },
          "locale": {
              "type": "string",
              "pattern": "^[a-z]{2}_[A-Z]{2}$"
          },
          "currency": {
              "type": "string",
              "enum": [
                  "CHF",
                  "EUR",
                  "GBP",
                  "RUB",
                  "USD"
              ]
          },
          "cost": {
              "type": "object",
              "properties": {
                  "currency": {
                      "$ref": "#/definitions/currency"
                  },
                  "amount": {
                      "type": "string",
                      "pattern": "^[0-9]+\\.[0-9]{2}$"
                  }
              },
              "required": [
                  "currency",
                  "amount"
              ]
          },
          "localizedText": {
              "type": "object",
              "properties": {
                  "locale": {
                      "$ref": "#/definitions/locale"
                  },
                  "value": {
                      "type": "string"
                  }
              },
              "required": [
                  "locale",
                  "value"
              ]
          },
          "multilangText": {
              "type": "array",
              "items": {
                  "$ref": "#/definitions/localizedText"
              },
              "minItems": 1
          }
      },
      "properties": {
          "destinationCity": {
              "$ref": "#/definitions/destinationCity"
          },
          "destinationRegion": {
              "$ref": "#/definitions/destinationRegion"
          },
          "destinationGroup": {
              "$ref": "#/definitions/destinationGroup"
          },
          "destinationHotel": {
              "$ref": "#/definitions/destinationHotel"
          },
          "occupancyRoom": {
              "$ref": "#/definitions/occupancyRoom"
          },
          "destination": {
              "$ref": "#/definitions/destination"
          },
          "periodOfStay": {
              "$ref": "#/definitions/periodOfStay"
          },
          "occupancy": {
              "$ref": "#/definitions/occupancy"
          },
          "locale": {
              "$ref": "#/definitions/locale"
          },
          "currency": {
              "$ref": "#/definitions/currency"
          },
          "cost": {
              "$ref": "#/definitions/cost"
          },
          "localizedText": {
              "$ref": "#/definitions/localizedText"
          },
          "multilangText": {
              "$ref": "#/definitions/multilangText"
          }
      },
      "required": [
          "destinationCity",
          "destinationRegion",
          "destinationGroup",
          "destinationHotel",
          "occupancyRoom",
          "destination",
          "periodOfStay",
          "occupancy",
          "locale",
          "currency",
          "cost",
          "localizedText",
          "multilangText"
      ]
  }