# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for OPERA Cloud Block API version: 1.0.0 extends: openapi/oracle-hospitality-block-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: 90 - target: $.paths['/allocation'].post update: x-apievangelist-phrasing: intent: Create a sub allocation under a master allocation effect: write questions: - How do I carve a sub allocation out of a master allocation in OPERA Cloud? - Can I create several sub allocations in one request? instructions: - text: Create a sub allocation at hotel {hotel} from these details. slots: hotel: header.x-hotelid - text: Add sub allocations {sub_allocations} to the master allocation. slots: sub_allocations: requestBody.subAllocations method: generated generated: '2026-09-26' - target: $.paths['/blockActivityLog'].get update: x-apievangelist-phrasing: intent: Read the block activity log effect: read questions: - Who changed what on our group blocks, and when? - Can I filter the block activity log by activity type and date range? - Is there a way to see only block activity performed by a particular user? instructions: - text: Show the block activity log for hotel {hotel} from {from} to {to}. slots: hotel: query.hotelId from: query.activityParamsFromDate to: query.activityParamsToDate - text: List block activity of type {type} performed by user {user}. slots: type: query.activityType user: query.userByIDsUserId - text: Search the block activity log for {text}. slots: text: query.activityParamsSearchText method: generated generated: '2026-09-26' - target: $.paths['/blockWash'].get update: x-apievangelist-phrasing: intent: Get block details needed for a block wash effect: read questions: - What block information do I need before washing unused rooms from a group block? - Can I see wash details for a block's generic room type? instructions: - text: Get block wash information for block {block} at hotel {hotel}. slots: block: query.blockId hotel: query.hotelId - text: Show wash details for block {block} and generic room type {room_type}. slots: block: query.blockId room_type: query.genericRoomType method: generated generated: '2026-09-26' - target: $.paths['/blockWash'].put update: x-apievangelist-phrasing: intent: Wash room allocation from a block over dates effect: destructive questions: - How do I release unsold group rooms from a block for a range of dates? - Can I wash allocation for only certain room types on a block? instructions: - text: Wash the block allocation described in {wash} to remove rooms for those dates and room types. slots: wash: requestBody.blockAllocationWashType - text: Remove unpicked block rooms at hotel {hotel} for the given dates and room types. slots: hotel: header.x-hotelid method: generated generated: '2026-09-26' - target: $.paths['/blocks'].get update: x-apievangelist-phrasing: intent: Find blocks with query filters effect: read questions: - How can I list all group blocks arriving in a given date range? - Can I filter blocks by status, owner or block code? - Which blocks are attached to a particular company or travel agent profile? instructions: - text: List blocks at hotel {hotel} with status {status}. slots: hotel: query.hotelId status: query.blockStatus - text: Find blocks named {name} starting on or after {start}. slots: name: query.blockName start: query.blockStartStartDate - text: Get the blocks owned by {owner} at hotel {hotel}. slots: owner: query.blockOwner hotel: query.hotelId method: generated generated: '2026-09-26' - target: $.paths['/blocks/actions/validate'].post update: x-apievangelist-phrasing: intent: Validate a block and its rate code overlaps effect: write questions: - Does this block rate code overlap with other blocks before I save it? - How do I validate block details and create them in one step? instructions: - text: Validate the block rate code details {rate_details} for overlapping blocks. slots: rate_details: requestBody.blockRateCodeDetails - text: Validate and create block details for {blocks}. slots: blocks: requestBody.blocks method: generated generated: '2026-09-26' - target: $.paths['/blocks/dailyStatistics'].get update: x-apievangelist-phrasing: intent: Get block daily statistics for a date range effect: read questions: - What do group block statistics look like day by day at my hotel? - Can I break down block daily statistics by generic room type? instructions: - text: Get block daily statistics for hotel {hotel} from {start} to {end}. slots: hotel: query.hotelId start: query.start end: query.end - text: Show daily block stats for generic room type {room_type} at {hotel}. slots: room_type: query.genericRoomType hotel: query.hotelId method: generated generated: '2026-09-26' - target: $.paths['/blocks/searches'].post update: x-apievangelist-phrasing: intent: Search blocks with criteria in a request body effect: read questions: - Can I send block search criteria as a POST body instead of query parameters? - How do I search blocks across multiple hotels with a long criteria list? instructions: - text: Search blocks via the POST search endpoint across hotels {hotels}. slots: hotels: requestBody.multipleHotelsSearchHotelIds - text: Run a POST block search for block code {code} with status {status}. slots: code: requestBody.blockCode status: requestBody.blockStatus method: generated generated: '2026-09-26' - target: $.paths['/blocks/status'].get update: x-apievangelist-phrasing: intent: Get the statuses a block can move to next effect: read questions: - From tentative, which statuses can a block be moved to next? - Can I include catering statuses in the allowed status transitions? instructions: - text: Show the next allowed block statuses after {status} at hotel {hotel}. slots: status: query.currentStatus hotel: query.hotelId - text: List status transitions from {status}, including catering statuses. slots: status: query.currentStatus method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockCode}/actions/validate'].put update: x-apievangelist-phrasing: intent: Validate a block code before using it effect: read questions: - Is this block code unique and consistent with the block code template? - Does a block code need to start on the inventory week start day? instructions: - text: Validate block code {code} at hotel {hotel}. slots: code: path.blockCode hotel: requestBody.hotelId - text: Check block code {code} for dates {start} to {end}. slots: code: path.blockCode start: requestBody.startDate end: requestBody.endDate method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/alternateDates'].put update: x-apievangelist-phrasing: intent: Change a block's alternate dates effect: write questions: - How do I update the alternate dates already recorded on a group block? - Can I edit the backup date options a group gave us? instructions: - text: Change the existing alternate dates on block {block} to {dates}. slots: block: path.blockId dates: requestBody.blockAlternateDates - text: Update block {block}'s alternate date options at hotel {hotel}. slots: block: path.blockId hotel: requestBody.hotelId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/alternateDates'].post update: x-apievangelist-phrasing: intent: Add alternate dates to a block effect: write questions: - Can I record alternate arrival dates a group would accept? - How do I add new alternate dates to a block that has none yet? instructions: - text: Add alternate dates {dates} to block {block}. slots: dates: requestBody.blockAlternateDates block: path.blockId - text: Create new alternate dates for block {block} at hotel {hotel}. slots: block: path.blockId hotel: requestBody.hotelId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/alternateDates'].delete update: x-apievangelist-phrasing: intent: Remove a block's alternate dates effect: destructive questions: - How do I clear the alternate dates on a group block? - Can I remove all alternate date options once the group confirms? instructions: - text: Delete the alternate dates on block {block}. slots: block: path.blockId - text: Clear alternate date options from block {block}. slots: block: path.blockId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/attachments'].get update: x-apievangelist-phrasing: intent: List files attached to a block effect: read questions: - What documents are attached to a group block? - Can I find a block attachment by its file name? instructions: - text: List the attachments on block {block}. slots: block: path.blockId - text: Find the attachment named {file} on block {block}. slots: file: query.attachedFileName block: path.blockId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/attachments/{attachId}'].delete update: x-apievangelist-phrasing: intent: Delete a file attached to a block effect: destructive questions: - How do I remove an old contract file attached to a block? - Can I delete a single attachment without touching the rest of the block? instructions: - text: Delete attachment {attachment} from block {block}. slots: attachment: path.attachId block: path.blockId - text: Remove file {attachment} attached to block {block}. slots: attachment: path.attachId block: path.blockId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/blockAccessExclusion'].put update: x-apievangelist-phrasing: intent: Set access exclusions on a block effect: write questions: - Can I stop certain channels or sources from booking into a block? - How do I control whether a source can create, modify or cancel block reservations? instructions: - text: Set access exclusions {exclusions} on block {block}. slots: exclusions: requestBody.blockAccessExclusions block: path.blockId - text: Exclude a booking source from block {block}'s availability. slots: block: path.blockId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/blockAccessExclusion'].delete update: x-apievangelist-phrasing: intent: Delete an access exclusion from a block effect: destructive questions: - How do I lift a booking source exclusion from a block? - Can I remove the exclusion for one source type and value only? instructions: - text: Remove the access exclusion for source {source} on block {block}. slots: source: query.sourceValue block: path.blockId - text: Delete block {block}'s exclusion of source type {source_type} at hotel {hotel}. slots: block: path.blockId source_type: query.sourceType hotel: query.hotelId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/blockCutOff'].put update: x-apievangelist-phrasing: intent: Cut off a block's allocation as of today effect: destructive questions: - How do I release a block's remaining rooms back to house as of today? - Can I force the cutoff on a group block before its cutoff date? instructions: - text: Cut off block {block} effective today. slots: block: path.blockId - text: Release block {block}'s allocation at hotel {hotel} as of the current date. slots: block: path.blockId hotel: requestBody.hotelId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/owners'].get update: x-apievangelist-phrasing: intent: List the owners of a block effect: read questions: - Who are the sales owners assigned to a group block? - Which salespeople own this block at the property? instructions: - text: Show the owners of block {block}. slots: block: path.blockId - text: List block {block}'s owners at hotel {hotel}. slots: block: path.blockId hotel: query.hotelId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/owners'].put update: x-apievangelist-phrasing: intent: Change the owners of a block effect: write questions: - How do I reassign a block from one salesperson to another? - Can I replace the existing owners on a block? instructions: - text: Change the existing owners on block {block}. slots: block: path.blockId - text: Reassign block {block} using owner criteria {criteria}. slots: block: path.blockId criteria: requestBody.criteria method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/owners'].post update: x-apievangelist-phrasing: intent: Assign an owner to a block effect: write questions: - Can I add another sales owner to a block? - How do I assign an owner to a block that has none? instructions: - text: Assign a new owner to block {block}. slots: block: path.blockId - text: Add owner {criteria} to block {block}. slots: criteria: requestBody.criteria block: path.blockId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/owners'].delete update: x-apievangelist-phrasing: intent: Remove an owner from a block effect: destructive questions: - How do I take a salesperson off a block? - Can I delete a block owner assignment? instructions: - text: Delete the owner from block {block}. slots: block: path.blockId - text: Remove the owner assignment on block {block}. slots: block: path.blockId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/rates'].put update: x-apievangelist-phrasing: intent: Refresh a block's rates effect: write questions: - After a rate code changed, how do I refresh the rates on a block? - Can I recalculate block rates without editing the room grid? instructions: - text: Refresh the rates on block {block}. slots: block: path.blockId - text: Refresh block {block} rates at hotel {hotel}. slots: block: path.blockId hotel: requestBody.hotelId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/reservations'].get update: x-apievangelist-phrasing: intent: List reservations booked in a block effect: read questions: - Which guest reservations have been picked up in a group block? - How many reservations are already booked against this block? instructions: - text: List all reservations in block {block}. slots: block: path.blockId - text: Get block {block}'s reservations at hotel {hotel}. slots: block: path.blockId hotel: query.hotelId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/reservations'].put update: x-apievangelist-phrasing: intent: Update reservations within a block effect: write questions: - Can I make a change across the reservations already booked in a block? - How do I bulk-update group reservations on a block? instructions: - text: Apply changes {criteria} to the reservations in block {block}. slots: criteria: requestBody.criteria block: path.blockId - text: Update the booked reservations on block {block}. slots: block: path.blockId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/restrictions'].get update: x-apievangelist-phrasing: intent: List restrictions on a block effect: read questions: - What booking restrictions are set on a group block for certain dates? - How far apart can the start and end dates be when reading block restrictions? instructions: - text: Show restrictions on block {block} from {start} to {end}. slots: block: path.blockId start: query.startDate end: query.endDate - text: List block {block} restrictions for room type {room_type}. slots: block: path.blockId room_type: query.roomType method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/restrictions'].put update: x-apievangelist-phrasing: intent: Clear all restrictions on a block for a date effect: destructive questions: - How do I wipe every restriction on a block for one day? - Can I clear all block restrictions at once instead of one code at a time? instructions: - text: Clear all restrictions on block {block} for {date}. slots: block: path.blockId date: requestBody.date - text: Remove every restriction from block {block} on {date} at hotel {hotel}. slots: block: path.blockId date: requestBody.date hotel: requestBody.hotelId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/restrictions'].post update: x-apievangelist-phrasing: intent: Add a restriction to a block effect: write questions: - Can I close a block to arrivals or set a minimum stay on certain dates? - How do I create a new booking restriction on a group block? instructions: - text: Create restriction {restriction} on block {block}. slots: restriction: requestBody.createBlockRestriction block: path.blockId - text: Add a booking restriction to block {block}. slots: block: path.blockId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/restrictions'].delete update: x-apievangelist-phrasing: intent: Delete a specific restriction from a block effect: destructive questions: - How do I remove one restriction code from a block for a date range? - Can I delete a block restriction only for certain room types? instructions: - text: Delete restriction {code} on block {block} at hotel {hotel} from {start} to {end}. slots: code: query.code block: path.blockId hotel: query.hotelId start: query.startDate end: query.endDate - text: Remove restriction {code} for room types {room_types} on block {block} at {hotel} between {start} and {end}. slots: code: query.code room_types: query.roomTypes block: path.blockId hotel: query.hotelId start: query.startDate end: query.endDate method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/revenueActivityLog'].get update: x-apievangelist-phrasing: intent: Get revenue changes logged for a block effect: read questions: - How has the revenue on a group block changed over the last month? - Are the block revenue change records deltas or totals? - What is the longest date span I can pull block revenue changes for? instructions: - text: Show revenue changes for block {block} between {start} and {end}. slots: block: path.blockId start: query.changeStartDate end: query.changeEndDate - text: List block {block} revenue log entries with status {status}. slots: block: path.blockId status: query.status method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/roomTypeOrder'].put update: x-apievangelist-phrasing: intent: Set the room type display order for a block effect: write questions: - Can I change the order room types appear in on a block's grid? - How do I put suites at the top of a block's room type list? instructions: - text: Set block {block}'s room type order to {room_types}. slots: block: path.blockId room_types: requestBody.roomTypes - text: Reorder the room types shown on block {block}. slots: block: path.blockId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/roomTypes'].get update: x-apievangelist-phrasing: intent: List room types for a block effect: read questions: - Which room types are available on a particular group block? - Can I get only the room types that already have allocation on a block? instructions: - text: List room types for block {block} from {start} to {end}. slots: block: path.blockId start: query.startDate end: query.endDate - text: Show only allocated room types on block {block}. slots: block: path.blockId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/roomingList'].post update: x-apievangelist-phrasing: intent: Create reservations from a block rooming list effect: write questions: - How do I load a group's rooming list into reservations on the block? - Can shared rooms be created as part of a rooming list upload? instructions: - text: Create rooming list reservations {reservations} on block {block}. slots: reservations: requestBody.reservations block: path.blockId - text: Import the rooming list for block {block} with shares {shares}. slots: block: path.blockId shares: requestBody.shares method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/roomsStatus'].get update: x-apievangelist-phrasing: intent: Get room status for a block's rooms effect: read questions: - Are the rooms assigned to a group block clean and ready? - What housekeeping status do a block's rooms have? instructions: - text: Show room status for block {block}. slots: block: path.blockId - text: Get the room readiness of block {block} at hotel {hotel}. slots: block: path.blockId hotel: query.hotelId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/statistics'].get update: x-apievangelist-phrasing: intent: Get detailed statistics for a block effect: read questions: - How is a single group block performing on pickup and revenue? - Can I narrow block statistics to one room type or booking channel? instructions: - text: Get statistics for block {block} starting {start} for {days} days. slots: block: path.blockId start: query.startDate days: query.numberOfDays - text: Show block {block} statistics for room type {room_type}. slots: block: path.blockId room_type: query.roomType method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/statusActivityLog'].get update: x-apievangelist-phrasing: intent: Get a block's status change history effect: read questions: - When did a block move from tentative to definite? - Can I see status changes on a block within a date range? instructions: - text: Show the status change log for block {block}. slots: block: path.blockId - text: List block {block} status changes between {start} and {end}. slots: block: path.blockId start: query.changeStartDate end: query.changeEndDate method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/tourSeries'].post update: x-apievangelist-phrasing: intent: Create a tour series from a block effect: write questions: - How do I generate a recurring tour series based on an existing block? - Can I set up weekly tour blocks from one template block? instructions: - text: Create a tour series from block {block}. slots: block: path.blockId - text: Build a tour series for block {block} using {criteria}. slots: block: path.blockId criteria: requestBody.criteria method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/tourSeries/validate'].put update: x-apievangelist-phrasing: intent: Validate a tour series before creating it effect: read questions: - Will my tour series settings work before I actually create the series? - Can I dry-run a tour series for a block? instructions: - text: Validate the tour series criteria {criteria} for block {block}. slots: criteria: requestBody.criteria block: path.blockId - text: Check the proposed tour series on block {block} without creating it. slots: block: path.blockId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/washSchedules'].get update: x-apievangelist-phrasing: intent: Get a block's wash schedule effect: read questions: - When is the group block scheduled to release unsold rooms? - What wash dates and percentages are set up on a block? instructions: - text: Show the wash schedule for block {block}. slots: block: path.blockId - text: Get block {block}'s wash schedule at hotel {hotel}. slots: block: path.blockId hotel: query.hotelId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/washSchedules'].put update: x-apievangelist-phrasing: intent: Change a block's wash schedules effect: write questions: - Can I change the wash date or wash percentage on an existing schedule? - How do I adjust the sell limit in a block's wash schedule? instructions: - text: Update the existing wash schedules on block {block} to {schedules}. slots: block: path.blockId schedules: requestBody.blockWashSchedulesInfo - text: Change block {block}'s current wash dates and percentages. slots: block: path.blockId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/washSchedules'].post update: x-apievangelist-phrasing: intent: Create wash schedules for a block effect: write questions: - How do I schedule automatic release of a block's unsold rooms? - Can I set a new wash schedule by percentage per room type? instructions: - text: Create wash schedules {schedules} on block {block}. slots: schedules: requestBody.blockWashSchedulesInfo block: path.blockId - text: Add a new wash schedule to block {block}. slots: block: path.blockId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{blockId}/washSchedules'].delete update: x-apievangelist-phrasing: intent: Remove all wash schedules from a block effect: destructive questions: - How do I remove all the wash schedules from a block by block ID alone? - Can I delete a block's wash schedules without passing a hotel in the path? instructions: - text: Delete the wash schedules on block {block}. slots: block: path.blockId - text: Remove every wash schedule from block {block} using the block-only endpoint. slots: block: path.blockId method: generated generated: '2026-09-26' - target: $.paths['/blocks/{sourceBlockId}/copy'].post update: x-apievangelist-phrasing: intent: Copy a block as a template for a new one effect: write questions: - Can I duplicate last year's group block for this year's event? - How do I create a new block using an existing one as a template? instructions: - text: Copy block {source} into a new block. slots: source: path.sourceBlockId - text: Create a new block from template block {source} with {criteria}. slots: source: path.sourceBlockId criteria: requestBody.criteria method: generated generated: '2026-09-26' - target: $.paths['/caterings/{eventId}/cateringStatus'].put update: x-apievangelist-phrasing: intent: Change the catering status of an event effect: write questions: - How do I move a catering event to a new status? - Can I just verify a catering status change without applying it? instructions: - text: Change the catering status of event {event}. slots: event: path.eventId - text: Verify the catering status change {change} for event {event} without saving. slots: change: requestBody.changeCateringStatus event: path.eventId method: generated generated: '2026-09-26' - target: $.paths['/centralSalesHotels'].get update: x-apievangelist-phrasing: intent: Find hotels available for central sales leads effect: read questions: - Which properties can a central sales lead be sent to in a given country? - Can I find central sales hotels by marketing city or amenity? instructions: - text: List central sales hotels in country {country}. slots: country: query.countryCode - text: Find central sales hotels in {city} that offer amenity {amenity}. slots: city: query.marketingCity amenity: query.amenityCode method: generated generated: '2026-09-26' - target: $.paths['/contractDefaults'].put update: x-apievangelist-phrasing: intent: Apply contract defaults to a block effect: write questions: - How do I reset a block to the property's contract defaults? - Can contract default settings be applied to an existing block? instructions: - text: Set contract defaults on block {block} at hotel {hotel}. slots: block: requestBody.blockId hotel: requestBody.hotelId - text: Apply the default contract settings to block {block}. slots: block: requestBody.blockId method: generated generated: '2026-09-26' - target: $.paths['/defaultBlockCode'].get update: x-apievangelist-phrasing: intent: Generate a default block code from a template effect: read questions: - What block code would the template assign to a new group? - Can I preview a default block code from a block name and start date? instructions: - text: Get the default block code for {name} starting {start}. slots: name: query.blockName start: query.startDate - text: Suggest a block code using template {template} at hotel {hotel}. slots: template: query.blockCodeTemplate hotel: query.hotelId method: generated generated: '2026-09-26' - target: $.paths['/defaultBlockCode'].post update: x-apievangelist-phrasing: intent: Create default block codes for multiple blocks effect: write questions: - Can I generate template-based block codes for many blocks at once? - How are default block codes created in bulk from the Block Code Template setting? instructions: - text: Create default block codes for blocks {blocks}. slots: blocks: requestBody.blocks - text: Generate template block codes for several blocks at hotel {hotel}. slots: hotel: header.x-hotelid method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/block'].post update: x-apievangelist-phrasing: intent: Create a new group block effect: write questions: - How do I create a new group block in OPERA Cloud? - What do I need to look up before creating a block, like status or market codes? instructions: - text: Create a new block at hotel {hotel}. slots: hotel: path.hotelId - text: Create block {blocks} at hotel {hotel}. slots: blocks: requestBody.blocks hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blockDailyRevenue'].get update: x-apievangelist-phrasing: intent: Get block revenue for a date effect: read questions: - What revenue did group blocks bring in on a particular day? - Can I filter daily block revenue by owner or block status? instructions: - text: Get block revenue at hotel {hotel} for {date}. slots: hotel: path.hotelId date: query.statisticsDate - text: Show {date} block revenue at {hotel} for owner {owner}. slots: date: query.statisticsDate hotel: path.hotelId owner: query.ownerCode method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/changesByDateTime'].get update: x-apievangelist-phrasing: intent: Find blocks created, changed or deleted recently effect: read questions: - Which blocks were created, updated or deleted since my last sync? - What is the longest time window I can query for block changes? instructions: - text: List blocks modified at hotel {hotel} since {since}. slots: hotel: path.hotelId since: query.startLastModifiedDate - text: Get block changes at {hotel} between {since} and {until}, including event changes. slots: hotel: path.hotelId since: query.startLastModifiedDate until: query.endLastModifiedDate method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}'].get update: x-apievangelist-phrasing: intent: Get a block by its OPERA ID effect: read questions: - How do I pull the full details of one block when I know its OPERA block ID? - Can I include the room grid for a date range when fetching a single block? instructions: - text: Get block {block} at hotel {hotel}. slots: block: path.blockId hotel: path.hotelId - text: Fetch OPERA block {block} at {hotel} with its grid from {start} for {days} days. slots: block: path.blockId hotel: path.hotelId start: query.startDate days: query.numberOfDays method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}'].put update: x-apievangelist-phrasing: intent: Update a block's header details by OPERA ID effect: write questions: - How do I change a block's description or market segment using its OPERA ID? - Can I update block header information on an existing group? instructions: - text: Update the header of OPERA block {block} at hotel {hotel}. slots: block: path.blockId hotel: path.hotelId - text: Change block {block} at {hotel} with {blocks}. slots: block: path.blockId hotel: path.hotelId blocks: requestBody.blocks method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}'].delete update: x-apievangelist-phrasing: intent: Delete a block effect: destructive questions: - How do I delete a group block that was entered by mistake? - Can a block be deleted if it still has reservations attached? instructions: - text: Delete block {block} at hotel {hotel}. slots: block: path.blockId hotel: path.hotelId - text: Permanently remove block {block} from {hotel}. slots: block: path.blockId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/allocation'].put update: x-apievangelist-phrasing: intent: Set room allocations and rates on a block effect: write questions: - How do I load room counts and rates into a block using its OPERA ID? - Can I add room type allocation to a block's grid? instructions: - text: Set room type allocations and rates on OPERA block {block} at hotel {hotel}. slots: block: path.blockId hotel: path.hotelId - text: Add allocation {criteria} to block {block} at {hotel}. slots: criteria: requestBody.criteria block: path.blockId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/allocationRange'].get update: x-apievangelist-phrasing: intent: Get block data for a date-range allocation update effect: read questions: - What block information do I need before updating allocation across a date range? - Can I get range allocation info for one generic room type? instructions: - text: Get allocation range information for block {block} at hotel {hotel}. slots: block: path.blockId hotel: path.hotelId - text: Show range details for block {block} at {hotel}, generic room type {room_type}. slots: block: path.blockId hotel: path.hotelId room_type: query.genericRoomType method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/allocationRange'].put update: x-apievangelist-phrasing: intent: Set block allocation across a date range effect: write questions: - Can I set the same room count on a block for a whole date range at once? - How do I update allocation for several room types over many nights by OPERA block ID? instructions: - text: Set allocation range {range} on OPERA block {block} at hotel {hotel}. slots: range: requestBody.blockAllocationRange block: path.blockId hotel: path.hotelId - text: Apply a date-range room allocation to block {block} at {hotel}. slots: block: path.blockId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/availability'].get update: x-apievangelist-phrasing: intent: Check room and rate availability in a block effect: read questions: - Are there rooms left in a group block for a guest arriving on a certain date? - What rates can I book within a block for two adults over three nights? instructions: - text: Check availability in block {block} at hotel {hotel} for arrival {arrival} for {nights} nights. slots: block: path.blockId hotel: path.hotelId arrival: query.arrivalDate nights: query.nights - text: Find block {block} availability at {hotel} for {adults} adults in room type {room_type}. slots: block: path.blockId hotel: path.hotelId adults: query.adults room_type: query.roomType method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/cancellations'].post update: x-apievangelist-phrasing: intent: Cancel a block effect: destructive questions: - How do I cancel a group block when the event falls through? - Can I record a cancellation reason when cancelling a block? instructions: - text: Cancel block {block} at hotel {hotel}. slots: block: path.blockId hotel: path.hotelId - text: Cancel block {block} at {hotel} with details {cancel}. slots: block: path.blockId hotel: path.hotelId cancel: requestBody.cancelBlock method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/cateringRevenue'].put update: x-apievangelist-phrasing: intent: Recalculate catering revenue for a block effect: write questions: - How do I recalculate the catering revenue on a business block? - Can I refresh expected and guaranteed catering revenue for one event? instructions: - text: Recalculate catering revenue on block {block} at hotel {hotel}. slots: block: path.blockId hotel: path.hotelId - text: Recalculate catering revenue for event {event} on block {block} at {hotel}. slots: event: requestBody.eventId block: path.blockId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/exchangeInterfaces'].get update: x-apievangelist-phrasing: intent: List external systems receiving a block's events effect: read questions: - Which external systems is a block sending business events to? - Can I see the exchange interfaces configured on a business block? instructions: - text: Show the exchange interfaces for block {block} at hotel {hotel}. slots: block: path.blockId hotel: path.hotelId - text: List external systems receiving events from block {block} at {hotel}. slots: block: path.blockId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/exchangeInterfaces'].put update: x-apievangelist-phrasing: intent: Set which external systems a block sends events to effect: write questions: - How do I start sending a block's business events to another external system? - Can I change the exchange interfaces on a business block? instructions: - text: Set exchange interfaces {systems} for block {block} at hotel {hotel}. slots: systems: requestBody.externalSystemsList block: path.blockId hotel: path.hotelId - text: Configure block {block} at {hotel} to send events to {systems}. slots: block: path.blockId hotel: path.hotelId systems: requestBody.externalSystemsList method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/openStatus'].put update: x-apievangelist-phrasing: intent: Open a block for reservation pickup effect: write questions: - How do I make a block ready to accept reservations? - Can I move a block straight to Open for Pickup? instructions: - text: Open block {block} at hotel {hotel} for pickup. slots: block: path.blockId hotel: path.hotelId - text: Set block {block} at {hotel} to Open for Pickup so guests can book. slots: block: path.blockId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/postingMaster'].post update: x-apievangelist-phrasing: intent: Create a posting master reservation for a block effect: write questions: - How do I create a posting master to collect group charges on a block? - Does the block have to be open for pickup before adding a posting master? instructions: - text: Create a posting master reservation on OPERA block {block} at hotel {hotel}. slots: block: path.blockId hotel: path.hotelId - text: Add a posting master to block {block} at {hotel} using {criteria}. slots: block: path.blockId hotel: path.hotelId criteria: requestBody.criteria method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/postingMaster/reservations'].get update: x-apievangelist-phrasing: intent: List posting master reservations by OPERA block ID effect: read questions: - Which posting master reservations exist on a block when I have its OPERA ID? - Where are group charges being posted for this block? instructions: - text: List posting master reservations for OPERA block {block} at hotel {hotel}. slots: block: path.blockId hotel: path.hotelId - text: Show the PM reservations on block ID {block} at {hotel}. slots: block: path.blockId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/rate/override'].put update: x-apievangelist-phrasing: intent: Allow or block rate overrides on a block effect: write questions: - Can I let agents override the block rate on group reservations? - How do I record a reason when enabling rate override on a block? instructions: - text: Set rate override to {allow} on block {block} at hotel {hotel}. slots: allow: requestBody.allowRateOverride block: path.blockId hotel: path.hotelId - text: Change block {block} at {hotel} rate override with reason {reason}. slots: block: path.blockId hotel: path.hotelId reason: requestBody.rateOverrideReason method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/regularToMasterBlock/{masterBlockCode}'].put update: x-apievangelist-phrasing: intent: Convert a regular block into a master block effect: write questions: - How do I turn a regular block into a master block with sub blocks? - What happens to the room grid when a regular block becomes a master? instructions: - text: Convert block {block} at hotel {hotel} to master block {master_code}. slots: block: path.blockId hotel: path.hotelId master_code: path.masterBlockCode - text: Make regular block {block} at {hotel} a sub block under new master {master_code}. slots: block: path.blockId hotel: path.hotelId master_code: path.masterBlockCode method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/regularToSubAllocation/{masterAllocationId}'].put update: x-apievangelist-phrasing: intent: Convert a regular block to a sub allocation effect: write questions: - Can I attach an existing regular block to a master allocation as a sub allocation? - Does the master allocation need to be in the same property? instructions: - text: Convert block {block} at hotel {hotel} into a sub allocation of master allocation {master}. slots: block: path.blockId hotel: path.hotelId master: path.masterAllocationId - text: Link regular block {block} at {hotel} under master allocation {master}. slots: block: path.blockId hotel: path.hotelId master: path.masterAllocationId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/regularToSubTour/tourHotels/{masterTourHotelId}/tours/{masterTourId}'].put update: x-apievangelist-phrasing: intent: Convert a regular block to a sub tour or itinerary effect: write questions: - How do I link a regular block to a master tour as a sub tour? - Can a sub itinerary be in a different property than its master itinerary? instructions: - text: Convert block {block} at hotel {hotel} to a sub tour of master tour {tour} at hotel {tour_hotel}. slots: block: path.blockId hotel: path.hotelId tour: path.masterTourId tour_hotel: path.masterTourHotelId - text: Attach regular block {block} at {hotel} to master itinerary {tour} held at {tour_hotel}. slots: block: path.blockId hotel: path.hotelId tour: path.masterTourId tour_hotel: path.masterTourHotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/roomRateGrid'].get update: x-apievangelist-phrasing: intent: Get a block's room and rate grid effect: read questions: - How do I see the nightly rooms and rates grid for a block? - Can the block room rate grid be paged for long events? instructions: - text: Get the room rate grid for block {block} at hotel {hotel}. slots: block: path.blockId hotel: path.hotelId - text: Show block {block}'s grid at {hotel} from {start} for {days} days. slots: block: path.blockId hotel: path.hotelId start: query.startDate days: query.numberOfDays method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/shifts'].put update: x-apievangelist-phrasing: intent: Shift a block's dates effect: write questions: - The group moved their event by a week; how do I shift the whole block? - Can I move a block's start date and keep its grid? instructions: - text: Shift block {block} at hotel {hotel} to new dates. slots: block: path.blockId hotel: path.hotelId - text: Move the dates of block {block} at {hotel} using {criteria}. slots: block: path.blockId hotel: path.hotelId criteria: requestBody.criteria method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/status'].put update: x-apievangelist-phrasing: intent: Change a block's status by OPERA ID effect: write questions: - How do I move a block from inquiry to definite using its OPERA block ID? - Why can't I move a block back from definite to inquiry? - Can I only verify a status change without applying it? instructions: - text: Change the status of OPERA block {block} at hotel {hotel} to {status}. slots: block: path.blockId hotel: path.hotelId status: requestBody.changeBlockStatus - text: Verify whether block ID {block} at {hotel} can change status, without applying it. slots: block: path.blockId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/subBlockToRegular'].put update: x-apievangelist-phrasing: intent: Convert a sub block back to a regular block effect: write questions: - How do I detach a sub block from its master and make it regular? - What happens to the master block if its only sub block becomes regular? instructions: - text: Convert sub block {block} at hotel {hotel} to a regular block. slots: block: path.blockId hotel: path.hotelId - text: Detach sub block {block} at {hotel} from its master. slots: block: path.blockId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/subBlocks'].post update: x-apievangelist-phrasing: intent: Create a sub block under an OPERA block ID effect: write questions: - How do I add a sub block under a master block I know by OPERA ID? - Can I split a group into sub blocks under one master? instructions: - text: Create a sub block under OPERA block {block} at hotel {hotel}. slots: block: path.blockId hotel: path.hotelId - text: Add sub block {criteria} beneath block ID {block} at {hotel}. slots: criteria: requestBody.criteria block: path.blockId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/blocks/{blockId}/washSchedules'].delete update: x-apievangelist-phrasing: intent: Remove a block's wash schedule for a wash date effect: destructive questions: - Can I delete the wash schedule for just one wash date on a block? - How do I remove a block wash schedule at a specific hotel? instructions: - text: Delete the wash schedule for {wash_date} on block {block} at hotel {hotel}. slots: wash_date: query.washDate block: path.blockId hotel: path.hotelId - text: Remove block {block}'s wash schedule at {hotel}. slots: block: path.blockId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/externalSystems/{externalSystemCode}/blocks/{blockExternalId}'].get update: x-apievangelist-phrasing: intent: Get a block by an external system's ID effect: read questions: - Can I look up a block using the ID my sales system assigned instead of the OPERA ID? - How do I fetch a block by its external reference? instructions: - text: Get block {ext_id} from external system {system} at hotel {hotel}. slots: ext_id: path.blockExternalId system: path.externalSystemCode hotel: path.hotelId - text: Fetch the block known as {ext_id} in {system} at {hotel}, including instructions {fetch}. slots: ext_id: path.blockExternalId system: path.externalSystemCode hotel: path.hotelId fetch: query.fetchInstructions method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/externalSystems/{externalSystemCode}/blocks/{blockExternalId}'].put update: x-apievangelist-phrasing: intent: Update a block using an external system's ID effect: write questions: - How do I update a block when I only have my external system's block ID? - Can an external sales system push block header changes by its own reference? instructions: - text: Update block {ext_id} from external system {system} at hotel {hotel}. slots: ext_id: path.blockExternalId system: path.externalSystemCode hotel: path.hotelId - text: Change external block {ext_id} in {system} at {hotel} with {blocks}. slots: ext_id: path.blockExternalId system: path.externalSystemCode hotel: path.hotelId blocks: requestBody.blocks method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/externalSystems/{externalSystemCode}/blocks/{blockExternalId}/allocation/roomTypes/{roomType}'].put update: x-apievangelist-phrasing: intent: Set one room type's allocation by external block ID effect: write questions: - Can my external system set the allocation for a single room type on its block? - How do I load rooms and rates for one room type using an external block reference? instructions: - text: Set room type {room_type} allocation on external block {ext_id} from {system} at hotel {hotel}. slots: room_type: path.roomType ext_id: path.blockExternalId system: path.externalSystemCode hotel: path.hotelId - text: Load rates and rooms for {room_type} on {system} block {ext_id} at {hotel}. slots: room_type: path.roomType system: path.externalSystemCode ext_id: path.blockExternalId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/externalSystems/{externalSystemCode}/blocks/{blockExternalId}/allocationRange'].put update: x-apievangelist-phrasing: intent: Set block allocation over dates by external ID effect: write questions: - Can my external system set a date-range allocation on a block by its own ID? - How do I update several room types across nights for an externally referenced block? instructions: - text: Set a date-range allocation on external block {ext_id} from {system} at hotel {hotel}. slots: ext_id: path.blockExternalId system: path.externalSystemCode hotel: path.hotelId - text: Apply allocation range {range} to {system} block {ext_id} at {hotel}. slots: range: requestBody.blockAllocationRange system: path.externalSystemCode ext_id: path.blockExternalId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/externalSystems/{externalSystemCode}/blocks/{blockExternalId}/postingMaster/reservations'].get update: x-apievangelist-phrasing: intent: List posting master reservations by external block ID effect: read questions: - Can I get a block's posting master reservations using my external system's block ID? - Where are charges posted for a block I track externally? instructions: - text: List posting master reservations for external block {ext_id} from {system} at hotel {hotel}. slots: ext_id: path.blockExternalId system: path.externalSystemCode hotel: path.hotelId - text: Show PM reservations on {system} block {ext_id} at {hotel}. slots: system: path.externalSystemCode ext_id: path.blockExternalId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/externalSystems/{externalSystemCode}/blocks/{blockExternalId}/status'].put update: x-apievangelist-phrasing: intent: Change a block's status by external ID effect: write questions: - How does my external sales system move a block to definite using its own block ID? - Can I verify a status change for an externally referenced block before applying it? instructions: - text: Change the status of external block {ext_id} from {system} at hotel {hotel} to {status}. slots: ext_id: path.blockExternalId system: path.externalSystemCode hotel: path.hotelId status: requestBody.changeBlockStatus - text: Verify a status change for {system} block {ext_id} at {hotel} without applying it. slots: system: path.externalSystemCode ext_id: path.blockExternalId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/externalSystems/{externalSystemCode}/blocks/{blockExternalId}/subBlocks'].post update: x-apievangelist-phrasing: intent: Create a sub block under an external block ID effect: write questions: - Can I create a sub block under a master that I know only by its external ID? - How does an external system add sub blocks to its own master block? instructions: - text: Create a sub block under external block {ext_id} from {system} at hotel {hotel}. slots: ext_id: path.blockExternalId system: path.externalSystemCode hotel: path.hotelId - text: Add sub block {criteria} beneath {system} block {ext_id} at {hotel}. slots: criteria: requestBody.criteria system: path.externalSystemCode ext_id: path.blockExternalId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/leads/{leadId}/propertyLeads'].post update: x-apievangelist-phrasing: intent: Create property leads from a central lead effect: write questions: - How do I send a central sales lead out to specific properties? - Can one central lead create property leads for several hotels? instructions: - text: Create property leads for hotels {hotels} from central lead {lead}. slots: hotels: requestBody.hotelCodeList lead: path.leadId - text: Distribute lead {lead} at hotel {hotel} to other properties. slots: lead: path.leadId hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/tracesByDateRange'].get update: x-apievangelist-phrasing: intent: Get reservation and block traces for dates effect: read questions: - Which follow-up traces are due for reservations and blocks this week? - Can I filter traces by department? - What is the longest date range allowed when pulling traces? instructions: - text: Get traces at hotel {hotel} from {begin} to {end}. slots: hotel: path.hotelId begin: query.beginDate end: query.endDate - text: List {department} traces at {hotel} for the coming days. slots: department: query.department hotel: path.hotelId method: generated generated: '2026-09-26' - target: $.paths['/inventory'].put update: x-apievangelist-phrasing: intent: Borrow room inventory for a block reservation effect: write questions: - The block is out of a room type; can I borrow rooms from the house or another type? - How do I borrow inventory so a block reservation can be made? instructions: - text: Borrow inventory for block {block} room type {room_type}. slots: block: requestBody.blockId room_type: requestBody.roomType - text: Borrow rooms {borrow} into block {block} for reservation {reservation}. slots: borrow: requestBody.borrowInventoryList block: requestBody.blockId reservation: requestBody.existingReservationId method: generated generated: '2026-09-26' - target: $.paths['/inventoryReleased'].put update: x-apievangelist-phrasing: intent: Return borrowed inventory from a block effect: write questions: - How do I give back rooms a block borrowed from house inventory? - Can borrowed rooms be returned to the original room type? instructions: - text: Return borrowed inventory on block {block} for room type {room_type}. slots: block: requestBody.blockId room_type: requestBody.roomType - text: Give back {returns} borrowed by block {block} to its original source. slots: returns: requestBody.inventoryToReturnList block: requestBody.blockId method: generated generated: '2026-09-26' - target: $.paths['/inventoryToBorrow'].get update: x-apievangelist-phrasing: intent: Find inventory a block can borrow effect: read questions: - Where can I borrow rooms from when a block runs short on a room type? - How many rooms are available to borrow for a block on certain dates? instructions: - text: Find borrowable inventory for {rooms} rooms in block {block} at hotel {hotel} from {start}. slots: rooms: query.requiredRooms block: query.blockId hotel: query.hotelId start: query.startDate - text: Show what room type {room_type} inventory block {block} at {hotel} can borrow for {rooms} rooms starting {start}. slots: room_type: query.roomType block: query.blockId hotel: query.hotelId rooms: query.requiredRooms start: query.startDate method: generated generated: '2026-09-26' - target: $.paths['/recentlyAccessedBlocks'].get update: x-apievangelist-phrasing: intent: List recently accessed blocks effect: read questions: - Which blocks did I open most recently? - Can I get a quick list of recently viewed group blocks? instructions: - text: Show my recently accessed blocks at hotel {hotel}. slots: hotel: header.x-hotelid - text: List the blocks I viewed recently. method: generated generated: '2026-09-26' - target: $.paths['/salesAllowances'].get update: x-apievangelist-phrasing: intent: Get sales allowances for a ceiling effect: read questions: - What is the maximum number of rooms that can be sold under a sales allowance? - Can I see the sales allowance for a specific ceiling? instructions: - text: Get the sales allowance for ceiling {ceiling}. slots: ceiling: query.ceilingId - text: Show the sales allowances at hotel {hotel}. slots: hotel: header.x-hotelid method: generated generated: '2026-09-26' - target: $.paths['/services/block/status'].get update: x-apievangelist-phrasing: intent: Check the Block service version and status effect: read questions: - Is the OPERA Cloud Block service up? - What version of the Block service is deployed? instructions: - text: Ping the Block service for hotel {hotel}. slots: hotel: header.x-hotelid - text: Get the Block service version. method: generated generated: '2026-09-26'