Brek - Hotel Wholesale Booking

Search hotels, compare room offers and public or masked wholesale rates, then continue on Brek.

¿Debería usar esto?

Calidad y seguridad

B
Calidad de la descripción
80%
Integridad del esquema
93%
Calidad de los nombres
100%
Riesgo de envenenamiento
40%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (7)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'search_accommodations' description contains placeholder texten search_accommodations
  • MEDIUMTool 'get_accommodation_details' description contains placeholder texten get_accommodation_details
  • MEDIUMTool 'get_accommodation_offers' description contains placeholder texten get_accommodation_offers
  • INFOTool description contains placeholder or incomplete texten search_accommodations
  • INFOTool description contains placeholder or incomplete texten get_accommodation_details
  • INFOTool description contains placeholder or incomplete texten get_accommodation_offers

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~4,842Tokens (definiciones de herramientas)
~17.2 KBTamaño de respuesta típico
Impacto significativo en la atención (3.78% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "brek": {
      "url": "https://mcp.brek.com/mcp"
    }
  }
}

Puntos de conexión remotos

https://mcp.brek.com/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (3)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢search_accommodations(destination, latitude, longitude, user_locale, user_location_city, ...)

Searches and compares multiple hotels in a city, neighborhood, airport, landmark, or other destination. Every search requires both checkinDate and checkoutDate, or dateIntent=tonight when the user explicitly asks for tonight. If the user supplied neither, ask for stay dates before calling; do not choose dates for them. Supports occupancy, price range, star rating, guest score, property types, amenities, cancellation preference, and sort order. Returns an ordered list with property IDs, hotel facts, masked wholesale price bands, public-rate comparisons, and Brek links. For a follow-up by position or partial hotel name, match against the most recent relevant search list. If one hotel matches, copy its propertyId exactly into get_accommodation_details or get_accommodation_offers; never shorten, combine, or replace IDs with placeholders. If the ID is unavailable, pass hotelName and optional destination instead. If several hotels match, ask which hotel the user means. Intended for destination discovery and multi-hotel comparison; room-level offers for one property are not included. Exact private wholesale prices are available on Brek.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "minLength": 2,
      "maxLength": 160,
      "description": "City, neighborhood, airport, landmark, or other broad destination."
    },
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Optional latitude when already known."
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Optional longitude when already known."
    },
    "user_locale": {
      "type": "string",
      "minLength": 2,
      "maxLength": 35,
      "description": "Optional traveler locale from the Claude client context, such as en-US. Omit if unavailable; do not infer it from the hotel destination."
    },
    "user_location_city": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Optional approximate traveler city supplied by the Claude client. Omit if unavailable; this is not the hotel destination."
    },
    "user_location_country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "Optional two-letter traveler country supplied by the Claude client, such as US. Omit if unavailable; do not infer it from the hotel destination."
    },
    "user_location_region": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Optional traveler state or region supplied by the Claude client. Omit if unavailable; do not infer it from the hotel destination."
    },
    "user_location_timezone": {
      "type": "string",
      "minLength": 3,
      "maxLength": 80,
      "description": "Optional IANA timezone of the traveler supplied by the Claude client. Omit if unavailable; this does not set the hotel's local stay dates."
    },
    "checkinDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Required with checkoutDate unless the user explicitly requested tonight. Use YYYY-MM-DD."
    },
    "checkoutDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Required with checkinDate unless the user explicitly requested tonight. Use YYYY-MM-DD."
    },
    "dateIntent": {
      "type": "string",
      "enum": [
        "tonight"
      ],
      "description": "Use only when the user explicitly requests tonight. Resolves check-in as the current local date and check-out as the following date; otherwise provide both stay dates."
    },
    "timeZone": {
      "type": "string",
      "minLength": 3,
      "maxLength": 80,
      "description": "Optional IANA time-zone fallback for resolving relative stay dates; destination or property location takes precedence."
    },
    "adults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 16,
      "description": "Total adult guests. When omitted, Brek defaults to 2 adults per room."
    },
    "children": {
      "type": "integer",
      "minimum": 0,
      "maximum": 8,
      "description": "Total child guests; when omitted, uses childrenAges.length."
    },
    "childrenAges": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 17
      },
      "maxItems": 8,
      "default": [],
      "description": "Age of every child at check-in. The array length must equal children."
    },
    "rooms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 3,
      "default": 1,
      "description": "Number of rooms. Each room receives the default of 2 adults when adults is omitted."
    },
    "currency": {
      "type": "string",
      "minLength": 3,
      "maxLength": 3,
      "description": "Only specify a currency when the traveler explicitly requests one. Otherwise omit it so Brek can use the visitor country, then locale, then USD. Supported: EUR, USD, INR, GBP, AUD, CAD, ARS, TRY, COP, CLP, SEK, MXN, IDR, BRL."
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "default": 1
    },
    "sort": {
      "type": "string",
      "enum": [
        "top-picks",
        "distance",
        "total",
        "total-desc",
        "reviews"
      ],
      "default": "top-picks",
      "description": "Result order: top-picks, distance, total price ascending, total price descending, or guest reviews."
    },
    "minimumPrice": {
      "type": "number",
      "minimum": 0,
      "description": "Minimum nightly price in the selected currency."
    },
    "maximumPrice": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Maximum nightly price in the selected currency."
    },
    "minimumStarRating": {
      "type": "number",
      "minimum": 1,
      "maximum": 5,
      "description": "Minimum hotel star classification from 1 to 5; distinct from guest review score."
    },
    "starRatings": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1,
        "maximum": 5
      },
      "maxItems": 5,
      "description": "Exact accepted hotel star classifications."
    },
    "minimumReviewScore": {
      "type": "number",
      "minimum": 0,
      "maximum": 10,
      "description": "Minimum guest review score out of 10; distinct from hotel star classification."
    },
    "propertyTypes": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "hotel",
          "motel",
          "resort",
          "hostel",
          "apartment",
          "apart-hotel",
          "extended-stay",
          "condo",
          "studio",
          "house",
          "townhome",
          "guesthouse",
          "bed-and-breakfast",
          "villa",
          "cabin",
          "cottage",
          "campground",
          "rv",
          "estate",
          "boat",
          "chateau",
          "hotel-suites",
          "corporate-apartment",
          "farm-house",
          "lodge",
          "barn",
          "mobile-home",
          "house-boat",
          "castle",
          "mas",
          "tower",
          "mill",
          "building"
        ]
      },
      "maxItems": 12,
      "description": "Accepted accommodation types, such as hotel, motel, resort, hostel, or apartment."
    },
    "freeCancellationOnly": {
      "type": "boolean",
      "default": false,
      "description": "Whether results require free cancellation or refundable rates."
    },
    "amenities": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "pool",
          "parking",
          "wifi",
          "free-wifi",
          "kitchen",
          "fireplace",
          "beachfront",
          "washer",
          "dryer",
          "air-conditioning",
          "tv",
          "heating",
          "family-friendly",
          "kids-friendly",
          "pet-friendly",
          "hot-tub",
          "free-breakfast",
          "free-cancellation",
          "laundry-in-unit",
          "laundry-on-site",
          "accessible",
          "for-couples",
          "solarium",
          "long-term-deals",
          "pay-over-time",
          "accept-local"
        ]
      },
      "maxItems": 12,
      "description": "Amenities required in every result."
    }
  },
  "required": [
    "destination"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "stay_dates_required",
        "stay_dates_invalid",
        "destination_not_found"
      ]
    },
    "message": {
      "type": "string"
    },
    "requiredInput": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "checkinDate",
          "checkoutDate",
          "destination"
        ]
      }
    },
    "accommodations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "address": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "stateCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "propertyType": {
            "type": [
              "string",
              "null"
            ]
          },
          "imageUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "starRating": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviewScore": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviewScale": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviewCount": {
            "type": [
              "number",
              "null"
            ]
          },
          "ratingLabel": {
            "type": [
              "string",
              "null"
            ]
          },
          "refundable": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "highlights": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pointsOfInterest": {
            "type": [
              "string",
              "null"
            ]
          },
          "highlightReview": {
            "type": [
              "string",
              "null"
            ]
          },
          "consecutivePositiveReviewCount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "wholesale": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string"
              },
              "availability": {
                "type": "string",
                "enum": [
                  "available",
                  "sold_out"
                ],
                "description": "Wholesale display availability. A wholesale rate higher than its public comparison is sold_out and has no price or booking action."
              },
              "url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "nightly": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "total": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "maskedTotal": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "currency": {
                "type": "string"
              },
              "includesTaxesAndFees": {
                "type": [
                  "boolean",
                  "null"
                ]
              }
            },
            "required": [
              "label",
              "url",
              "nightly",
              "total",
              "maskedTotal",
              "currency",
              "includesTaxesAndFees"
            ],
            "additionalProperties": false
          },
          "comparison": {
            "anyOf": [
              {
                "$ref": "#/properties/accommodations/items/properties/wholesale"
              },
              {
                "type": "null"
              }
            ]
          },
          "savings": {
            "type": [
              "number",
              "null"
            ]
          },
          "savingsPercent": {
            "type": [
              "number",
              "null"
            ]
          },
          "detailsUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "availabilityToken": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "address",
          "city",
          "stateCode",
          "propertyType",
          "imageUrl",
          "images",
          "latitude",
          "longitude",
          "starRating",
          "reviewScore",
          "reviewScale",
          "reviewCount",
          "ratingLabel",
          "refundable",
          "highlights",
          "pointsOfInterest",
          "highlightReview",
          "consecutivePositiveReviewCount",
          "wholesale",
          "comparison",
          "savings",
          "savingsPercent",
          "detailsUrl",
          "availabilityToken"
        ],
        "additionalProperties": false
      }
    },
    "page": {
      "type": "integer"
    },
    "total": {
      "type": "integer"
    },
    "totalPages": {
      "type": "integer"
    },
    "search": {
      "type": "object",
      "properties": {
        "destination": {
          "type": "string"
        },
        "checkinDate": {
          "type": "string"
        },
        "checkoutDate": {
          "type": "string"
        },
        "adults": {
          "type": "integer"
        },
        "children": {
          "type": "integer"
        },
        "childrenAges": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "rooms": {
          "type": "integer"
        },
        "currency": {
          "type": "string"
        },
        "sort": {
          "type": "string",
          "enum": [
            "top-picks",
            "distance",
            "total",
            "total-desc",
            "reviews"
          ]
        }
      },
      "required": [
        "destination",
        "checkinDate",
        "checkoutDate",
        "adults",
        "children",
        "childrenAges",
        "rooms",
        "currency",
        "sort"
      ],
      "additionalProperties": false
    },
    "priceDisclosure": {
      "type": "string"
    }
  },
  "required": [
    "accommodations",
    "page",
    "total",
    "totalPages",
    "search",
    "priceDisclosure"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_accommodation_details(propertyId, hotelName, destination, currency)

Returns undated facts for one identified Brek property ID, including address, description, photos, amenities, check-in and checkout times, star rating, and guest-review data. When the user refers to a hotel from a previous search_accommodations result by full or partial name or list position, copy that result's propertyId exactly if the match is unique; never shorten, combine, or use a placeholder ID. Ask for clarification if several hotels match. If no exact property ID is available, hotelName and optional destination can identify a unique hotel. No stay dates are needed. Availability, room offers, prices, breakfast, and cancellation terms are not included.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "propertyId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Exact Brek property ID copied from a previous search result. Do not guess, truncate, combine, or pass a placeholder; use hotelName if unsure."
    },
    "hotelName": {
      "type": "string",
      "minLength": 2,
      "maxLength": 200,
      "description": "Hotel name when no propertyId is available; a unique match is required."
    },
    "destination": {
      "type": "string",
      "minLength": 2,
      "maxLength": 160,
      "description": "Optional city or region to disambiguate hotelName."
    },
    "currency": {
      "type": "string",
      "minLength": 3,
      "maxLength": 3,
      "description": "Only specify a currency when the traveler explicitly requests one. Otherwise omit it so Brek can use the visitor country, then locale, then USD. Supported: EUR, USD, INR, GBP, AUD, CAD, ARS, TRY, COP, CLP, SEK, MXN, IDR, BRL."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "hotel_selection_required",
        "hotel_not_found"
      ]
    },
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "address": {
      "type": [
        "string",
        "null"
      ]
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "images": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "latitude": {
      "type": [
        "number",
        "null"
      ]
    },
    "longitude": {
      "type": [
        "number",
        "null"
      ]
    },
    "starRating": {
      "type": [
        "number",
        "null"
      ]
    },
    "reviewScore": {
      "type": [
        "number",
        "null"
      ]
    },
    "reviewScale": {
      "type": [
        "number",
        "null"
      ]
    },
    "reviewCount": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ]
    },
    "highlights": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "amenities": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "checkinFrom": {
      "type": [
        "string",
        "null"
      ]
    },
    "checkoutUntil": {
      "type": [
        "string",
        "null"
      ]
    },
    "propertyType": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "id",
    "name",
    "address",
    "description",
    "images",
    "latitude",
    "longitude",
    "starRating",
    "reviewScore",
    "reviewScale",
    "reviewCount",
    "highlights",
    "amenities",
    "checkinFrom",
    "checkoutUntil",
    "propertyType"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_accommodation_offers(propertyId, hotelName, destination, checkinDate, checkoutDate, ...)

