Oracle Hospitality · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Oracle Hospitality Availability API

35 actions 35 updates phrasing extends openapi/oracle-hospitality-availability-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Oracle Hospitality's API. It is a proposal applied on top of the contract, not a document Oracle Hospitality publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 35 · first 16 shown; the file carries all of them

$.info
$.paths['/availability/summary'].get
$.paths['/hotels/{hotelId}/channels/{channelCode}/rooms/{roomTypeCode}/inventorySnapshot'].get
$.paths['/hotels/{hotelId}/generalAvailabilitySimulator'].get
$.paths['/hotels/{hotelId}/inventorySnapshot'].get
$.paths['/hotels/{hotelId}/rateParity'].get
$.paths['/availability'].get
$.paths['/availability/searches'].post
$.paths['/hotels'].get
$.paths['/hotels/{hotelId}/analyzeRateAvailability'].get
$.paths['/hotels/{hotelId}/analyzeRateAvailability/searches'].post
$.paths['/hotels/{hotelId}/availability'].get
$.paths['/hotels/{hotelId}/availability/alternate'].get
$.paths['/hotels/{hotelId}/availability/alternate/searches'].post
$.paths['/hotels/{hotelId}/availability/searches'].post
$.paths['/hotels/{hotelId}/availableUpsells'].get

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for Oracle Hospitality Availability API
  version: 1.0.0
extends: openapi/oracle-hospitality-availability-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-09-26'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 34
- target: $.paths['/availability/summary'].get
  update:
    x-apievangelist-phrasing:
      intent: Compare rate parity across hotels in a region
      effect: read
      questions:
      - Are my rates consistent across channels for all hotels in a chain or region?
      - Can I check rate parity for several hotels at once over the next few days?
      instructions:
      - text: Show the regional rate parity summary for hotels {hotelIds} over the next {numberOfDays} days.
        slots:
          hotelIds: query.hotelIds
          numberOfDays: query.numberOfDays
      - text: Check multi-hotel parity for rate plan {ratePlanCode} on channel {channelCode} across chain {chainCode}.
        slots:
          ratePlanCode: query.ratePlanCode
          channelCode: query.channelCode
          chainCode: query.chainCode
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/channels/{channelCode}/rooms/{roomTypeCode}/inventorySnapshot'].get
  update:
    x-apievangelist-phrasing:
      intent: Get channel inventory snapshot for one room type
      effect: read
      questions:
      - What availability and restrictions does a booking channel see for one specific room type?
      - Can I snapshot a single room type's channel inventory for weekends only?
      instructions:
      - text: Snapshot channel {channelCode} inventory for room type {roomTypeCode} at hotel {hotelId} from {fromDate}.
        slots:
          channelCode: path.channelCode
          roomTypeCode: path.roomTypeCode
          hotelId: path.hotelId
          fromDate: query.fromDate
      - text: Show restrictions and availability for room {roomTypeCode} on {channelCode} at {hotelId}, {fromDate} to {endDate}.
        slots:
          roomTypeCode: path.roomTypeCode
          channelCode: path.channelCode
          hotelId: path.hotelId
          fromDate: query.fromDate
          endDate: query.endDate
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/generalAvailabilitySimulator'].get
  update:
    x-apievangelist-phrasing:
      intent: Simulate what a booking channel would see
      effect: read
      questions:
      - How can I preview the availability and rates a channel would return for a sample stay?
      - Can I simulate a booking request with a promotion code or corporate IATA to test channel results?
      instructions:
      - text: Run the availability simulator at hotel {hotelId} for arrival {arrival}, {nights} nights, {adults} adults.
        slots:
          hotelId: path.hotelId
          arrival: query.arrival
          nights: query.nights
          adults: query.adults
      - text: Simulate channel {bookingChannelCode} results at {hotelId} with promotion {promotionCode}.
        slots:
          bookingChannelCode: query.bookingChannelCode
          hotelId: path.hotelId
          promotionCode: query.promotionCode
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/inventorySnapshot'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a hotel's channel inventory snapshot
      effect: read
      questions:
      - What rooms and restrictions are all my booking channels seeing for a hotel right now?
      - Can I snapshot channel availability across several booking channels for a date range?
      instructions:
      - text: Snapshot channel inventory for all room types at hotel {hotelId} starting {fromDate}.
        slots:
          hotelId: path.hotelId
          fromDate: query.fromDate
      - text: Show inventory for channels {bookingChannelCodes} at {hotelId} from {fromDate} to {endDate}.
        slots:
          bookingChannelCodes: query.bookingChannelCodes
          hotelId: path.hotelId
          fromDate: query.fromDate
          endDate: query.endDate
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/rateParity'].get
  update:
    x-apievangelist-phrasing:
      intent: Check a hotel's channel rate parity
      effect: read
      questions:
      - Is my hotel's rate the same on every booking channel?
      - Can I compare channel rates for one room type and rate plan at a single property?
      instructions:
      - text: Check rate parity at hotel {hotelId} for the next {numberOfDays} days.
        slots:
          hotelId: path.hotelId
          numberOfDays: query.numberOfDays
      - text: Compare parity for room {roomType} and rate plan {ratePlanCode} on channel {channelCode} at {hotelId}.
        slots:
          roomType: query.roomType
          ratePlanCode: query.ratePlanCode
          channelCode: query.channelCode
          hotelId: path.hotelId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/availability'].get
  update:
    x-apievangelist-phrasing:
      intent: Check availability across multiple hotels
      effect: read
      questions:
      - Which of my hotels have rooms available for given dates and party size?
      - Can a central reservations office query availability for several hotels at once with query parameters?
      instructions:
      - text: Check availability at hotels {hotelIds} from {roomStayStartDate} to {roomStayEndDate} for {adults} adults.
        slots:
          hotelIds: query.hotelIds
          roomStayStartDate: query.roomStayStartDate
          roomStayEndDate: query.roomStayEndDate
          adults: query.adults
      - text: Using CRO {cro}, list multi-hotel availability for rate plan {ratePlanCode} via query string.
        slots:
          cro: query.cro
          ratePlanCode: query.ratePlanCode
      method: generated
      generated: '2026-09-26'
