Skip to main content
Glama

chucho — Book Direct

Show vacation homes

render_properties
Read-onlyIdempotent

Display one to six homes as photo cards with Details and host booking links. A semantic search_properties shows no cards: finish comparing and any detail or price checks first, then call render_properties once with your final choice, best first. Render every home you recommend, even a single one, which opens as its full details. Each call replaces the cards the traveler sees, so never render provisional picks. Also use it for a subset, photos again or a comparison the traveler requests. Pass the structured search arguments the homes came from as searchContext, so explorer refinements keep destination, party and filters; with quoteMode and its dates or flexible bounds, the cards are priced for that stay under the same 2.5-second quote enrichment as search (pending prices finish in the cards). Omit context for unrelated saved homes; cards are then price-free. Rechecks publication before display.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "ids": "<ids>"
    },
    "name": "render_properties"
  }
}

Input Schema

NameRequiredDescriptionDefault
idsYes
localeNoen
searchContextNoThe structured search arguments the homes came from. Preserves explorer refinements; with quoteMode and its dates or flexible bounds, the shown cards are priced for that stay.

Output Schema

NameRequiredDescriptionDefault
localeYes
missingIdsNo
propertiesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / properties / searchContext / properties / currency / description
      Added value: +"Preferred ISO 4217 currency, e.g. USD, EUR or NOK. Rough nightly estimates use approximate conversions (USD by default) when a fresh rate is supported; otherwise retain the host currency. Dated quotes depend on host support: always inspect the returned currency. May be supplied without dates for browsing."
    • removedInput schema / properties / searchContext / properties / currency / enum
      Removed value: -[
      -  "USD",
      -  "EUR",
      -  "GBP",
      -  "CRC",
      -  "MXN",
      -  "COP",
      -  "PEN",
      -  "BRL",
      -  "AUD",
      -  "NZD"
      -]
    • addedInput schema / properties / searchContext / properties / currency / pattern
      Added value: +"^[A-Z]{3}$"
    • changedOutput schema / properties / properties / items / properties / rateEstimate / description
      Previous value: -"Rough nightly rate per month from earlier host prices, in the host's currency. A per-night estimate only: never a stay total, a quote or availability. stay_derived months divide a quoted stay total by its nights (fees spread in, taxes possibly excluded) for partyBasis; calendar_nightly months use the host calendar's nightly rate. Use quoteMode or get_stay_quote for an actual price."New value: +"Rough nightly rate per month from earlier host prices, in the host's currency. Optional display contains approximate nightly comparison amounts in the requested currency (USD by default), with an exchange-rate date and expiry; original amounts are unchanged. A per-night estimate only: never a stay total, a quote or availability. stay_derived months divide a quoted stay total by its nights (fees spread in, taxes possibly excluded) for partyBasis; calendar_nightly months use the host calendar's nightly rate. Use quoteMode or get_stay_quote for an actual price."
    • addedOutput schema / properties / properties / items / properties / rateEstimate / properties / display
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "approximate": {
      +      "const": true,
      +      "type": "boolean"
      +    },
      +    "currency": {
      +      "pattern": "^[A-Z]{3}$",
      +      "type": "string"
      +    },
      +    "expiresAt": {
      +      "type": "string"
      +    },
      +    "nightlyTypical": {
      +      "additionalProperties": {
      +        "exclusiveMinimum": 0,
      +        "type": "number"
      +      },
      +      "propertyNames": {
      +        "pattern": "^\\d{4}-\\d{2}$",
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "rateDate": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "currency",
      +    "nightlyTypical",
      +    "approximate",
      +    "rateDate",
      +    "expiresAt"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / properties / items / properties / stayQuote / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "basis": {
      -        "const": "exact",
      -        "type": "string"
      -      },
      -      "quote": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "arrival": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "availability": {
      -                "enum": [
      -                  "available",
      -                  "unavailable",
      -                  "unknown"
      -                ],
      -                "type": "string"
      -              },
      -              "bookingUrl": {
      -                "format": "uri",
      -                "type": "string"
      -              },
      -              "checkedAt": {
      -                "format": "date-time",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              },
      -              "departure": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "expiresAt": {
      -                "format": "date-time",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              },
      -              "guests": {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              "held": {
      -                "const": false,
      -                "type": "boolean"
      -              },
      -              "minimumNights": {
      -                "anyOf": [
      -                  {
      -                    "exclusiveMinimum": 0,
      -                    "maximum": 9007199254740991,
      -                    "type": "integer"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "nights": {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              "partyBasis": {
      -                "const": "all_adults",
      -                "type": "string"
      -              },
      -              "price": {
      -                "anyOf": [
      -                  {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "breakdown": {
      -                        "items": {
      -                          "additionalProperties": false,
      -                          "properties": {
      -                            "amount": {
      -                              "type": "number"
      -                            },
      -                            "label": {
      -                              "maxLength": 160,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "label",
      -                            "amount"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "maxItems": 30,
      -                        "type": "array"
      -                      },
      -                      "completeness": {
      -                        "enum": [
      -                          "total",
      -                          "partial"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "currency": {
      -                        "pattern": "^[A-Z]{3}$",
      -                        "type": "string"
      -                      },
      -                      "taxesIncluded": {
      -                        "anyOf": [
      -                          {
      -                            "type": "boolean"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "total": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      }
      -                    },
      -                    "required": [
      -                      "currency",
      -                      "total",
      -                      "breakdown",
      -                      "completeness",
      -                      "taxesIncluded"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "propertyId": {
      -                "type": "string"
      -              },
      -              "reason": {
      -                "enum": [
      -                  "checked",
      -                  "blocked_dates",
      -                  "minimum_stay",
      -                  "maximum_stay",
      -                  "arrival_departure_rules",
      -                  "advance_notice",
      -                  "capacity",
      -                  "unsupported_host",
      -                  "browser_unconfigured",
      -                  "upstream_unavailable",
      -                  "date_range_unknown"
      -                ],
      -                "type": "string"
      -              },
      -              "roomSelection": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "averageNightlyPrice": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "amount": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      },
      -                      "currency": {
      -                        "pattern": "^[A-Z]{3}$",
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "currency",
      -                      "amount"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "name": {
      -                    "maxLength": 200,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "ratePlan": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "rooms": {
      -                    "const": 1,
      -                    "type": "number"
      -                  }
      -                },
      -                "required": [
      -                  "name",
      -                  "rooms"
      -                ],
      -                "type": "object"
      -              },
      -              "sourceUrl": {
      -                "format": "uri",
      -                "type": "string"
      -              },
      -              "startingNightlyPrice": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "amount": {
      -                    "minimum": 0,
      -                    "type": "number"
      -                  },
      -                  "currency": {
      -                    "pattern": "^[A-Z]{3}$",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "currency",
      -                  "amount"
      -                ],
      -                "type": "object"
      -              },
      -              "terms": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "cancellation": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "freeUntil": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "nonRefundable": {
      -                        "type": "boolean"
      -                      },
      -                      "policyText": {
      -                        "maxLength": 2000,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "refundWindows": {
      -                        "items": {
      -                          "additionalProperties": false,
      -                          "properties": {
      -                            "from": {
      -                              "format": "date-time",
      -                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                              "type": "string"
      -                            },
      -                            "refundPercent": {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "number"
      -                            },
      -                            "until": {
      -                              "format": "date-time",
      -                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "refundPercent"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "maxItems": 20,
      -                        "type": "array"
      -                      }
      -                    },
      -                    "type": "object"
      -                  },
      -                  "payment": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "balanceDue": {
      -                        "additionalProperties": false,
      -                        "properties": {
      -                          "amount": {
      -                            "minimum": 0,
      -                            "type": "number"
      -                          },
      -                          "currency": {
      -                            "pattern": "^[A-Z]{3}$",
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "amount",
      -                          "currency"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "balanceDueAt": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "chargedBy": {
      -                        "enum": [
      -                          "host",
      -                          "booking_engine"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "depositAmount": {
      -                        "additionalProperties": false,
      -                        "properties": {
      -                          "amount": {
      -                            "minimum": 0,
      -                            "type": "number"
      -                          },
      -                          "currency": {
      -                            "pattern": "^[A-Z]{3}$",
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "amount",
      -                          "currency"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "depositDueAt": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "depositPercent": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "number"
      -                      }
      -                    },
      -                    "type": "object"
      -                  },
      -                  "provenance": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "fetchedAt": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "rawSourceField": {
      -                        "maxLength": 200,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "reader": {
      -                        "maxLength": 100,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "reader",
      -                      "rawSourceField",
      -                      "fetchedAt"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "provenance"
      -                ],
      -                "type": "object"
      -              }
      -            },
      -            "required": [
      -              "propertyId",
      -              "arrival",
      -              "departure",
      -              "guests",
      -              "nights",
      -              "availability",
      -              "reason",
      -              "minimumNights",
      -              "price",
      -              "checkedAt",
      -              "expiresAt",
      -              "sourceUrl",
      -              "bookingUrl",
      -              "held"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "request": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "arrival": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "childAges": {
      -            "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      -            "items": {
      -              "maximum": 17,
      -              "minimum": 0,
      -              "type": "integer"
      -            },
      -            "maxItems": 199,
      -            "type": "array"
      -          },
      -          "children": {
      -            "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      -            "maximum": 199,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "currency": {
      -            "enum": [
      -              "USD",
      -              "EUR",
      -              "GBP",
      -              "CRC",
      -              "MXN",
      -              "COP",
      -              "PEN",
      -              "BRL",
      -              "AUD",
      -              "NZD"
      -            ],
      -            "type": "string"
      -          },
      -          "departure": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "execution": {
      -            "description": "Selected-home execution only. Default auto prefers the fast supported reader. browser requests the slower experimental quote-only agent on reviewed Stays sites; unsupported sites return unknown. Search never starts this agent.",
      -            "enum": [
      -              "auto",
      -              "browser"
      -            ],
      -            "type": "string"
      -          },
      -          "guests": {
      -            "maximum": 200,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "id": {
      -            "maxLength": 160,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "arrival",
      -          "departure",
      -          "guests"
      -        ],
      -        "type": "object"
      -      },
      -      "status": {
      -        "enum": [
      -          "ready",
      -          "pending",
      -          "not_checked",
      -          "limited"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "basis",
      -      "status",
      -      "request",
      -      "quote"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "basis": {
      -        "const": "sample",
      -        "type": "string"
      -      },
      -      "diagnostics": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "attemptedStays": {
      -            "maximum": 4,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "reason": {
      -            "description": "Last sampled observation when no dated total was selected. Applies only to attempted stays; blocked samples never establish that the whole window is sold out. Terminal unsupported_host/upstream_unavailable evidence should be explained, not retried unchanged.",
      -            "enum": [
      -              "checked",
      -              "blocked_dates",
      -              "minimum_stay",
      -              "maximum_stay",
      -              "arrival_departure_rules",
      -              "advance_notice",
      -              "capacity",
      -              "unsupported_host",
      -              "browser_unconfigured",
      -              "upstream_unavailable",
      -              "date_range_unknown"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "attemptedStays"
      -        ],
      -        "type": "object"
      -      },
      -      "estimate": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "childAges": {
      -            "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      -            "items": {
      -              "maximum": 17,
      -              "minimum": 0,
      -              "type": "integer"
      -            },
      -            "maxItems": 199,
      -            "type": "array"
      -          },
      -          "children": {
      -            "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      -            "maximum": 199,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "currency": {
      -            "enum": [
      -              "USD",
      -              "EUR",
      -              "GBP",
      -              "CRC",
      -              "MXN",
      -              "COP",
      -              "PEN",
      -              "BRL",
      -              "AUD",
      -              "NZD"
      -            ],
      -            "type": "string"
      -          },
      -          "guests": {
      -            "maximum": 200,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "id": {
      -            "maxLength": 160,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "nights": {
      -            "maximum": 30,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "windowEnd": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "windowStart": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "windowStart",
      -          "windowEnd",
      -          "nights",
      -          "guests"
      -        ],
      -        "type": "object"
      -      },
      -      "quote": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "arrival": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "availability": {
      -                "enum": [
      -                  "available",
      -                  "unavailable",
      -                  "unknown"
      -                ],
      -                "type": "string"
      -              },
      -              "bookingUrl": {
      -                "format": "uri",
      -                "type": "string"
      -              },
      -              "checkedAt": {
      -                "format": "date-time",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              },
      -              "departure": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "expiresAt": {
      -                "format": "date-time",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              },
      -              "guests": {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              "held": {
      -                "const": false,
      -                "type": "boolean"
      -              },
      -              "minimumNights": {
      -                "anyOf": [
      -                  {
      -                    "exclusiveMinimum": 0,
      -                    "maximum": 9007199254740991,
      -                    "type": "integer"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "nights": {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              "partyBasis": {
      -                "const": "all_adults",
      -                "type": "string"
      -              },
      -              "price": {
      -                "anyOf": [
      -                  {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "breakdown": {
      -                        "items": {
      -                          "additionalProperties": false,
      -                          "properties": {
      -                            "amount": {
      -                              "type": "number"
      -                            },
      -                            "label": {
      -                              "maxLength": 160,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "label",
      -                            "amount"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "maxItems": 30,
      -                        "type": "array"
      -                      },
      -                      "completeness": {
      -                        "enum": [
      -                          "total",
      -                          "partial"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "currency": {
      -                        "pattern": "^[A-Z]{3}$",
      -                        "type": "string"
      -                      },
      -                      "taxesIncluded": {
      -                        "anyOf": [
      -                          {
      -                            "type": "boolean"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "total": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      }
      -                    },
      -                    "required": [
      -                      "currency",
      -                      "total",
      -                      "breakdown",
      -                      "completeness",
      -                      "taxesIncluded"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "propertyId": {
      -                "type": "string"
      -              },
      -              "reason": {
      -                "enum": [
      -                  "checked",
      -                  "blocked_dates",
      -                  "minimum_stay",
      -                  "maximum_stay",
      -                  "arrival_departure_rules",
      -                  "advance_notice",
      -                  "capacity",
      -                  "unsupported_host",
      -                  "browser_unconfigured",
      -                  "upstream_unavailable",
      -                  "date_range_unknown"
      -                ],
      -                "type": "string"
      -              },
      -              "roomSelection": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "averageNightlyPrice": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "amount": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      },
      -                      "currency": {
      -                        "pattern": "^[A-Z]{3}$",
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "currency",
      -                      "amount"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "name": {
      -                    "maxLength": 200,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "ratePlan": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "rooms": {
      -                    "const": 1,
      -                    "type": "number"
      -                  }
      -                },
      -                "required": [
      -                  "name",
      -                  "rooms"
      -                ],
      -                "type": "object"
      -              },
      -              "sourceUrl": {
      -                "format": "uri",
      -                "type": "string"
      -              },
      -              "startingNightlyPrice": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "amount": {
      -                    "minimum": 0,
      -                    "type": "number"
      -                  },
      -                  "currency": {
      -                    "pattern": "^[A-Z]{3}$",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "currency",
      -                  "amount"
      -                ],
      -                "type": "object"
      -              },
      -              "terms": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "cancellation": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "freeUntil": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "nonRefundable": {
      -                        "type": "boolean"
      -                      },
      -                      "policyText": {
      -                        "maxLength": 2000,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "refundWindows": {
      -                        "items": {
      -                          "additionalProperties": false,
      -                          "properties": {
      -                            "from": {
      -                              "format": "date-time",
      -                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                              "type": "string"
      -                            },
      -                            "refundPercent": {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "number"
      -                            },
      -                            "until": {
      -                              "format": "date-time",
      -                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "refundPercent"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "maxItems": 20,
      -                        "type": "array"
      -                      }
      -                    },
      -                    "type": "object"
      -                  },
      -                  "payment": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "balanceDue": {
      -                        "additionalProperties": false,
      -                        "properties": {
      -                          "amount": {
      -                            "minimum": 0,
      -                            "type": "number"
      -                          },
      -                          "currency": {
      -                            "pattern": "^[A-Z]{3}$",
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "amount",
      -                          "currency"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "balanceDueAt": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "chargedBy": {
      -                        "enum": [
      -                          "host",
      -                          "booking_engine"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "depositAmount": {
      -                        "additionalProperties": false,
      -                        "properties": {
      -                          "amount": {
      -                            "minimum": 0,
      -                            "type": "number"
      -                          },
      -                          "currency": {
      -                            "pattern": "^[A-Z]{3}$",
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "amount",
      -                          "currency"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "depositDueAt": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "depositPercent": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "number"
      -                      }
      -                    },
      -                    "type": "object"
      -                  },
      -                  "provenance": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "fetchedAt": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "rawSourceField": {
      -                        "maxLength": 200,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "reader": {
      -                        "maxLength": 100,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "reader",
      -                      "rawSourceField",
      -                      "fetchedAt"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "provenance"
      -                ],
      -                "type": "object"
      -              }
      -            },
      -            "required": [
      -              "propertyId",
      -              "arrival",
      -              "departure",
      -              "guests",
      -              "nights",
      -              "availability",
      -              "reason",
      -              "minimumNights",
      -              "price",
      -              "checkedAt",
      -              "expiresAt",
      -              "sourceUrl",
      -              "bookingUrl",
      -              "held"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "request": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "arrival": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "childAges": {
      -            "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      -            "items": {
      -              "maximum": 17,
      -              "minimum": 0,
      -              "type": "integer"
      -            },
      -            "maxItems": 199,
      -            "type": "array"
      -          },
      -          "children": {
      -            "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      -            "maximum": 199,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "currency": {
      -            "enum": [
      -              "USD",
      -              "EUR",
      -              "GBP",
      -              "CRC",
      -              "MXN",
      -              "COP",
      -              "PEN",
      -              "BRL",
      -              "AUD",
      -              "NZD"
      -            ],
      -            "type": "string"
      -          },
      -          "departure": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "execution": {
      -            "description": "Selected-home execution only. Default auto prefers the fast supported reader. browser requests the slower experimental quote-only agent on reviewed Stays sites; unsupported sites return unknown. Search never starts this agent.",
      -            "enum": [
      -              "auto",
      -              "browser"
      -            ],
      -            "type": "string"
      -          },
      -          "guests": {
      -            "maximum": 200,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "id": {
      -            "maxLength": 160,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "arrival",
      -          "departure",
      -          "guests"
      -        ],
      -        "type": "object"
      -      },
      -      "status": {
      -        "enum": [
      -          "ready",
      -          "pending",
      -          "not_checked",
      -          "limited"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "basis",
      -      "status",
      -      "request",
      -      "quote",
      -      "estimate"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "basis": {
      +        "const": "exact",
      +        "type": "string"
      +      },
      +      "quote": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "arrival": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "availability": {
      +                "enum": [
      +                  "available",
      +                  "unavailable",
      +                  "unknown"
      +                ],
      +                "type": "string"
      +              },
      +              "bookingUrl": {
      +                "format": "uri",
      +                "type": "string"
      +              },
      +              "checkedAt": {
      +                "format": "date-time",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                "type": "string"
      +              },
      +              "departure": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "expiresAt": {
      +                "format": "date-time",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                "type": "string"
      +              },
      +              "guests": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "held": {
      +                "const": false,
      +                "type": "boolean"
      +              },
      +              "minimumNights": {
      +                "anyOf": [
      +                  {
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 9007199254740991,
      +                    "type": "integer"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "nights": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "partyBasis": {
      +                "const": "all_adults",
      +                "type": "string"
      +              },
      +              "price": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "breakdown": {
      +                        "items": {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "amount": {
      +                              "type": "number"
      +                            },
      +                            "label": {
      +                              "maxLength": 160,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "label",
      +                            "amount"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "maxItems": 30,
      +                        "type": "array"
      +                      },
      +                      "completeness": {
      +                        "enum": [
      +                          "total",
      +                          "partial"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "currency": {
      +                        "pattern": "^[A-Z]{3}$",
      +                        "type": "string"
      +                      },
      +                      "taxesIncluded": {
      +                        "anyOf": [
      +                          {
      +                            "type": "boolean"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "total": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "currency",
      +                      "total",
      +                      "breakdown",
      +                      "completeness",
      +                      "taxesIncluded"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "propertyId": {
      +                "type": "string"
      +              },
      +              "reason": {
      +                "enum": [
      +                  "checked",
      +                  "blocked_dates",
      +                  "minimum_stay",
      +                  "maximum_stay",
      +                  "arrival_departure_rules",
      +                  "advance_notice",
      +                  "capacity",
      +                  "unsupported_host",
      +                  "browser_unconfigured",
      +                  "upstream_unavailable",
      +                  "date_range_unknown"
      +                ],
      +                "type": "string"
      +              },
      +              "roomSelection": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "averageNightlyPrice": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "amount": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      },
      +                      "currency": {
      +                        "pattern": "^[A-Z]{3}$",
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "currency",
      +                      "amount"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "name": {
      +                    "maxLength": 200,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "ratePlan": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "rooms": {
      +                    "const": 1,
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "name",
      +                  "rooms"
      +                ],
      +                "type": "object"
      +              },
      +              "sourceUrl": {
      +                "format": "uri",
      +                "type": "string"
      +              },
      +              "startingNightlyPrice": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "amount": {
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "currency": {
      +                    "pattern": "^[A-Z]{3}$",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "currency",
      +                  "amount"
      +                ],
      +                "type": "object"
      +              },
      +              "terms": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "cancellation": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "freeUntil": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "nonRefundable": {
      +                        "type": "boolean"
      +                      },
      +                      "policyText": {
      +                        "maxLength": 2000,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "refundWindows": {
      +                        "items": {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "from": {
      +                              "format": "date-time",
      +                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                              "type": "string"
      +                            },
      +                            "refundPercent": {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "number"
      +                            },
      +                            "until": {
      +                              "format": "date-time",
      +                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "refundPercent"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "maxItems": 20,
      +                        "type": "array"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "payment": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "balanceDue": {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "amount": {
      +                            "minimum": 0,
      +                            "type": "number"
      +                          },
      +                          "currency": {
      +                            "pattern": "^[A-Z]{3}$",
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "amount",
      +                          "currency"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "balanceDueAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "chargedBy": {
      +                        "enum": [
      +                          "host",
      +                          "booking_engine"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "depositAmount": {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "amount": {
      +                            "minimum": 0,
      +                            "type": "number"
      +                          },
      +                          "currency": {
      +                            "pattern": "^[A-Z]{3}$",
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "amount",
      +                          "currency"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "depositDueAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "depositPercent": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "provenance": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "fetchedAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "rawSourceField": {
      +                        "maxLength": 200,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "reader": {
      +                        "maxLength": 100,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "reader",
      +                      "rawSourceField",
      +                      "fetchedAt"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "provenance"
      +                ],
      +                "type": "object"
      +              }
      +            },
      +            "required": [
      +              "propertyId",
      +              "arrival",
      +              "departure",
      +              "guests",
      +              "nights",
      +              "availability",
      +              "reason",
      +              "minimumNights",
      +              "price",
      +              "checkedAt",
      +              "expiresAt",
      +              "sourceUrl",
      +              "bookingUrl",
      +              "held"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "request": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "arrival": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "childAges": {
      +            "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      +            "items": {
      +              "maximum": 17,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "maxItems": 199,
      +            "type": "array"
      +          },
      +          "children": {
      +            "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      +            "maximum": 199,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "currency": {
      +            "description": "Preferred ISO 4217 currency, e.g. USD, EUR or NOK. Rough nightly estimates use approximate conversions (USD by default) when a fresh rate is supported; otherwise retain the host currency. Dated quotes depend on host support: always inspect the returned currency. May be supplied without dates for browsing.",
      +            "pattern": "^[A-Z]{3}$",
      +            "type": "string"
      +          },
      +          "departure": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "execution": {
      +            "description": "Selected-home execution only. Default auto prefers the fast supported reader. browser requests the slower experimental quote-only agent on reviewed Stays sites; unsupported sites return unknown. Search never starts this agent.",
      +            "enum": [
      +              "auto",
      +              "browser"
      +            ],
      +            "type": "string"
      +          },
      +          "guests": {
      +            "maximum": 200,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "id": {
      +            "maxLength": 160,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "arrival",
      +          "departure",
      +          "guests"
      +        ],
      +        "type": "object"
      +      },
      +      "status": {
      +        "enum": [
      +          "ready",
      +          "pending",
      +          "not_checked",
      +          "limited"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "basis",
      +      "status",
      +      "request",
      +      "quote"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "basis": {
      +        "const": "sample",
      +        "type": "string"
      +      },
      +      "diagnostics": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "attemptedStays": {
      +            "maximum": 4,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "reason": {
      +            "description": "Last sampled observation when no dated total was selected. Applies only to attempted stays; blocked samples never establish that the whole window is sold out. Terminal unsupported_host/upstream_unavailable evidence should be explained, not retried unchanged.",
      +            "enum": [
      +              "checked",
      +              "blocked_dates",
      +              "minimum_stay",
      +              "maximum_stay",
      +              "arrival_departure_rules",
      +              "advance_notice",
      +              "capacity",
      +              "unsupported_host",
      +              "browser_unconfigured",
      +              "upstream_unavailable",
      +              "date_range_unknown"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "attemptedStays"
      +        ],
      +        "type": "object"
      +      },
      +      "estimate": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "childAges": {
      +            "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      +            "items": {
      +              "maximum": 17,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "maxItems": 199,
      +            "type": "array"
      +          },
      +          "children": {
      +            "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      +            "maximum": 199,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "currency": {
      +            "description": "Preferred ISO 4217 currency, e.g. USD, EUR or NOK. Rough nightly estimates use approximate conversions (USD by default) when a fresh rate is supported; otherwise retain the host currency. Dated quotes depend on host support: always inspect the returned currency. May be supplied without dates for browsing.",
      +            "pattern": "^[A-Z]{3}$",
      +            "type": "string"
      +          },
      +          "guests": {
      +            "maximum": 200,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "id": {
      +            "maxLength": 160,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "nights": {
      +            "maximum": 30,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "windowEnd": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "windowStart": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "windowStart",
      +          "windowEnd",
      +          "nights",
      +          "guests"
      +        ],
      +        "type": "object"
      +      },
      +      "quote": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "arrival": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "availability": {
      +                "enum": [
      +                  "available",
      +                  "unavailable",
      +                  "unknown"
      +                ],
      +                "type": "string"
      +              },
      +              "bookingUrl": {
      +                "format": "uri",
      +                "type": "string"
      +              },
      +              "checkedAt": {
      +                "format": "date-time",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                "type": "string"
      +              },
      +              "departure": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "expiresAt": {
      +                "format": "date-time",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                "type": "string"
      +              },
      +              "guests": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "held": {
      +                "const": false,
      +                "type": "boolean"
      +              },
      +              "minimumNights": {
      +                "anyOf": [
      +                  {
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 9007199254740991,
      +                    "type": "integer"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "nights": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "partyBasis": {
      +                "const": "all_adults",
      +                "type": "string"
      +              },
      +              "price": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "breakdown": {
      +                        "items": {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "amount": {
      +                              "type": "number"
      +                            },
      +                            "label": {
      +                              "maxLength": 160,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "label",
      +                            "amount"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "maxItems": 30,
      +                        "type": "array"
      +                      },
      +                      "completeness": {
      +                        "enum": [
      +                          "total",
      +                          "partial"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "currency": {
      +                        "pattern": "^[A-Z]{3}$",
      +                        "type": "string"
      +                      },
      +                      "taxesIncluded": {
      +                        "anyOf": [
      +                          {
      +                            "type": "boolean"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "total": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "currency",
      +                      "total",
      +                      "breakdown",
      +                      "completeness",
      +                      "taxesIncluded"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "propertyId": {
      +                "type": "string"
      +              },
      +              "reason": {
      +                "enum": [
      +                  "checked",
      +                  "blocked_dates",
      +                  "minimum_stay",
      +                  "maximum_stay",
      +                  "arrival_departure_rules",
      +                  "advance_notice",
      +                  "capacity",
      +                  "unsupported_host",
      +                  "browser_unconfigured",
      +                  "upstream_unavailable",
      +                  "date_range_unknown"
      +                ],
      +                "type": "string"
      +              },
      +              "roomSelection": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "averageNightlyPrice": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "amount": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      },
      +                      "currency": {
      +                        "pattern": "^[A-Z]{3}$",
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "currency",
      +                      "amount"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "name": {
      +                    "maxLength": 200,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "ratePlan": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "rooms": {
      +                    "const": 1,
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "name",
      +                  "rooms"
      +                ],
      +                "type": "object"
      +              },
      +              "sourceUrl": {
      +                "format": "uri",
      +                "type": "string"
      +              },
      +              "startingNightlyPrice": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "amount": {
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "currency": {
      +                    "pattern": "^[A-Z]{3}$",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "currency",
      +                  "amount"
      +                ],
      +                "type": "object"
      +              },
      +              "terms": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "cancellation": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "freeUntil": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "nonRefundable": {
      +                        "type": "boolean"
      +                      },
      +                      "policyText": {
      +                        "maxLength": 2000,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "refundWindows": {
      +                        "items": {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "from": {
      +                              "format": "date-time",
      +                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                              "type": "string"
      +                            },
      +                            "refundPercent": {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "number"
      +                            },
      +                            "until": {
      +                              "format": "date-time",
      +                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "refundPercent"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "maxItems": 20,
      +                        "type": "array"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "payment": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "balanceDue": {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "amount": {
      +                            "minimum": 0,
      +                            "type": "number"
      +                          },
      +                          "currency": {
      +                            "pattern": "^[A-Z]{3}$",
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "amount",
      +                          "currency"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "balanceDueAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "chargedBy": {
      +                        "enum": [
      +                          "host",
      +                          "booking_engine"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "depositAmount": {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "amount": {
      +                            "minimum": 0,
      +                            "type": "number"
      +                          },
      +                          "currency": {
      +                            "pattern": "^[A-Z]{3}$",
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "amount",
      +                          "currency"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "depositDueAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "depositPercent": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "provenance": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "fetchedAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "rawSourceField": {
      +                        "maxLength": 200,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "reader": {
      +                        "maxLength": 100,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "reader",
      +                      "rawSourceField",
      +                      "fetchedAt"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "provenance"
      +                ],
      +                "type": "object"
      +              }
      +            },
      +            "required": [
      +              "propertyId",
      +              "arrival",
      +              "departure",
      +              "guests",
      +              "nights",
      +              "availability",
      +              "reason",
      +              "minimumNights",
      +              "price",
      +              "checkedAt",
      +              "expiresAt",
      +              "sourceUrl",
      +              "bookingUrl",
      +              "held"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "request": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "arrival": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "childAges": {
      +            "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      +            "items": {
      +              "maximum": 17,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "maxItems": 199,
      +            "type": "array"
      +          },
      +          "children": {
      +            "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      +            "maximum": 199,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "currency": {
      +            "description": "Preferred ISO 4217 currency, e.g. USD, EUR or NOK. Rough nightly estimates use approximate conversions (USD by default) when a fresh rate is supported; otherwise retain the host currency. Dated quotes depend on host support: always inspect the returned currency. May be supplied without dates for browsing.",
      +            "pattern": "^[A-Z]{3}$",
      +            "type": "string"
      +          },
      +          "departure": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "execution": {
      +            "description": "Selected-home execution only. Default auto prefers the fast supported reader. browser requests the slower experimental quote-only agent on reviewed Stays sites; unsupported sites return unknown. Search never starts this agent.",
      +            "enum": [
      +              "auto",
      +              "browser"
      +            ],
      +            "type": "string"
      +          },
      +          "guests": {
      +            "maximum": 200,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "id": {
      +            "maxLength": 160,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "arrival",
      +          "departure",
      +          "guests"
      +        ],
      +        "type": "object"
      +      },
      +      "status": {
      +        "enum": [
      +          "ready",
      +          "pending",
      +          "not_checked",
      +          "limited"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "basis",
      +      "status",
      +      "request",
      +      "quote",
      +      "estimate"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed2 schema fields changed
    • changedInput schema / properties / searchContext / properties / currency / enum
      Previous value: -[
      -  "USD",
      -  "EUR",
      -  "GBP",
      -  "CRC",
      -  "MXN",
      -  "COP",
      -  "PEN",
      -  "BRL",
      -  "AUD"
      -]New value: +[
      +  "USD",
      +  "EUR",
      +  "GBP",
      +  "CRC",
      +  "MXN",
      +  "COP",
      +  "PEN",
      +  "BRL",
      +  "AUD",
      +  "NZD"
      +]
    • changedOutput schema / properties / properties / items / properties / stayQuote / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "basis": {
      -        "const": "exact",
      -        "type": "string"
      -      },
      -      "quote": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "arrival": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "availability": {
      -                "enum": [
      -                  "available",
      -                  "unavailable",
      -                  "unknown"
      -                ],
      -                "type": "string"
      -              },
      -              "bookingUrl": {
      -                "format": "uri",
      -                "type": "string"
      -              },
      -              "checkedAt": {
      -                "format": "date-time",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              },
      -              "departure": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "expiresAt": {
      -                "format": "date-time",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              },
      -              "guests": {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              "held": {
      -                "const": false,
      -                "type": "boolean"
      -              },
      -              "minimumNights": {
      -                "anyOf": [
      -                  {
      -                    "exclusiveMinimum": 0,
      -                    "maximum": 9007199254740991,
      -                    "type": "integer"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "nights": {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              "partyBasis": {
      -                "const": "all_adults",
      -                "type": "string"
      -              },
      -              "price": {
      -                "anyOf": [
      -                  {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "breakdown": {
      -                        "items": {
      -                          "additionalProperties": false,
      -                          "properties": {
      -                            "amount": {
      -                              "type": "number"
      -                            },
      -                            "label": {
      -                              "maxLength": 160,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "label",
      -                            "amount"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "maxItems": 30,
      -                        "type": "array"
      -                      },
      -                      "completeness": {
      -                        "enum": [
      -                          "total",
      -                          "partial"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "currency": {
      -                        "pattern": "^[A-Z]{3}$",
      -                        "type": "string"
      -                      },
      -                      "taxesIncluded": {
      -                        "anyOf": [
      -                          {
      -                            "type": "boolean"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "total": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      }
      -                    },
      -                    "required": [
      -                      "currency",
      -                      "total",
      -                      "breakdown",
      -                      "completeness",
      -                      "taxesIncluded"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "propertyId": {
      -                "type": "string"
      -              },
      -              "reason": {
      -                "enum": [
      -                  "checked",
      -                  "blocked_dates",
      -                  "minimum_stay",
      -                  "maximum_stay",
      -                  "arrival_departure_rules",
      -                  "advance_notice",
      -                  "capacity",
      -                  "unsupported_host",
      -                  "browser_unconfigured",
      -                  "upstream_unavailable",
      -                  "date_range_unknown"
      -                ],
      -                "type": "string"
      -              },
      -              "roomSelection": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "averageNightlyPrice": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "amount": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      },
      -                      "currency": {
      -                        "pattern": "^[A-Z]{3}$",
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "currency",
      -                      "amount"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "name": {
      -                    "maxLength": 200,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "ratePlan": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "rooms": {
      -                    "const": 1,
      -                    "type": "number"
      -                  }
      -                },
      -                "required": [
      -                  "name",
      -                  "rooms"
      -                ],
      -                "type": "object"
      -              },
      -              "sourceUrl": {
      -                "format": "uri",
      -                "type": "string"
      -              },
      -              "startingNightlyPrice": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "amount": {
      -                    "minimum": 0,
      -                    "type": "number"
      -                  },
      -                  "currency": {
      -                    "pattern": "^[A-Z]{3}$",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "currency",
      -                  "amount"
      -                ],
      -                "type": "object"
      -              },
      -              "terms": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "cancellation": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "freeUntil": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "nonRefundable": {
      -                        "type": "boolean"
      -                      },
      -                      "policyText": {
      -                        "maxLength": 2000,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "refundWindows": {
      -                        "items": {
      -                          "additionalProperties": false,
      -                          "properties": {
      -                            "from": {
      -                              "format": "date-time",
      -                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                              "type": "string"
      -                            },
      -                            "refundPercent": {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "number"
      -                            },
      -                            "until": {
      -                              "format": "date-time",
      -                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "refundPercent"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "maxItems": 20,
      -                        "type": "array"
      -                      }
      -                    },
      -                    "type": "object"
      -                  },
      -                  "payment": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "balanceDue": {
      -                        "additionalProperties": false,
      -                        "properties": {
      -                          "amount": {
      -                            "minimum": 0,
      -                            "type": "number"
      -                          },
      -                          "currency": {
      -                            "pattern": "^[A-Z]{3}$",
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "amount",
      -                          "currency"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "balanceDueAt": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "chargedBy": {
      -                        "enum": [
      -                          "host",
      -                          "booking_engine"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "depositAmount": {
      -                        "additionalProperties": false,
      -                        "properties": {
      -                          "amount": {
      -                            "minimum": 0,
      -                            "type": "number"
      -                          },
      -                          "currency": {
      -                            "pattern": "^[A-Z]{3}$",
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "amount",
      -                          "currency"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "depositDueAt": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "depositPercent": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "number"
      -                      }
      -                    },
      -                    "type": "object"
      -                  },
      -                  "provenance": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "fetchedAt": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "rawSourceField": {
      -                        "maxLength": 200,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "reader": {
      -                        "maxLength": 100,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "reader",
      -                      "rawSourceField",
      -                      "fetchedAt"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "provenance"
      -                ],
      -                "type": "object"
      -              }
      -            },
      -            "required": [
      -              "propertyId",
      -              "arrival",
      -              "departure",
      -              "guests",
      -              "nights",
      -              "availability",
      -              "reason",
      -              "minimumNights",
      -              "price",
      -              "checkedAt",
      -              "expiresAt",
      -              "sourceUrl",
      -              "bookingUrl",
      -              "held"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "request": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "arrival": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "childAges": {
      -            "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      -            "items": {
      -              "maximum": 17,
      -              "minimum": 0,
      -              "type": "integer"
      -            },
      -            "maxItems": 199,
      -            "type": "array"
      -          },
      -          "children": {
      -            "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      -            "maximum": 199,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "currency": {
      -            "enum": [
      -              "USD",
      -              "EUR",
      -              "GBP",
      -              "CRC",
      -              "MXN",
      -              "COP",
      -              "PEN",
      -              "BRL",
      -              "AUD"
      -            ],
      -            "type": "string"
      -          },
      -          "departure": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "execution": {
      -            "description": "Selected-home execution only. Default auto prefers the fast supported reader. browser requests the slower experimental quote-only agent on reviewed Stays sites; unsupported sites return unknown. Search never starts this agent.",
      -            "enum": [
      -              "auto",
      -              "browser"
      -            ],
      -            "type": "string"
      -          },
      -          "guests": {
      -            "maximum": 200,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "id": {
      -            "maxLength": 160,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "arrival",
      -          "departure",
      -          "guests"
      -        ],
      -        "type": "object"
      -      },
      -      "status": {
      -        "enum": [
      -          "ready",
      -          "pending",
      -          "not_checked",
      -          "limited"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "basis",
      -      "status",
      -      "request",
      -      "quote"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "basis": {
      -        "const": "sample",
      -        "type": "string"
      -      },
      -      "diagnostics": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "attemptedStays": {
      -            "maximum": 4,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "reason": {
      -            "description": "Last sampled observation when no dated total was selected. Applies only to attempted stays; blocked samples never establish that the whole window is sold out. Terminal unsupported_host/upstream_unavailable evidence should be explained, not retried unchanged.",
      -            "enum": [
      -              "checked",
      -              "blocked_dates",
      -              "minimum_stay",
      -              "maximum_stay",
      -              "arrival_departure_rules",
      -              "advance_notice",
      -              "capacity",
      -              "unsupported_host",
      -              "browser_unconfigured",
      -              "upstream_unavailable",
      -              "date_range_unknown"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "attemptedStays"
      -        ],
      -        "type": "object"
      -      },
      -      "estimate": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "childAges": {
      -            "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      -            "items": {
      -              "maximum": 17,
      -              "minimum": 0,
      -              "type": "integer"
      -            },
      -            "maxItems": 199,
      -            "type": "array"
      -          },
      -          "children": {
      -            "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      -            "maximum": 199,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "currency": {
      -            "enum": [
      -              "USD",
      -              "EUR",
      -              "GBP",
      -              "CRC",
      -              "MXN",
      -              "COP",
      -              "PEN",
      -              "BRL",
      -              "AUD"
      -            ],
      -            "type": "string"
      -          },
      -          "guests": {
      -            "maximum": 200,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "id": {
      -            "maxLength": 160,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "nights": {
      -            "maximum": 30,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "windowEnd": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "windowStart": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "windowStart",
      -          "windowEnd",
      -          "nights",
      -          "guests"
      -        ],
      -        "type": "object"
      -      },
      -      "quote": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "arrival": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "availability": {
      -                "enum": [
      -                  "available",
      -                  "unavailable",
      -                  "unknown"
      -                ],
      -                "type": "string"
      -              },
      -              "bookingUrl": {
      -                "format": "uri",
      -                "type": "string"
      -              },
      -              "checkedAt": {
      -                "format": "date-time",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              },
      -              "departure": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "expiresAt": {
      -                "format": "date-time",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              },
      -              "guests": {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              "held": {
      -                "const": false,
      -                "type": "boolean"
      -              },
      -              "minimumNights": {
      -                "anyOf": [
      -                  {
      -                    "exclusiveMinimum": 0,
      -                    "maximum": 9007199254740991,
      -                    "type": "integer"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "nights": {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              "partyBasis": {
      -                "const": "all_adults",
      -                "type": "string"
      -              },
      -              "price": {
      -                "anyOf": [
      -                  {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "breakdown": {
      -                        "items": {
      -                          "additionalProperties": false,
      -                          "properties": {
      -                            "amount": {
      -                              "type": "number"
      -                            },
      -                            "label": {
      -                              "maxLength": 160,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "label",
      -                            "amount"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "maxItems": 30,
      -                        "type": "array"
      -                      },
      -                      "completeness": {
      -                        "enum": [
      -                          "total",
      -                          "partial"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "currency": {
      -                        "pattern": "^[A-Z]{3}$",
      -                        "type": "string"
      -                      },
      -                      "taxesIncluded": {
      -                        "anyOf": [
      -                          {
      -                            "type": "boolean"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "total": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      }
      -                    },
      -                    "required": [
      -                      "currency",
      -                      "total",
      -                      "breakdown",
      -                      "completeness",
      -                      "taxesIncluded"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "propertyId": {
      -                "type": "string"
      -              },
      -              "reason": {
      -                "enum": [
      -                  "checked",
      -                  "blocked_dates",
      -                  "minimum_stay",
      -                  "maximum_stay",
      -                  "arrival_departure_rules",
      -                  "advance_notice",
      -                  "capacity",
      -                  "unsupported_host",
      -                  "browser_unconfigured",
      -                  "upstream_unavailable",
      -                  "date_range_unknown"
      -                ],
      -                "type": "string"
      -              },
      -              "roomSelection": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "averageNightlyPrice": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "amount": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      },
      -                      "currency": {
      -                        "pattern": "^[A-Z]{3}$",
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "currency",
      -                      "amount"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "name": {
      -                    "maxLength": 200,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "ratePlan": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "rooms": {
      -                    "const": 1,
      -                    "type": "number"
      -                  }
      -                },
      -                "required": [
      -                  "name",
      -                  "rooms"
      -                ],
      -                "type": "object"
      -              },
      -              "sourceUrl": {
      -                "format": "uri",
      -                "type": "string"
      -              },
      -              "startingNightlyPrice": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "amount": {
      -                    "minimum": 0,
      -                    "type": "number"
      -                  },
      -                  "currency": {
      -                    "pattern": "^[A-Z]{3}$",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "currency",
      -                  "amount"
      -                ],
      -                "type": "object"
      -              },
      -              "terms": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "cancellation": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "freeUntil": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "nonRefundable": {
      -                        "type": "boolean"
      -                      },
      -                      "policyText": {
      -                        "maxLength": 2000,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "refundWindows": {
      -                        "items": {
      -                          "additionalProperties": false,
      -                          "properties": {
      -                            "from": {
      -                              "format": "date-time",
      -                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                              "type": "string"
      -                            },
      -                            "refundPercent": {
      -                              "maximum": 100,
      -                              "minimum": 0,
      -                              "type": "number"
      -                            },
      -                            "until": {
      -                              "format": "date-time",
      -                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "refundPercent"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "maxItems": 20,
      -                        "type": "array"
      -                      }
      -                    },
      -                    "type": "object"
      -                  },
      -                  "payment": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "balanceDue": {
      -                        "additionalProperties": false,
      -                        "properties": {
      -                          "amount": {
      -                            "minimum": 0,
      -                            "type": "number"
      -                          },
      -                          "currency": {
      -                            "pattern": "^[A-Z]{3}$",
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "amount",
      -                          "currency"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "balanceDueAt": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "chargedBy": {
      -                        "enum": [
      -                          "host",
      -                          "booking_engine"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "depositAmount": {
      -                        "additionalProperties": false,
      -                        "properties": {
      -                          "amount": {
      -                            "minimum": 0,
      -                            "type": "number"
      -                          },
      -                          "currency": {
      -                            "pattern": "^[A-Z]{3}$",
      -                            "type": "string"
      -                          }
      -                        },
      -                        "required": [
      -                          "amount",
      -                          "currency"
      -                        ],
      -                        "type": "object"
      -                      },
      -                      "depositDueAt": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "depositPercent": {
      -                        "maximum": 100,
      -                        "minimum": 0,
      -                        "type": "number"
      -                      }
      -                    },
      -                    "type": "object"
      -                  },
      -                  "provenance": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "fetchedAt": {
      -                        "format": "date-time",
      -                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                        "type": "string"
      -                      },
      -                      "rawSourceField": {
      -                        "maxLength": 200,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      },
      -                      "reader": {
      -                        "maxLength": 100,
      -                        "minLength": 1,
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "reader",
      -                      "rawSourceField",
      -                      "fetchedAt"
      -                    ],
      -                    "type": "object"
      -                  }
      -                },
      -                "required": [
      -                  "provenance"
      -                ],
      -                "type": "object"
      -              }
      -            },
      -            "required": [
      -              "propertyId",
      -              "arrival",
      -              "departure",
      -              "guests",
      -              "nights",
      -              "availability",
      -              "reason",
      -              "minimumNights",
      -              "price",
      -              "checkedAt",
      -              "expiresAt",
      -              "sourceUrl",
      -              "bookingUrl",
      -              "held"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "request": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "arrival": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "childAges": {
      -            "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      -            "items": {
      -              "maximum": 17,
      -              "minimum": 0,
      -              "type": "integer"
      -            },
      -            "maxItems": 199,
      -            "type": "array"
      -          },
      -          "children": {
      -            "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      -            "maximum": 199,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "currency": {
      -            "enum": [
      -              "USD",
      -              "EUR",
      -              "GBP",
      -              "CRC",
      -              "MXN",
      -              "COP",
      -              "PEN",
      -              "BRL",
      -              "AUD"
      -            ],
      -            "type": "string"
      -          },
      -          "departure": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "execution": {
      -            "description": "Selected-home execution only. Default auto prefers the fast supported reader. browser requests the slower experimental quote-only agent on reviewed Stays sites; unsupported sites return unknown. Search never starts this agent.",
      -            "enum": [
      -              "auto",
      -              "browser"
      -            ],
      -            "type": "string"
      -          },
      -          "guests": {
      -            "maximum": 200,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "id": {
      -            "maxLength": 160,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "arrival",
      -          "departure",
      -          "guests"
      -        ],
      -        "type": "object"
      -      },
      -      "status": {
      -        "enum": [
      -          "ready",
      -          "pending",
      -          "not_checked",
      -          "limited"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "basis",
      -      "status",
      -      "request",
      -      "quote",
      -      "estimate"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "basis": {
      +        "const": "exact",
      +        "type": "string"
      +      },
      +      "quote": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "arrival": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "availability": {
      +                "enum": [
      +                  "available",
      +                  "unavailable",
      +                  "unknown"
      +                ],
      +                "type": "string"
      +              },
      +              "bookingUrl": {
      +                "format": "uri",
      +                "type": "string"
      +              },
      +              "checkedAt": {
      +                "format": "date-time",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                "type": "string"
      +              },
      +              "departure": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "expiresAt": {
      +                "format": "date-time",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                "type": "string"
      +              },
      +              "guests": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "held": {
      +                "const": false,
      +                "type": "boolean"
      +              },
      +              "minimumNights": {
      +                "anyOf": [
      +                  {
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 9007199254740991,
      +                    "type": "integer"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "nights": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "partyBasis": {
      +                "const": "all_adults",
      +                "type": "string"
      +              },
      +              "price": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "breakdown": {
      +                        "items": {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "amount": {
      +                              "type": "number"
      +                            },
      +                            "label": {
      +                              "maxLength": 160,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "label",
      +                            "amount"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "maxItems": 30,
      +                        "type": "array"
      +                      },
      +                      "completeness": {
      +                        "enum": [
      +                          "total",
      +                          "partial"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "currency": {
      +                        "pattern": "^[A-Z]{3}$",
      +                        "type": "string"
      +                      },
      +                      "taxesIncluded": {
      +                        "anyOf": [
      +                          {
      +                            "type": "boolean"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "total": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "currency",
      +                      "total",
      +                      "breakdown",
      +                      "completeness",
      +                      "taxesIncluded"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "propertyId": {
      +                "type": "string"
      +              },
      +              "reason": {
      +                "enum": [
      +                  "checked",
      +                  "blocked_dates",
      +                  "minimum_stay",
      +                  "maximum_stay",
      +                  "arrival_departure_rules",
      +                  "advance_notice",
      +                  "capacity",
      +                  "unsupported_host",
      +                  "browser_unconfigured",
      +                  "upstream_unavailable",
      +                  "date_range_unknown"
      +                ],
      +                "type": "string"
      +              },
      +              "roomSelection": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "averageNightlyPrice": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "amount": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      },
      +                      "currency": {
      +                        "pattern": "^[A-Z]{3}$",
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "currency",
      +                      "amount"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "name": {
      +                    "maxLength": 200,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "ratePlan": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "rooms": {
      +                    "const": 1,
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "name",
      +                  "rooms"
      +                ],
      +                "type": "object"
      +              },
      +              "sourceUrl": {
      +                "format": "uri",
      +                "type": "string"
      +              },
      +              "startingNightlyPrice": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "amount": {
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "currency": {
      +                    "pattern": "^[A-Z]{3}$",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "currency",
      +                  "amount"
      +                ],
      +                "type": "object"
      +              },
      +              "terms": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "cancellation": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "freeUntil": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "nonRefundable": {
      +                        "type": "boolean"
      +                      },
      +                      "policyText": {
      +                        "maxLength": 2000,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "refundWindows": {
      +                        "items": {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "from": {
      +                              "format": "date-time",
      +                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                              "type": "string"
      +                            },
      +                            "refundPercent": {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "number"
      +                            },
      +                            "until": {
      +                              "format": "date-time",
      +                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "refundPercent"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "maxItems": 20,
      +                        "type": "array"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "payment": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "balanceDue": {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "amount": {
      +                            "minimum": 0,
      +                            "type": "number"
      +                          },
      +                          "currency": {
      +                            "pattern": "^[A-Z]{3}$",
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "amount",
      +                          "currency"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "balanceDueAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "chargedBy": {
      +                        "enum": [
      +                          "host",
      +                          "booking_engine"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "depositAmount": {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "amount": {
      +                            "minimum": 0,
      +                            "type": "number"
      +                          },
      +                          "currency": {
      +                            "pattern": "^[A-Z]{3}$",
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "amount",
      +                          "currency"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "depositDueAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "depositPercent": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "provenance": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "fetchedAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "rawSourceField": {
      +                        "maxLength": 200,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "reader": {
      +                        "maxLength": 100,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "reader",
      +                      "rawSourceField",
      +                      "fetchedAt"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "provenance"
      +                ],
      +                "type": "object"
      +              }
      +            },
      +            "required": [
      +              "propertyId",
      +              "arrival",
      +              "departure",
      +              "guests",
      +              "nights",
      +              "availability",
      +              "reason",
      +              "minimumNights",
      +              "price",
      +              "checkedAt",
      +              "expiresAt",
      +              "sourceUrl",
      +              "bookingUrl",
      +              "held"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "request": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "arrival": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "childAges": {
      +            "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      +            "items": {
      +              "maximum": 17,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "maxItems": 199,
      +            "type": "array"
      +          },
      +          "children": {
      +            "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      +            "maximum": 199,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "currency": {
      +            "enum": [
      +              "USD",
      +              "EUR",
      +              "GBP",
      +              "CRC",
      +              "MXN",
      +              "COP",
      +              "PEN",
      +              "BRL",
      +              "AUD",
      +              "NZD"
      +            ],
      +            "type": "string"
      +          },
      +          "departure": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "execution": {
      +            "description": "Selected-home execution only. Default auto prefers the fast supported reader. browser requests the slower experimental quote-only agent on reviewed Stays sites; unsupported sites return unknown. Search never starts this agent.",
      +            "enum": [
      +              "auto",
      +              "browser"
      +            ],
      +            "type": "string"
      +          },
      +          "guests": {
      +            "maximum": 200,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "id": {
      +            "maxLength": 160,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "arrival",
      +          "departure",
      +          "guests"
      +        ],
      +        "type": "object"
      +      },
      +      "status": {
      +        "enum": [
      +          "ready",
      +          "pending",
      +          "not_checked",
      +          "limited"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "basis",
      +      "status",
      +      "request",
      +      "quote"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "basis": {
      +        "const": "sample",
      +        "type": "string"
      +      },
      +      "diagnostics": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "attemptedStays": {
      +            "maximum": 4,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "reason": {
      +            "description": "Last sampled observation when no dated total was selected. Applies only to attempted stays; blocked samples never establish that the whole window is sold out. Terminal unsupported_host/upstream_unavailable evidence should be explained, not retried unchanged.",
      +            "enum": [
      +              "checked",
      +              "blocked_dates",
      +              "minimum_stay",
      +              "maximum_stay",
      +              "arrival_departure_rules",
      +              "advance_notice",
      +              "capacity",
      +              "unsupported_host",
      +              "browser_unconfigured",
      +              "upstream_unavailable",
      +              "date_range_unknown"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "attemptedStays"
      +        ],
      +        "type": "object"
      +      },
      +      "estimate": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "childAges": {
      +            "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      +            "items": {
      +              "maximum": 17,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "maxItems": 199,
      +            "type": "array"
      +          },
      +          "children": {
      +            "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      +            "maximum": 199,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "currency": {
      +            "enum": [
      +              "USD",
      +              "EUR",
      +              "GBP",
      +              "CRC",
      +              "MXN",
      +              "COP",
      +              "PEN",
      +              "BRL",
      +              "AUD",
      +              "NZD"
      +            ],
      +            "type": "string"
      +          },
      +          "guests": {
      +            "maximum": 200,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "id": {
      +            "maxLength": 160,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "nights": {
      +            "maximum": 30,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "windowEnd": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "windowStart": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "windowStart",
      +          "windowEnd",
      +          "nights",
      +          "guests"
      +        ],
      +        "type": "object"
      +      },
      +      "quote": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "arrival": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "availability": {
      +                "enum": [
      +                  "available",
      +                  "unavailable",
      +                  "unknown"
      +                ],
      +                "type": "string"
      +              },
      +              "bookingUrl": {
      +                "format": "uri",
      +                "type": "string"
      +              },
      +              "checkedAt": {
      +                "format": "date-time",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                "type": "string"
      +              },
      +              "departure": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "expiresAt": {
      +                "format": "date-time",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                "type": "string"
      +              },
      +              "guests": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "held": {
      +                "const": false,
      +                "type": "boolean"
      +              },
      +              "minimumNights": {
      +                "anyOf": [
      +                  {
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 9007199254740991,
      +                    "type": "integer"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "nights": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "partyBasis": {
      +                "const": "all_adults",
      +                "type": "string"
      +              },
      +              "price": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "breakdown": {
      +                        "items": {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "amount": {
      +                              "type": "number"
      +                            },
      +                            "label": {
      +                              "maxLength": 160,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "label",
      +                            "amount"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "maxItems": 30,
      +                        "type": "array"
      +                      },
      +                      "completeness": {
      +                        "enum": [
      +                          "total",
      +                          "partial"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "currency": {
      +                        "pattern": "^[A-Z]{3}$",
      +                        "type": "string"
      +                      },
      +                      "taxesIncluded": {
      +                        "anyOf": [
      +                          {
      +                            "type": "boolean"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "total": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "currency",
      +                      "total",
      +                      "breakdown",
      +                      "completeness",
      +                      "taxesIncluded"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "propertyId": {
      +                "type": "string"
      +              },
      +              "reason": {
      +                "enum": [
      +                  "checked",
      +                  "blocked_dates",
      +                  "minimum_stay",
      +                  "maximum_stay",
      +                  "arrival_departure_rules",
      +                  "advance_notice",
      +                  "capacity",
      +                  "unsupported_host",
      +                  "browser_unconfigured",
      +                  "upstream_unavailable",
      +                  "date_range_unknown"
      +                ],
      +                "type": "string"
      +              },
      +              "roomSelection": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "averageNightlyPrice": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "amount": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      },
      +                      "currency": {
      +                        "pattern": "^[A-Z]{3}$",
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "currency",
      +                      "amount"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "name": {
      +                    "maxLength": 200,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "ratePlan": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "rooms": {
      +                    "const": 1,
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "name",
      +                  "rooms"
      +                ],
      +                "type": "object"
      +              },
      +              "sourceUrl": {
      +                "format": "uri",
      +                "type": "string"
      +              },
      +              "startingNightlyPrice": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "amount": {
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "currency": {
      +                    "pattern": "^[A-Z]{3}$",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "currency",
      +                  "amount"
      +                ],
      +                "type": "object"
      +              },
      +              "terms": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "cancellation": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "freeUntil": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "nonRefundable": {
      +                        "type": "boolean"
      +                      },
      +                      "policyText": {
      +                        "maxLength": 2000,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "refundWindows": {
      +                        "items": {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "from": {
      +                              "format": "date-time",
      +                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                              "type": "string"
      +                            },
      +                            "refundPercent": {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "number"
      +                            },
      +                            "until": {
      +                              "format": "date-time",
      +                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "refundPercent"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "maxItems": 20,
      +                        "type": "array"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "payment": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "balanceDue": {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "amount": {
      +                            "minimum": 0,
      +                            "type": "number"
      +                          },
      +                          "currency": {
      +                            "pattern": "^[A-Z]{3}$",
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "amount",
      +                          "currency"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "balanceDueAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "chargedBy": {
      +                        "enum": [
      +                          "host",
      +                          "booking_engine"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "depositAmount": {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "amount": {
      +                            "minimum": 0,
      +                            "type": "number"
      +                          },
      +                          "currency": {
      +                            "pattern": "^[A-Z]{3}$",
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "amount",
      +                          "currency"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "depositDueAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "depositPercent": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "provenance": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "fetchedAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "rawSourceField": {
      +                        "maxLength": 200,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "reader": {
      +                        "maxLength": 100,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "reader",
      +                      "rawSourceField",
      +                      "fetchedAt"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "provenance"
      +                ],
      +                "type": "object"
      +              }
      +            },
      +            "required": [
      +              "propertyId",
      +              "arrival",
      +              "departure",
      +              "guests",
      +              "nights",
      +              "availability",
      +              "reason",
      +              "minimumNights",
      +              "price",
      +              "checkedAt",
      +              "expiresAt",
      +              "sourceUrl",
      +              "bookingUrl",
      +              "held"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "request": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "arrival": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "childAges": {
      +            "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      +            "items": {
      +              "maximum": 17,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "maxItems": 199,
      +            "type": "array"
      +          },
      +          "children": {
      +            "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      +            "maximum": 199,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "currency": {
      +            "enum": [
      +              "USD",
      +              "EUR",
      +              "GBP",
      +              "CRC",
      +              "MXN",
      +              "COP",
      +              "PEN",
      +              "BRL",
      +              "AUD",
      +              "NZD"
      +            ],
      +            "type": "string"
      +          },
      +          "departure": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "execution": {
      +            "description": "Selected-home execution only. Default auto prefers the fast supported reader. browser requests the slower experimental quote-only agent on reviewed Stays sites; unsupported sites return unknown. Search never starts this agent.",
      +            "enum": [
      +              "auto",
      +              "browser"
      +            ],
      +            "type": "string"
      +          },
      +          "guests": {
      +            "maximum": 200,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "id": {
      +            "maxLength": 160,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "arrival",
      +          "departure",
      +          "guests"
      +        ],
      +        "type": "object"
      +      },
      +      "status": {
      +        "enum": [
      +          "ready",
      +          "pending",
      +          "not_checked",
      +          "limited"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "basis",
      +      "status",
      +      "request",
      +      "quote",
      +      "estimate"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed4 schema fields changed
    • addedInput schema / properties / searchContext / properties / childAges
      Added value: +{
      +  "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      +  "items": {
      +    "maximum": 17,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  "maxItems": 199,
      +  "type": "array"
      +}
    • addedInput schema / properties / searchContext / properties / children
      Added value: +{
      +  "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      +  "maximum": 199,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • changedInput schema / properties / searchContext / properties / guests / description
      Previous value: -"Rental minimum sleeping capacity; for boutique hotels, actual adults for a one-room quote, with occupancy unconfirmed until that quote succeeds."New value: +"Total occupancy, adults plus children. Rentals: minimum sleeping capacity. Boutique hotels: everyone in one room for a one-room quote, priced as adults, with occupancy unconfirmed until that quote succeeds."
    • changedOutput schema / properties / properties / items / properties / stayQuote / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "basis": {
      -        "const": "exact",
      -        "type": "string"
      -      },
      -      "quote": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "arrival": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "availability": {
      -                "enum": [
      -                  "available",
      -                  "unavailable",
      -                  "unknown"
      -                ],
      -                "type": "string"
      -              },
      -              "bookingUrl": {
      -                "format": "uri",
      -                "type": "string"
      -              },
      -              "checkedAt": {
      -                "format": "date-time",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              },
      -              "departure": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "expiresAt": {
      -                "format": "date-time",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              },
      -              "guests": {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              "held": {
      -                "const": false,
      -                "type": "boolean"
      -              },
      -              "minimumNights": {
      -                "anyOf": [
      -                  {
      -                    "exclusiveMinimum": 0,
      -                    "maximum": 9007199254740991,
      -                    "type": "integer"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "nights": {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              "partyBasis": {
      -                "const": "all_adults",
      -                "type": "string"
      -              },
      -              "price": {
      -                "anyOf": [
      -                  {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "breakdown": {
      -                        "items": {
      -                          "additionalProperties": false,
      -                          "properties": {
      -                            "amount": {
      -                              "type": "number"
      -                            },
      -                            "label": {
      -                              "maxLength": 160,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "label",
      -                            "amount"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "maxItems": 30,
      -                        "type": "array"
      -                      },
      -                      "completeness": {
      -                        "enum": [
      -                          "total",
      -                          "partial"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "currency": {
      -                        "pattern": "^[A-Z]{3}$",
      -                        "type": "string"
      -                      },
      -                      "taxesIncluded": {
      -                        "anyOf": [
      -                          {
      -                            "type": "boolean"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "total": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      }
      -                    },
      -                    "required": [
      -                      "currency",
      -                      "total",
      -                      "breakdown",
      -                      "completeness",
      -                      "taxesIncluded"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "propertyId": {
      -                "type": "string"
      -              },
      -              "reason": {
      -                "enum": [
      -                  "checked",
      -                  "blocked_dates",
      -                  "minimum_stay",
      -                  "maximum_stay",
      -                  "arrival_departure_rules",
      -                  "advance_notice",
      -                  "capacity",
      -                  "unsupported_host",
      -                  "browser_unconfigured",
      -                  "upstream_unavailable",
      -                  "date_range_unknown"
      -                ],
      -                "type": "string"
      -              },
      -              "roomSelection": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "averageNightlyPrice": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "amount": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      },
      -                      "currency": {
      -                        "pattern": "^[A-Z]{3}$",
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "currency",
      -                      "amount"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "name": {
      -                    "maxLength": 200,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "ratePlan": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "rooms": {
      -                    "const": 1,
      -                    "type": "number"
      -                  }
      -                },
      -                "required": [
      -                  "name",
      -                  "rooms"
      -                ],
      -                "type": "object"
      -              },
      -              "sourceUrl": {
      -                "format": "uri",
      -                "type": "string"
      -              },
      -              "startingNightlyPrice": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "amount": {
      -                    "minimum": 0,
      -                    "type": "number"
      -                  },
      -                  "currency": {
      -                    "pattern": "^[A-Z]{3}$",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "currency",
      -                  "amount"
      -                ],
      -                "type": "object"
      -              }
      -            },
      -            "required": [
      -              "propertyId",
      -              "arrival",
      -              "departure",
      -              "guests",
      -              "nights",
      -              "availability",
      -              "reason",
      -              "minimumNights",
      -              "price",
      -              "checkedAt",
      -              "expiresAt",
      -              "sourceUrl",
      -              "bookingUrl",
      -              "held"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "request": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "arrival": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "currency": {
      -            "enum": [
      -              "USD",
      -              "EUR",
      -              "GBP",
      -              "CRC",
      -              "MXN",
      -              "COP",
      -              "PEN",
      -              "BRL",
      -              "AUD"
      -            ],
      -            "type": "string"
      -          },
      -          "departure": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "execution": {
      -            "description": "Selected-home execution only. Default auto prefers the fast supported reader. browser requests the slower experimental quote-only agent on reviewed Stays sites; unsupported sites return unknown. Search never starts this agent.",
      -            "enum": [
      -              "auto",
      -              "browser"
      -            ],
      -            "type": "string"
      -          },
      -          "guests": {
      -            "maximum": 200,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "id": {
      -            "maxLength": 160,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "arrival",
      -          "departure",
      -          "guests"
      -        ],
      -        "type": "object"
      -      },
      -      "status": {
      -        "enum": [
      -          "ready",
      -          "pending",
      -          "not_checked",
      -          "limited"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "basis",
      -      "status",
      -      "request",
      -      "quote"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "basis": {
      -        "const": "sample",
      -        "type": "string"
      -      },
      -      "diagnostics": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "attemptedStays": {
      -            "maximum": 4,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "reason": {
      -            "description": "Last sampled observation when no dated total was selected. Applies only to attempted stays; blocked samples never establish that the whole window is sold out. Terminal unsupported_host/upstream_unavailable evidence should be explained, not retried unchanged.",
      -            "enum": [
      -              "checked",
      -              "blocked_dates",
      -              "minimum_stay",
      -              "maximum_stay",
      -              "arrival_departure_rules",
      -              "advance_notice",
      -              "capacity",
      -              "unsupported_host",
      -              "browser_unconfigured",
      -              "upstream_unavailable",
      -              "date_range_unknown"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "attemptedStays"
      -        ],
      -        "type": "object"
      -      },
      -      "estimate": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "currency": {
      -            "enum": [
      -              "USD",
      -              "EUR",
      -              "GBP",
      -              "CRC",
      -              "MXN",
      -              "COP",
      -              "PEN",
      -              "BRL",
      -              "AUD"
      -            ],
      -            "type": "string"
      -          },
      -          "guests": {
      -            "maximum": 200,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "id": {
      -            "maxLength": 160,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "nights": {
      -            "maximum": 30,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "windowEnd": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "windowStart": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "windowStart",
      -          "windowEnd",
      -          "nights",
      -          "guests"
      -        ],
      -        "type": "object"
      -      },
      -      "quote": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "arrival": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "availability": {
      -                "enum": [
      -                  "available",
      -                  "unavailable",
      -                  "unknown"
      -                ],
      -                "type": "string"
      -              },
      -              "bookingUrl": {
      -                "format": "uri",
      -                "type": "string"
      -              },
      -              "checkedAt": {
      -                "format": "date-time",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              },
      -              "departure": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "expiresAt": {
      -                "format": "date-time",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              },
      -              "guests": {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              "held": {
      -                "const": false,
      -                "type": "boolean"
      -              },
      -              "minimumNights": {
      -                "anyOf": [
      -                  {
      -                    "exclusiveMinimum": 0,
      -                    "maximum": 9007199254740991,
      -                    "type": "integer"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "nights": {
      -                "maximum": 9007199254740991,
      -                "minimum": -9007199254740991,
      -                "type": "integer"
      -              },
      -              "partyBasis": {
      -                "const": "all_adults",
      -                "type": "string"
      -              },
      -              "price": {
      -                "anyOf": [
      -                  {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "breakdown": {
      -                        "items": {
      -                          "additionalProperties": false,
      -                          "properties": {
      -                            "amount": {
      -                              "type": "number"
      -                            },
      -                            "label": {
      -                              "maxLength": 160,
      -                              "minLength": 1,
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "label",
      -                            "amount"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        "maxItems": 30,
      -                        "type": "array"
      -                      },
      -                      "completeness": {
      -                        "enum": [
      -                          "total",
      -                          "partial"
      -                        ],
      -                        "type": "string"
      -                      },
      -                      "currency": {
      -                        "pattern": "^[A-Z]{3}$",
      -                        "type": "string"
      -                      },
      -                      "taxesIncluded": {
      -                        "anyOf": [
      -                          {
      -                            "type": "boolean"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "total": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      }
      -                    },
      -                    "required": [
      -                      "currency",
      -                      "total",
      -                      "breakdown",
      -                      "completeness",
      -                      "taxesIncluded"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "propertyId": {
      -                "type": "string"
      -              },
      -              "reason": {
      -                "enum": [
      -                  "checked",
      -                  "blocked_dates",
      -                  "minimum_stay",
      -                  "maximum_stay",
      -                  "arrival_departure_rules",
      -                  "advance_notice",
      -                  "capacity",
      -                  "unsupported_host",
      -                  "browser_unconfigured",
      -                  "upstream_unavailable",
      -                  "date_range_unknown"
      -                ],
      -                "type": "string"
      -              },
      -              "roomSelection": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "averageNightlyPrice": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "amount": {
      -                        "minimum": 0,
      -                        "type": "number"
      -                      },
      -                      "currency": {
      -                        "pattern": "^[A-Z]{3}$",
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "currency",
      -                      "amount"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "name": {
      -                    "maxLength": 200,
      -                    "minLength": 1,
      -                    "type": "string"
      -                  },
      -                  "ratePlan": {
      -                    "maxLength": 200,
      -                    "type": "string"
      -                  },
      -                  "rooms": {
      -                    "const": 1,
      -                    "type": "number"
      -                  }
      -                },
      -                "required": [
      -                  "name",
      -                  "rooms"
      -                ],
      -                "type": "object"
      -              },
      -              "sourceUrl": {
      -                "format": "uri",
      -                "type": "string"
      -              },
      -              "startingNightlyPrice": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "amount": {
      -                    "minimum": 0,
      -                    "type": "number"
      -                  },
      -                  "currency": {
      -                    "pattern": "^[A-Z]{3}$",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "currency",
      -                  "amount"
      -                ],
      -                "type": "object"
      -              }
      -            },
      -            "required": [
      -              "propertyId",
      -              "arrival",
      -              "departure",
      -              "guests",
      -              "nights",
      -              "availability",
      -              "reason",
      -              "minimumNights",
      -              "price",
      -              "checkedAt",
      -              "expiresAt",
      -              "sourceUrl",
      -              "bookingUrl",
      -              "held"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "request": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "arrival": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "currency": {
      -            "enum": [
      -              "USD",
      -              "EUR",
      -              "GBP",
      -              "CRC",
      -              "MXN",
      -              "COP",
      -              "PEN",
      -              "BRL",
      -              "AUD"
      -            ],
      -            "type": "string"
      -          },
      -          "departure": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "execution": {
      -            "description": "Selected-home execution only. Default auto prefers the fast supported reader. browser requests the slower experimental quote-only agent on reviewed Stays sites; unsupported sites return unknown. Search never starts this agent.",
      -            "enum": [
      -              "auto",
      -              "browser"
      -            ],
      -            "type": "string"
      -          },
      -          "guests": {
      -            "maximum": 200,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "id": {
      -            "maxLength": 160,
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "arrival",
      -          "departure",
      -          "guests"
      -        ],
      -        "type": "object"
      -      },
      -      "status": {
      -        "enum": [
      -          "ready",
      -          "pending",
      -          "not_checked",
      -          "limited"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "basis",
      -      "status",
      -      "request",
      -      "quote",
      -      "estimate"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "basis": {
      +        "const": "exact",
      +        "type": "string"
      +      },
      +      "quote": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "arrival": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "availability": {
      +                "enum": [
      +                  "available",
      +                  "unavailable",
      +                  "unknown"
      +                ],
      +                "type": "string"
      +              },
      +              "bookingUrl": {
      +                "format": "uri",
      +                "type": "string"
      +              },
      +              "checkedAt": {
      +                "format": "date-time",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                "type": "string"
      +              },
      +              "departure": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "expiresAt": {
      +                "format": "date-time",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                "type": "string"
      +              },
      +              "guests": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "held": {
      +                "const": false,
      +                "type": "boolean"
      +              },
      +              "minimumNights": {
      +                "anyOf": [
      +                  {
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 9007199254740991,
      +                    "type": "integer"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "nights": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "partyBasis": {
      +                "const": "all_adults",
      +                "type": "string"
      +              },
      +              "price": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "breakdown": {
      +                        "items": {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "amount": {
      +                              "type": "number"
      +                            },
      +                            "label": {
      +                              "maxLength": 160,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "label",
      +                            "amount"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "maxItems": 30,
      +                        "type": "array"
      +                      },
      +                      "completeness": {
      +                        "enum": [
      +                          "total",
      +                          "partial"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "currency": {
      +                        "pattern": "^[A-Z]{3}$",
      +                        "type": "string"
      +                      },
      +                      "taxesIncluded": {
      +                        "anyOf": [
      +                          {
      +                            "type": "boolean"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "total": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "currency",
      +                      "total",
      +                      "breakdown",
      +                      "completeness",
      +                      "taxesIncluded"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "propertyId": {
      +                "type": "string"
      +              },
      +              "reason": {
      +                "enum": [
      +                  "checked",
      +                  "blocked_dates",
      +                  "minimum_stay",
      +                  "maximum_stay",
      +                  "arrival_departure_rules",
      +                  "advance_notice",
      +                  "capacity",
      +                  "unsupported_host",
      +                  "browser_unconfigured",
      +                  "upstream_unavailable",
      +                  "date_range_unknown"
      +                ],
      +                "type": "string"
      +              },
      +              "roomSelection": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "averageNightlyPrice": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "amount": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      },
      +                      "currency": {
      +                        "pattern": "^[A-Z]{3}$",
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "currency",
      +                      "amount"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "name": {
      +                    "maxLength": 200,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "ratePlan": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "rooms": {
      +                    "const": 1,
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "name",
      +                  "rooms"
      +                ],
      +                "type": "object"
      +              },
      +              "sourceUrl": {
      +                "format": "uri",
      +                "type": "string"
      +              },
      +              "startingNightlyPrice": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "amount": {
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "currency": {
      +                    "pattern": "^[A-Z]{3}$",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "currency",
      +                  "amount"
      +                ],
      +                "type": "object"
      +              },
      +              "terms": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "cancellation": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "freeUntil": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "nonRefundable": {
      +                        "type": "boolean"
      +                      },
      +                      "policyText": {
      +                        "maxLength": 2000,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "refundWindows": {
      +                        "items": {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "from": {
      +                              "format": "date-time",
      +                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                              "type": "string"
      +                            },
      +                            "refundPercent": {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "number"
      +                            },
      +                            "until": {
      +                              "format": "date-time",
      +                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "refundPercent"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "maxItems": 20,
      +                        "type": "array"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "payment": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "balanceDue": {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "amount": {
      +                            "minimum": 0,
      +                            "type": "number"
      +                          },
      +                          "currency": {
      +                            "pattern": "^[A-Z]{3}$",
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "amount",
      +                          "currency"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "balanceDueAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "chargedBy": {
      +                        "enum": [
      +                          "host",
      +                          "booking_engine"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "depositAmount": {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "amount": {
      +                            "minimum": 0,
      +                            "type": "number"
      +                          },
      +                          "currency": {
      +                            "pattern": "^[A-Z]{3}$",
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "amount",
      +                          "currency"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "depositDueAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "depositPercent": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "provenance": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "fetchedAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "rawSourceField": {
      +                        "maxLength": 200,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "reader": {
      +                        "maxLength": 100,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "reader",
      +                      "rawSourceField",
      +                      "fetchedAt"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "provenance"
      +                ],
      +                "type": "object"
      +              }
      +            },
      +            "required": [
      +              "propertyId",
      +              "arrival",
      +              "departure",
      +              "guests",
      +              "nights",
      +              "availability",
      +              "reason",
      +              "minimumNights",
      +              "price",
      +              "checkedAt",
      +              "expiresAt",
      +              "sourceUrl",
      +              "bookingUrl",
      +              "held"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "request": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "arrival": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "childAges": {
      +            "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      +            "items": {
      +              "maximum": 17,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "maxItems": 199,
      +            "type": "array"
      +          },
      +          "children": {
      +            "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      +            "maximum": 199,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "currency": {
      +            "enum": [
      +              "USD",
      +              "EUR",
      +              "GBP",
      +              "CRC",
      +              "MXN",
      +              "COP",
      +              "PEN",
      +              "BRL",
      +              "AUD"
      +            ],
      +            "type": "string"
      +          },
      +          "departure": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "execution": {
      +            "description": "Selected-home execution only. Default auto prefers the fast supported reader. browser requests the slower experimental quote-only agent on reviewed Stays sites; unsupported sites return unknown. Search never starts this agent.",
      +            "enum": [
      +              "auto",
      +              "browser"
      +            ],
      +            "type": "string"
      +          },
      +          "guests": {
      +            "maximum": 200,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "id": {
      +            "maxLength": 160,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "arrival",
      +          "departure",
      +          "guests"
      +        ],
      +        "type": "object"
      +      },
      +      "status": {
      +        "enum": [
      +          "ready",
      +          "pending",
      +          "not_checked",
      +          "limited"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "basis",
      +      "status",
      +      "request",
      +      "quote"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "basis": {
      +        "const": "sample",
      +        "type": "string"
      +      },
      +      "diagnostics": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "attemptedStays": {
      +            "maximum": 4,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "reason": {
      +            "description": "Last sampled observation when no dated total was selected. Applies only to attempted stays; blocked samples never establish that the whole window is sold out. Terminal unsupported_host/upstream_unavailable evidence should be explained, not retried unchanged.",
      +            "enum": [
      +              "checked",
      +              "blocked_dates",
      +              "minimum_stay",
      +              "maximum_stay",
      +              "arrival_departure_rules",
      +              "advance_notice",
      +              "capacity",
      +              "unsupported_host",
      +              "browser_unconfigured",
      +              "upstream_unavailable",
      +              "date_range_unknown"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "attemptedStays"
      +        ],
      +        "type": "object"
      +      },
      +      "estimate": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "childAges": {
      +            "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      +            "items": {
      +              "maximum": 17,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "maxItems": 199,
      +            "type": "array"
      +          },
      +          "children": {
      +            "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      +            "maximum": 199,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "currency": {
      +            "enum": [
      +              "USD",
      +              "EUR",
      +              "GBP",
      +              "CRC",
      +              "MXN",
      +              "COP",
      +              "PEN",
      +              "BRL",
      +              "AUD"
      +            ],
      +            "type": "string"
      +          },
      +          "guests": {
      +            "maximum": 200,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "id": {
      +            "maxLength": 160,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "nights": {
      +            "maximum": 30,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "windowEnd": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "windowStart": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "windowStart",
      +          "windowEnd",
      +          "nights",
      +          "guests"
      +        ],
      +        "type": "object"
      +      },
      +      "quote": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "arrival": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "availability": {
      +                "enum": [
      +                  "available",
      +                  "unavailable",
      +                  "unknown"
      +                ],
      +                "type": "string"
      +              },
      +              "bookingUrl": {
      +                "format": "uri",
      +                "type": "string"
      +              },
      +              "checkedAt": {
      +                "format": "date-time",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                "type": "string"
      +              },
      +              "departure": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "expiresAt": {
      +                "format": "date-time",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                "type": "string"
      +              },
      +              "guests": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "held": {
      +                "const": false,
      +                "type": "boolean"
      +              },
      +              "minimumNights": {
      +                "anyOf": [
      +                  {
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 9007199254740991,
      +                    "type": "integer"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "nights": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "partyBasis": {
      +                "const": "all_adults",
      +                "type": "string"
      +              },
      +              "price": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "breakdown": {
      +                        "items": {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "amount": {
      +                              "type": "number"
      +                            },
      +                            "label": {
      +                              "maxLength": 160,
      +                              "minLength": 1,
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "label",
      +                            "amount"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "maxItems": 30,
      +                        "type": "array"
      +                      },
      +                      "completeness": {
      +                        "enum": [
      +                          "total",
      +                          "partial"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "currency": {
      +                        "pattern": "^[A-Z]{3}$",
      +                        "type": "string"
      +                      },
      +                      "taxesIncluded": {
      +                        "anyOf": [
      +                          {
      +                            "type": "boolean"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "total": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "currency",
      +                      "total",
      +                      "breakdown",
      +                      "completeness",
      +                      "taxesIncluded"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "propertyId": {
      +                "type": "string"
      +              },
      +              "reason": {
      +                "enum": [
      +                  "checked",
      +                  "blocked_dates",
      +                  "minimum_stay",
      +                  "maximum_stay",
      +                  "arrival_departure_rules",
      +                  "advance_notice",
      +                  "capacity",
      +                  "unsupported_host",
      +                  "browser_unconfigured",
      +                  "upstream_unavailable",
      +                  "date_range_unknown"
      +                ],
      +                "type": "string"
      +              },
      +              "roomSelection": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "averageNightlyPrice": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "amount": {
      +                        "minimum": 0,
      +                        "type": "number"
      +                      },
      +                      "currency": {
      +                        "pattern": "^[A-Z]{3}$",
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "currency",
      +                      "amount"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "name": {
      +                    "maxLength": 200,
      +                    "minLength": 1,
      +                    "type": "string"
      +                  },
      +                  "ratePlan": {
      +                    "maxLength": 200,
      +                    "type": "string"
      +                  },
      +                  "rooms": {
      +                    "const": 1,
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "name",
      +                  "rooms"
      +                ],
      +                "type": "object"
      +              },
      +              "sourceUrl": {
      +                "format": "uri",
      +                "type": "string"
      +              },
      +              "startingNightlyPrice": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "amount": {
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "currency": {
      +                    "pattern": "^[A-Z]{3}$",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "currency",
      +                  "amount"
      +                ],
      +                "type": "object"
      +              },
      +              "terms": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "cancellation": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "freeUntil": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "nonRefundable": {
      +                        "type": "boolean"
      +                      },
      +                      "policyText": {
      +                        "maxLength": 2000,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "refundWindows": {
      +                        "items": {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "from": {
      +                              "format": "date-time",
      +                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                              "type": "string"
      +                            },
      +                            "refundPercent": {
      +                              "maximum": 100,
      +                              "minimum": 0,
      +                              "type": "number"
      +                            },
      +                            "until": {
      +                              "format": "date-time",
      +                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "refundPercent"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        "maxItems": 20,
      +                        "type": "array"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "payment": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "balanceDue": {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "amount": {
      +                            "minimum": 0,
      +                            "type": "number"
      +                          },
      +                          "currency": {
      +                            "pattern": "^[A-Z]{3}$",
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "amount",
      +                          "currency"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "balanceDueAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "chargedBy": {
      +                        "enum": [
      +                          "host",
      +                          "booking_engine"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "depositAmount": {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "amount": {
      +                            "minimum": 0,
      +                            "type": "number"
      +                          },
      +                          "currency": {
      +                            "pattern": "^[A-Z]{3}$",
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "amount",
      +                          "currency"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "depositDueAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "depositPercent": {
      +                        "maximum": 100,
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "provenance": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "fetchedAt": {
      +                        "format": "date-time",
      +                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +                        "type": "string"
      +                      },
      +                      "rawSourceField": {
      +                        "maxLength": 200,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      },
      +                      "reader": {
      +                        "maxLength": 100,
      +                        "minLength": 1,
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "reader",
      +                      "rawSourceField",
      +                      "fetchedAt"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "provenance"
      +                ],
      +                "type": "object"
      +              }
      +            },
      +            "required": [
      +              "propertyId",
      +              "arrival",
      +              "departure",
      +              "guests",
      +              "nights",
      +              "availability",
      +              "reason",
      +              "minimumNights",
      +              "price",
      +              "checkedAt",
      +              "expiresAt",
      +              "sourceUrl",
      +              "bookingUrl",
      +              "held"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "request": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "arrival": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "childAges": {
      +            "description": "Each child's age at check-out, one entry per child (exactly children entries). Retained and disclosed; the host confirms child rates.",
      +            "items": {
      +              "maximum": 17,
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "maxItems": 199,
      +            "type": "array"
      +          },
      +          "children": {
      +            "description": "How many of guests are children (under 18). guests stays total occupancy, so it must exceed children; capacity counts everyone. No reader prices child ages yet.",
      +            "maximum": 199,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "currency": {
      +            "enum": [
      +              "USD",
      +              "EUR",
      +              "GBP",
      +              "CRC",
      +              "MXN",
      +              "COP",
      +              "PEN",
      +              "BRL",
      +              "AUD"
      +            ],
      +            "type": "string"
      +          },
      +          "departure": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "execution": {
      +            "description": "Selected-home execution only. Default auto prefers the fast supported reader. browser requests the slower experimental quote-only agent on reviewed Stays sites; unsupported sites return unknown. Search never starts this agent.",
      +            "enum": [
      +              "auto",
      +              "browser"
      +            ],
      +            "type": "string"
      +          },
      +          "guests": {
      +            "maximum": 200,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "id": {
      +            "maxLength": 160,
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "arrival",
      +          "departure",
      +          "guests"
      +        ],
      +        "type": "object"
      +      },
      +      "status": {
      +        "enum": [
      +          "ready",
      +          "pending",
      +          "not_checked",
      +          "limited"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "basis",
      +      "status",
      +      "request",
      +      "quote",
      +      "estimate"
      +    ],
      +    "type": "object"
      +  }
      +]
  4. Changed1 schema field changed
    • changedInput schema / properties / searchContext / description
      Previous value: -"Original structured search arguments when re-showing a selected subset. Preserves explorer refinements; does not fetch prices or quotes."New value: +"The structured search arguments the homes came from. Preserves explorer refinements; with quoteMode and its dates or flexible bounds, the shown cards are priced for that stay."
  5. Changed4 schema fields changed
    • changedInput schema / properties / searchContext / properties / amenities / description
      Previous value: -"Comma-separated amenity keys; every requested amenity must be explicitly present."New value: +"Comma-separated keys from: air-conditioning, wifi, workspace, parking, pets, kitchen, washer, step-free. Every requested key must be explicitly present. Other details (for example pool heating) belong in semantic preferences or requirements, not invented keys."
    • addedInput schema / properties / searchContext / properties / city / description
      Added value: +"Specific destination locality, not a nearby radius. Resolve ambiguous names before choosing a country; use the area tools for nearby discovery."
    • addedInput schema / properties / searchContext / properties / country / description
      Added value: +"Destination country established by the traveler or unambiguous trip context. Ask before choosing a country for an ambiguous place name."
    • addedInput schema / properties / searchContext / properties / region / description
      Added value: +"Published region name. Resolve informal areas such as south of France with get_filters before searching; an invented region label can return no homes."
  6. Changed1 schema field changed
    • addedOutput schema / properties / properties / items / properties / rateEstimate
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Rough nightly rate per month from earlier host prices, in the host's currency. A per-night estimate only: never a stay total, a quote or availability. stay_derived months divide a quoted stay total by its nights (fees spread in, taxes possibly excluded) for partyBasis; calendar_nightly months use the host calendar's nightly rate. Use quoteMode or get_stay_quote for an actual price.",
      +  "properties": {
      +    "currency": {
      +      "maxLength": 3,
      +      "minLength": 3,
      +      "type": "string"
      +    },
      +    "expiresAt": {
      +      "type": "string"
      +    },
      +    "months": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "basis": {
      +            "enum": [
      +              "calendar_nightly",
      +              "stay_derived"
      +            ],
      +            "type": "string"
      +          },
      +          "month": {
      +            "pattern": "^\\d{4}-\\d{2}$",
      +            "type": "string"
      +          },
      +          "nightlyHigh": {
      +            "exclusiveMinimum": 0,
      +            "type": "number"
      +          },
      +          "nightlyLow": {
      +            "exclusiveMinimum": 0,
      +            "type": "number"
      +          },
      +          "nightlyTypical": {
      +            "exclusiveMinimum": 0,
      +            "type": "number"
      +          },
      +          "partyBasis": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "guests": {
      +                "exclusiveMinimum": 0,
      +                "maximum": 9007199254740991,
      +                "type": "integer"
      +              },
      +              "nights": {
      +                "exclusiveMinimum": 0,
      +                "maximum": 9007199254740991,
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "guests",
      +              "nights"
      +            ],
      +            "type": "object"
      +          },
      +          "samples": {
      +            "exclusiveMinimum": 0,
      +            "maximum": 9007199254740991,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "month",
      +          "nightlyLow",
      +          "nightlyTypical",
      +          "nightlyHigh",
      +          "samples",
      +          "basis"
      +        ],
      +        "type": "object"
      +      },
      +      "minItems": 1,
      +      "type": "array"
      +    },
      +    "observedAt": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "currency",
      +    "months",
      +    "observedAt",
      +    "expiresAt"
      +  ],
      +  "type": "object"
      +}
  7. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a safe read-only, idempotent operation, but the description adds substantial context: each call replaces the cards the traveler sees, omitted searchContext produces price-free cards, quoteMode enriches cards with the same 2.5-second quote process as search, and publication is rechecked before display. These are meaningful behavioral traits not present in the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and packs a lot of operational rules into a compact block, with little wasted language. However, several sentences compound multiple conditions, making it denser than ideal for quick scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex UI-rendering tool with a large nested searchContext schema and an output schema, the description covers the critical behaviors: when to call, how cards replace prior cards, how pricing enrichment works, and what happens when context is omitted. Remaining gaps such as locale semantics are minor and do not prevent correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is low overall, but the nested searchContext object is richly documented in the schema itself, and the description adds purpose-level meaning: pass the structured search arguments the homes came from so destination, party and filters persist, and use quoteMode with dates or flexible bounds to price cards. It does not explain the locale parameter or add detail beyond the id count constraint, keeping this from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Display one to six homes as photo cards with Details and host booking links.' It explicitly distinguishes render_properties from semantic search_properties, which 'shows no cards,' so an agent can immediately tell the two apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit sequencing rules: finish comparing and any detail or price checks first, then call render_properties once with the final choice, best first. It also states when to render subsets and when not to render provisional picks, and names search_properties as the alternative for discovery.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.