← Files Hoteler LogARCHIVED FILE
skills/hoteler-log-import-stays/references/generator-input.schema.json
5.36 KB · Oct 2, 2026 · 00:32 UTC
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Hoteler Log requested stay links",
"type": "object",
"additionalProperties": false,
"required": ["linkCreationRequested", "stays"],
"properties": {
"linkCreationRequested": {
"const": true,
"description": "Set true only when the user asked to add, import, register, or create Hoteler Log links for the supplied reservation material. This authorizes a review-only link; it does not assert that extracted fields were reviewed."
},
"stays": {
"type": "array",
"minItems": 1,
"maxItems": 20,
"items": {
"type": "object",
"additionalProperties": false,
"required": ["hotelName", "checkIn", "checkOut"],
"properties": {
"hotelName": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Exact catalogued lodging name, or exact unlisted lodging name explicitly confirmed by the user."
},
"unlistedHotelNameConfirmed": {
"type": "boolean",
"description": "Set true only when a name outside the bundled catalog was visibly marked unlisted and explicitly confirmed. This control field is never encoded into the app payload."
},
"checkIn": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" },
"checkOut": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" },
"bookingChannel": {
"enum": [
null,
"公式サイト",
"ポイント予約",
"一休.com",
"楽天トラベル",
"じゃらん",
"JTB",
"Yahoo!トラベル",
"Relux",
"Agoda",
"Booking.com",
"Expedia",
"Trip.com",
"Hotels.com",
"Amex FHR",
"Amex THR",
"Hotelux",
"Tablet Hotels",
"Mr & Mrs Smith",
"Virtuoso",
"Visa Luxury Hotel Collection"
]
},
"priceAmount": {
"type": ["string", "null"],
"maxLength": 20,
"pattern": "^[0-9]+(?:\\.[0-9]+)?$",
"description": "Reservation amount as a plain nonnegative decimal string. JPY is preserved exactly. A foreign amount requires verified ECB evidence and is converted to whole JPY. Omit or set null when safe evidence is unavailable."
},
"priceCurrency": {
"enum": [null, "JPY", "USD", "EUR", "GBP", "CNY", "KRW", "THB", "SGD", "AUD", "CAD", "CHF", "HKD"],
"description": "Exact uppercase ISO-style source currency. Must be paired with priceAmount. Generated app payloads always use JPY."
},
"exchangeRate": {
"oneOf": [
{ "type": "null" },
{
"type": "object",
"additionalProperties": false,
"required": ["provider", "rateDate", "sourceUnitsPerEUR", "jpyPerEUR"],
"properties": {
"provider": { "const": "ECB" },
"rateDate": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
},
"sourceUnitsPerEUR": {
"type": "string",
"maxLength": 40,
"pattern": "^(?=.*[1-9])[0-9]+(?:\\.[0-9]+)?$"
},
"jpyPerEUR": {
"type": "string",
"maxLength": 40,
"pattern": "^(?=.*[1-9])[0-9]+(?:\\.[0-9]+)?$"
}
}
}
],
"description": "Generator-only ECB evidence. Required for foreign amounts, forbidden for JPY or omitted prices, and never encoded into the Hoteler Log payload."
},
"pointsUsed": { "type": ["integer", "null"], "minimum": 0, "maximum": 1000000000 },
"notes": {
"enum": [
null,
"朝食付き",
"夕食付き",
"朝夕食付き",
"素泊まり",
"返金不可",
"現地払い",
"事前決済",
"駐車場付き",
"クラブラウンジ利用",
"アーリーチェックイン",
"レイトチェックアウト"
]
}
},
"oneOf": [
{
"properties": {
"priceAmount": { "type": "null" },
"priceCurrency": { "type": "null" },
"exchangeRate": { "type": "null" }
}
},
{
"required": ["priceAmount", "priceCurrency"],
"properties": {
"priceAmount": { "type": "string" },
"priceCurrency": { "const": "JPY" },
"exchangeRate": { "type": "null" }
}
},
{
"required": ["priceAmount", "priceCurrency", "exchangeRate"],
"properties": {
"priceAmount": { "type": "string" },
"priceCurrency": { "enum": ["USD", "EUR", "GBP", "CNY", "KRW", "THB", "SGD", "AUD", "CAD", "CHF", "HKD"] },
"exchangeRate": { "type": "object" }
}
}
]
}
}
}
}
SHA-256: ce0077ced139586c7fbb151651588132028aa17c3ab7d43a7e7b3839f3c2637e