- target: $.paths['/availability/searches'].post
  update:
    x-apievangelist-phrasing:
      intent: Search multi-hotel availability with a POST body
      effect: read
      questions:
      - Can I send multi-hotel availability criteria in a POST request body instead of a long query string?
      - What's the POST search for checking room availability across a CRO's hotels?
      instructions:
      - text: POST a multi-hotel availability search for hotels {hotelIds}, {roomStayStartDate} to {roomStayEndDate}.
        slots:
          hotelIds: requestBody.hotelIds
          roomStayStartDate: requestBody.roomStayStartDate
          roomStayEndDate: requestBody.roomStayEndDate
      - text: Submit a body-based availability search across CRO {cro} hotels for membership level {membershipLevel}.
        slots:
          cro: requestBody.cro
          membershipLevel: requestBody.membershipLevel
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels'].get
  update:
    x-apievangelist-phrasing:
      intent: Search hotels for the sales process
      effect: read
      questions:
      - Which hotels in a city can I offer a guest for their dates?
      - Can I search hotels by amenity or nearby attraction during a sales call?
      - How do I find alternate hotels in a region when the first choice is full?
      instructions:
      - text: Find hotels in {city} with availability from {startDate} to {endDate}.
        slots:
          city: query.city
          startDate: query.startDate
          endDate: query.endDate
      - text: Search hotels in region {regionCode} offering amenity {hotelAmenity}.
        slots:
          regionCode: query.regionCode
          hotelAmenity: query.hotelAmenity
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/analyzeRateAvailability'].get
  update:
    x-apievangelist-phrasing:
      intent: Analyze why a rate is closed
      effect: read
      questions:
      - Why is a rate code showing closed for a room type on certain dates?
      - Can I see the restriction reasons behind an unavailable rate using query parameters?
      instructions:
      - text: Analyze why rate {ratePlanCode} is closed for room {roomType} at hotel {hotelId} from {startDate} to {endDate}.
        slots:
          ratePlanCode: query.ratePlanCode
          roomType: query.roomType
          hotelId: path.hotelId
          startDate: query.startDate
          endDate: query.endDate
      - text: Explain the closed-rate reasons for {ratePlanCode} at {hotelId} for {duration} nights.
        slots:
          ratePlanCode: query.ratePlanCode
          hotelId: path.hotelId
          duration: query.duration
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/analyzeRateAvailability/searches'].post
  update:
    x-apievangelist-phrasing:
      intent: Analyze closed rates with a POST search body
      effect: read
      questions:
      - Can I submit the closed-rate analysis criteria as a POST body rather than query parameters?
      - Is there a POST search version of the rate availability analysis for a hotel?
      instructions:
      - text: POST a rate availability analysis for {ratePlanCode} at hotel {hotelId}, {startDate} to {endDate}.
        slots:
          ratePlanCode: requestBody.ratePlanCode
          hotelId: path.hotelId
          startDate: requestBody.startDate
          endDate: requestBody.endDate
      - text: Submit a body-based closed-rate analysis for block {blockId} at {hotelId}.
        slots:
          blockId: requestBody.blockId
          hotelId: path.hotelId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/availability'].get
  update:
    x-apievangelist-phrasing:
      intent: Get room and rate availability for one hotel
      effect: read
      questions:
      - What room types and rates are available at a hotel for my dates?
      - Can I check a single property's availability including closed rates, via query parameters?
      instructions:
      - text: Show available rooms and rates at hotel {hotelId} from {roomStayStartDate} to {roomStayEndDate}.
        slots:
          hotelId: path.hotelId
          roomStayStartDate: query.roomStayStartDate
          roomStayEndDate: query.roomStayEndDate
      - text: Check availability at {hotelId} for {adults} adults and {children} children on rate plan {ratePlanCode}.
        slots:
          hotelId: path.hotelId
          adults: query.adults
          children: query.children
          ratePlanCode: query.ratePlanCode
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/availability/alternate'].get
  update:
    x-apievangelist-phrasing:
      intent: Find alternate dates for a closed rate
      effect: read
      questions:
      - If a rate is closed on my dates, which nearby dates are open?
      - Can I look up alternate stay dates for a room type via query parameters?
      instructions:
      - text: Find alternate dates at hotel {hotelId} for rate {ratePlanCode} around {startDate}.
        slots:
          hotelId: path.hotelId
          ratePlanCode: query.ratePlanCode
          startDate: query.startDate
      - text: Suggest open dates for room {roomType} at {hotelId} for a {duration}-night stay.
        slots:
          roomType: query.roomType
          hotelId: path.hotelId
          duration: query.duration
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/availability/alternate/searches'].post
  update:
    x-apievangelist-phrasing:
      intent: Search alternate dates with a POST body
      effect: read
      questions:
      - Can I send alternate-date search criteria for a closed rate in a POST body?
      - Is there a POST search to find alternate dates for a block or a specific room id?
      instructions:
      - text: POST an alternate-date search at hotel {hotelId} for rate {ratePlanCode} starting {startDate}.
        slots:
          hotelId: path.hotelId
          ratePlanCode: requestBody.ratePlanCode
          startDate: requestBody.startDate
      - text: Submit a body-based alternate-date search for room {roomId} at {hotelId}.
        slots:
          roomId: requestBody.roomId
          hotelId: path.hotelId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/availability/searches'].post
  update:
    x-apievangelist-phrasing:
      intent: Search one hotel's availability with a POST body
      effect: read
      questions:
      - Can I send single-hotel availability criteria in a POST request body?
      - What's the POST search for a property's rooms and rates when my criteria are too long for a URL?
      instructions:
      - text: POST an availability search for hotel {hotelId} from {roomStayStartDate} to {roomStayEndDate}.
        slots:
          hotelId: path.hotelId
          roomStayStartDate: requestBody.roomStayStartDate
          roomStayEndDate: requestBody.roomStayEndDate
      - text: Submit a body-based availability search at {hotelId} for membership {membershipType}.
        slots:
          hotelId: path.hotelId
          membershipType: requestBody.membershipType
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/availableUpsells'].get
  update:
    x-apievangelist-phrasing:
      intent: Find available upsells for a stay
      effect: read
      questions:
      - Which room upgrades can I offer a guest on their reservation?
      - Can I list upsell options for a date range at a hotel?
      instructions:
      - text: Find upsell offers for reservation {reservationId} at hotel {hotelId}.
        slots:
          reservationId: query.reservationId
          hotelId: path.hotelId
      - text: List available upsells at {hotelId} from {startDate} to {endDate} for room {roomType}.
        slots:
          hotelId: path.hotelId
          startDate: query.startDate
          endDate: query.endDate
          roomType: query.roomType
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/guarantees'].get
  update:
    x-apievangelist-phrasing:
      intent: Look up reservation guarantee options
      effect: read
      questions:
      - Which guarantee types can I use for a booking arriving on a given date?
      - Can I see guarantee codes and estimated deposit amounts for a rate plan?
      instructions:
      - text: List guarantee options at hotel {hotelId} for arrival {arrivalDate}.
        slots:
          hotelId: path.hotelId
          arrivalDate: query.arrivalDate
      - text: Get guarantees for rate {ratePlanCode} at {hotelId} arriving {arrivalDate}, with estimated amounts.
        slots:
          ratePlanCode: query.ratePlanCode
          hotelId: path.hotelId
          arrivalDate: query.arrivalDate
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/hurdles'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a hotel's hurdle rates
      effect: read
      questions:
      - What hurdle rates are set for my hotel on a given date?
      - Can I filter hurdle rates by room type code?
      instructions:
      - text: Show hurdle rates at hotel {hotelId} for {hurdleDate}.
        slots:
          hotelId: path.hotelId
          hurdleDate: query.hurdleDate
      - text: List hurdle rates for room types {roomTypesCode} at {hotelId}.
        slots:
          roomTypesCode: query.roomTypesCode
          hotelId: path.hotelId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/hurdles'].put
  update:
    x-apievangelist-phrasing:
      intent: Change existing hurdle rates
      effect: write
      questions:
      - How do I raise an existing hurdle rate for peak dates?
      - Can I modify hurdle rates that are already set for a hotel?
      instructions:
      - text: Update the existing hurdle rates at hotel {hotelId}.
        slots:
          hotelId: path.hotelId
      - text: Change hurdle rates at {hotelId} to {hurdleRates}.
        slots:
          hotelId: path.hotelId
          hurdleRates: requestBody.hurdleRates
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/hurdles'].post
  update:
    x-apievangelist-phrasing:
      intent: Create new hurdle rates
      effect: write
      questions:
      - How do I set a new minimum acceptable rate (hurdle) for dates that have none?
      - What's needed to add hurdle rates for a hotel?
      instructions:
      - text: Create hurdle rates {hurdleRates} at hotel {hotelId}.
        slots:
          hurdleRates: requestBody.hurdleRates
          hotelId: path.hotelId
      - text: Add new hurdle rates for next month at {hotelId}.
        slots:
          hotelId: path.hotelId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/hurdles'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete hurdle rates
      effect: destructive
      questions:
      - How do I remove a hurdle rate for a date?
      - Can I delete hurdle rates for one room type or yield category?
      instructions:
      - text: Delete hurdle rates at hotel {hotelId} for {hurdleDate}.
        slots:
          hotelId: path.hotelId
          hurdleDate: query.hurdleDate
      - text: Remove hurdle rates for room {roomType} at {hotelId} from {hurdleRangeStart} to {hurdleRangeEnd}.
        slots:
          roomType: query.roomType
          hotelId: path.hotelId
          hurdleRangeStart: query.hurdleRangeStart
          hurdleRangeEnd: query.hurdleRangeEnd
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/rates'].get
  update:
    x-apievangelist-phrasing:
      intent: Get details for several rate plans at a hotel
      effect: read
      questions:
      - Can I pull rate plan information for a list of rate codes in one call?
      - Where do I see the details of all the rate plans a hotel sells?
      instructions:
      - text: Get rate plan information at hotel {hotelId} for codes {ratePlanCodeList}.
        slots:
          hotelId: path.hotelId
          ratePlanCodeList: query.ratePlanCodeList
      - text: Show the rate plans configured at {hotelId}.
        slots:
          hotelId: path.hotelId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/rates/{ratePlanCode}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get information for one rate plan
      effect: read
      questions:
      - What are the details and rules of a specific rate plan code?
      - How do I look up one rate plan by its code at a hotel?
      instructions:
      - text: Show rate plan {ratePlanCode} at hotel {hotelId}.
        slots:
          ratePlanCode: path.ratePlanCode
          hotelId: path.hotelId
      - text: Get the details of rate code {ratePlanCode} for {hotelId}.
        slots:
          ratePlanCode: path.ratePlanCode
          hotelId: path.hotelId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/restrictions'].get
  update:
    x-apievangelist-phrasing:
      intent: Get restrictions for a date range
      effect: read
      questions:
      - What stay restrictions, like closed to arrival or minimum stay, are active at my hotel?
      - Can I see restrictions for one booking channel or rate plan over a date range?
      instructions:
      - text: List restrictions at hotel {hotelId} from {restrictionSearchCriteriaStartDate} to {end}.
        slots:
          hotelId: path.hotelId
          restrictionSearchCriteriaStartDate: query.restrictionSearchCriteriaStartDate
          end: query.end
      - text: Show restrictions for rate plan {ratePlanCode} on channel {bookingChannelCode} at {hotelId}.
        slots:
          ratePlanCode: query.ratePlanCode
          bookingChannelCode: query.bookingChannelCode
          hotelId: path.hotelId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/restrictions'].put
  update:
    x-apievangelist-phrasing:
      intent: Clear all restrictions for a hotel on a date
      effect: destructive
      questions:
      - How do I wipe every restriction at a hotel for one day?
      - Can I reset a date to have no restrictions at all?
      instructions:
      - text: Clear all restrictions at hotel {hotelId} on {date}.
        slots:
          hotelId: path.hotelId
          date: requestBody.date
      - text: Remove every restriction for {hotelId} on that date.
        slots:
          hotelId: path.hotelId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/restrictions'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a restriction
      effect: write
      questions:
      - How do I close a rate to arrival or set a minimum length of stay?
      - What do I send to add a new restriction for a hotel?
      instructions:
      - text: Create restriction {restriction} at hotel {hotelId}.
        slots:
          restriction: requestBody.restriction
          hotelId: path.hotelId
      - text: Add a closed-to-arrival restriction at {hotelId} for this weekend.
        slots:
          hotelId: path.hotelId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/restrictions/{restrictionId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a restriction
      effect: destructive
      questions:
      - How do I remove one restriction I set by mistake?
      - Can I delete a restriction only for certain dates or a room type?
      instructions:
      - text: Delete restriction {restrictionId} at hotel {hotelId}.
        slots:
          restrictionId: path.restrictionId
          hotelId: path.hotelId
      - text: Remove restriction {restrictionId} at {hotelId} from {restrictionStartDate} to {restrictionEndDate}.
        slots:
          restrictionId: path.restrictionId
          hotelId: path.hotelId
          restrictionStartDate: query.restrictionStartDate
          restrictionEndDate: query.restrictionEndDate
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/restrictionsHistory'].get
  update:
    x-apievangelist-phrasing:
      intent: Get the change history of restrictions
      effect: read
      questions:
      - Who changed a restriction at my hotel, and when?
      - Can I audit restriction changes by user or restriction type over a period?
      instructions:
      - text: Show restriction history at hotel {hotelId} from {startDate} to {endDate}.
        slots:
          hotelId: path.hotelId
          startDate: query.startDate
          endDate: query.endDate
      - text: List restriction changes made by user {userId} at {hotelId}.
        slots:
          userId: query.userId
          hotelId: path.hotelId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/validateGuarantees'].put
  update:
    x-apievangelist-phrasing:
      intent: Validate guarantee criteria for a reservation
      effect: read
      questions:
      - Can I validate a set of guarantee criteria against a hotel's rules before booking?
      - Is there a request-body version of the guarantee lookup for validating criteria?
      instructions:
      - text: Validate guarantee criteria {criteria} at hotel {hotelId}.
        slots:
          criteria: requestBody.criteria
          hotelId: path.hotelId
      - text: Check that this guarantee request is valid at {hotelId}.
        slots:
          hotelId: path.hotelId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hurdles'].get
  update:
    x-apievangelist-phrasing:
      intent: Get hurdle rates across multiple properties
      effect: read
      questions:
      - What are the hurdle rates for several of my hotels on the same date?
      - Can I compare hurdle rates across properties in one call?
      instructions:
      - text: Show hurdle rates for hotels {hotelIds} on {hurdleDate}.
        slots:
          hotelIds: query.hotelIds
          hurdleDate: query.hurdleDate
      - text: Compare multi-property hurdle rates from {hurdleRangeStart} to {hurdleRangeEnd}.
        slots:
          hurdleRangeStart: query.hurdleRangeStart
          hurdleRangeEnd: query.hurdleRangeEnd
      method: generated
      generated: '2026-09-26'
- target: $.paths['/services/availability/status'].get
  update:
    x-apievangelist-phrasing:
      intent: Get the availability service version
      effect: read
      questions:
      - Which version of the availability service is running?
      - Is the availability service up and responding?
      instructions:
      - text: Report the availability service status and version.
      - text: Ping the availability service on behalf of hotel {hotelId}.
        slots:
          hotelId: header.x-hotelid
      method: generated
      generated: '2026-09-26'
- target: $.paths['/upsert/hotels/{hotelId}/hurdles'].put
  update:
    x-apievangelist-phrasing:
      intent: Create or change hurdle rates
      effect: write
      questions:
      - Is there an upsert for hurdle rates so I don't need to know if they already exist?
      - Can I create-or-update a batch of hurdle rates in one call?
      instructions:
      - text: Upsert hurdle rates {hurdleRates} at hotel {hotelId}.
        slots:
          hurdleRates: requestBody.hurdleRates
          hotelId: path.hotelId
      - text: Create or change hurdle rates at {hotelId}, whichever applies.
        slots:
          hotelId: path.hotelId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/rates/coupons/{couponCode}'].get
  update:
    x-apievangelist-phrasing:
      intent: Validate a coupon code
      effect: read
      questions:
      - Is a guest's coupon code valid at a hotel?
      - How do I check a coupon code on its own, without a promotion code?
      instructions:
      - text: Validate coupon {couponCode} at hotel {hotelId}.
        slots:
          couponCode: path.couponCode
          hotelId: path.hotelId
      - text: Check whether coupon code {couponCode} works at {hotelId}.
        slots:
          couponCode: path.couponCode
          hotelId: path.hotelId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/rates/promotions/{promotionCode}'].get
  update:
    x-apievangelist-phrasing:
      intent: Validate a promotion code
      effect: read
      questions:
      - Is a promotion code valid at my hotel?
      - How do I check a promo code on its own, without a coupon?
      instructions:
      - text: Validate promotion {promotionCode} at hotel {hotelId}.
        slots:
          promotionCode: path.promotionCode
          hotelId: path.hotelId
      - text: Check whether promo code {promotionCode} is accepted at {hotelId}.
        slots:
          promotionCode: path.promotionCode
          hotelId: path.hotelId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/rates/promotionsCoupons'].get
  update:
    x-apievangelist-phrasing:
      intent: Validate a promotion and coupon together
      effect: read
      questions:
      - Does a coupon code work together with a specific promotion code?
      - Can I validate a promotion-and-coupon pair for a stay's dates?
      instructions:
      - text: Validate promotion {promotionCode} with coupon {couponCode} at hotel {hotelId}.
        slots:
          promotionCode: query.promotionCode
          couponCode: query.couponCode
          hotelId: path.hotelId
      - text: Check promo {promotionCode} plus coupon {couponCode} at {hotelId} from {startDate} to {endDate}.
        slots:
          promotionCode: query.promotionCode
          couponCode: query.couponCode
          hotelId: path.hotelId
          startDate: query.startDate
          endDate: query.endDate
      method: generated
      generated: '2026-09-26'