Returns one named or identified hotel's full-stay property data and live room offers for specified dates and occupancy. When the user refers to a hotel from a previous search_accommodations result by list position or partial name, copy its propertyId exactly if the match is unique; never shorten, combine, or use a placeholder ID. Ask for clarification if several hotels match. Use hotelName and optional destination when no exact propertyId is available. Includes wholesale room types and photos, breakfast, refundability, cancellation terms, public-rate comparisons, masked wholesale rate bands, and Brek links. Public-only room types are excluded. Wholesale options priced above their public comparison are marked sold_out without a price; the public comparison remains available. Single-room and multi-room stays are supported through aggregate occupancy plus optional per-room arrangements. Exact private wholesale prices are available on Brek.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "propertyId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Exact Brek property ID copied from a previous search result or Brek stay URL. Do not guess, truncate, combine, or pass a placeholder; use hotelName if unsure."
    },
    "hotelName": {
      "type": "string",
      "minLength": 2,
      "maxLength": 200,
      "description": "Exact hotel name when propertyId is unavailable."
    },
    "destination": {
      "type": "string",
      "minLength": 2,
      "maxLength": 160,
      "description": "Optional city or region for disambiguating hotelName."
    },
    "checkinDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Required with checkoutDate unless the user explicitly requested tonight. Use YYYY-MM-DD."
    },
    "checkoutDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Required with checkinDate unless the user explicitly requested tonight. Use YYYY-MM-DD."
    },
    "dateIntent": {
      "type": "string",
      "enum": [
        "tonight"
      ],
      "description": "Use only when the user explicitly requests tonight. Resolves check-in as the current local date and check-out as the following date; otherwise provide both stay dates."
    },
    "timeZone": {
      "type": "string",
      "minLength": 3,
      "maxLength": 80,
      "description": "Optional IANA time-zone fallback for resolving relative stay dates; destination or property location takes precedence."
    },
    "adults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 16,
      "default": 2,
      "description": "Total adult guests."
    },
    "childrenAges": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 17
      },
      "maxItems": 8,
      "default": [],
      "description": "Age of each child at check-in."
    },
    "rooms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 3,
      "default": 1,
      "description": "Number of rooms. Each room requires at least one adult."
    },
    "roomArrangements": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "adults": {
            "type": "integer",
            "minimum": 1,
            "maximum": 8,
            "description": "Adults staying in this specific room."
          },
          "childrenAges": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 17
            },
            "maxItems": 8,
            "default": [],
            "description": "Ages of children staying in this specific room."
          },
          "infants": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4,
            "default": 0,
            "description": "Number of infants staying in this room."
          }
        },
        "required": [
          "adults"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 3,
      "description": "Exact per-room occupancy. Example: room 1 has 2 adults and room 2 has 2 adults plus children ages 4 and 2 => [{adults:2,childrenAges:[],infants:0},{adults:2,childrenAges:[4,2],infants:0}]. Array length equals rooms, and aggregate guests equal adults and childrenAges."
    },
    "availabilityToken": {
      "type": "string",
      "maxLength": 500
    },
    "currency": {
      "type": "string",
      "minLength": 3,
      "maxLength": 3,
      "description": "Only specify a currency when the traveler explicitly requests one. Otherwise omit it so Brek can use the visitor country, then locale, then USD. Supported: EUR, USD, INR, GBP, AUD, CAD, ARS, TRY, COP, CLP, SEK, MXN, IDR, BRL."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "const": "hotel_not_found"
    },
    "propertyId": {
      "type": "string"
    },
    "property": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "hotel_selection_required",
            "hotel_not_found"
          ]
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "address": {
          "type": [
            "string",
            "null"
          ]
        },
        "description": {
          "type": [
            "string",
            "null"
          ]
        },
        "images": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "latitude": {
          "type": [
            "number",
            "null"
          ]
        },
        "longitude": {
          "type": [
            "number",
            "null"
          ]
        },
        "starRating": {
          "type": [
            "number",
            "null"
          ]
        },
        "reviewScore": {
          "type": [
            "number",
            "null"
          ]
        },
        "reviewScale": {
          "type": [
            "number",
            "null"
          ]
        },
        "reviewCount": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ]
        },
        "highlights": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "amenities": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "checkinFrom": {
          "type": [
            "string",
            "null"
          ]
        },
        "checkoutUntil": {
          "type": [
            "string",
            "null"
          ]
        },
        "propertyType": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "id",
        "name",
        "address",
        "description",
        "images",
        "latitude",
        "longitude",
        "starRating",
        "reviewScore",
        "reviewScale",
        "reviewCount",
        "highlights",
        "amenities",
        "checkinFrom",
        "checkoutUntil",
        "propertyType"
      ],
      "additionalProperties": false
    },
    "offers": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "propertyId": {
            "type": "string"
          },
          "roomTypeName": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "beds": {
            "type": [
              "string",
              "null"
            ]
          },
          "roomSize": {
            "type": [
              "string",
              "null"
            ]
          },
          "occupancyMax": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "amenities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "breakfastIncluded": {
            "type": "boolean"
          },
          "refundable": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "cancellationSummary": {
            "type": [
              "string",
              "null"
            ]
          },
          "wholesale": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string"
              },
              "availability": {
                "type": "string",
                "enum": [
                  "available",
                  "sold_out"
                ],
                "description": "Wholesale display availability. A wholesale rate higher than its public comparison is sold_out and has no price or booking action."
              },
              "url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "nightly": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "total": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "maskedTotal": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "currency": {
                "type": "string"
              },
              "includesTaxesAndFees": {
                "type": [
                  "boolean",
                  "null"
                ]
              }
            },
            "required": [
              "label",
              "url",
              "nightly",
              "total",
              "maskedTotal",
              "currency",
              "includesTaxesAndFees"
            ],
            "additionalProperties": false
          },
          "comparison": {
            "anyOf": [
              {
                "$ref": "#/properties/offers/items/properties/wholesale"
              },
              {
                "type": "null"
              }
            ]
          },
          "savings": {
            "type": [
              "number",
              "null"
            ]
          },
          "savingsPercent": {
            "type": [
              "number",
              "null"
            ]
          },
          "upgradeTotal": {
            "type": [
              "number",
              "null"
            ]
          },
          "upgradeMaskedTotal": {
            "type": [
              "string",
              "null"
            ]
          },
          "payAtProperty": {
            "type": [
              "string",
              "null"
            ]
          },
          "detailsUrl": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "propertyId",
          "roomTypeName",
          "name",
          "description",
          "images",
          "beds",
          "roomSize",
          "occupancyMax",
          "amenities",
          "breakfastIncluded",
          "refundable",
          "cancellationSummary",
          "wholesale",
          "comparison",
          "savings",
          "savingsPercent",
          "upgradeTotal",
          "upgradeMaskedTotal",
          "payAtProperty",
          "detailsUrl"
        ],
        "additionalProperties": false
      }
    },
    "stay": {
      "type": "object",
      "properties": {
        "checkinDate": {
          "type": "string"
        },
        "checkoutDate": {
          "type": "string"
        },
        "adults": {
          "type": "integer"
        },
        "children": {
          "type": "integer"
        },
        "childrenAges": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "rooms": {
          "type": "integer"
        },
        "roomArrangements": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "adults": {
                "type": "integer"
              },
              "childrenAges": {
                "type": "array",
                "items": {
                  "type": "integer"
                }
              },
              "infants": {
                "type": "integer"
              }
            },
            "required": [
              "adults",
              "childrenAges",
              "infants"
            ],
            "additionalProperties": false
          }
        },
        "currency": {
          "type": "string"
        }
      },
      "required": [
        "checkinDate",
        "checkoutDate",
        "adults",
        "children",
        "childrenAges",
        "rooms",
        "roomArrangements",
        "currency"
      ],
      "additionalProperties": false
    },
    "priceDisclosure": {
      "type": "string"
    }
  },
  "required": [
    "propertyId",
    "property",
    "offers",
    "stay",
    "priceDisclosure"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada3 herramientas