11 Add a Catering Package to a Block
Business Context
Catering packages and templates are designed to make it easier for you to set up Events. They provide pre-configured resources typically used for Events. Templates and packages are similar except that templates do not include prices. To add a Catering Package to a block, you must first search for a block. This topic describes the steps to search for a block using the REST APIs, and describes how to add a Catering Package.
This below workflow diagram explains the typical use cases for adding a Catering Package to a block.
Customer — The meeting planner selects a Catering Package for the one day meeting for the Executive Committee off-site meeting.
Partner — The partner receives the requests and communicates to the property the customer selection.
OPERA Cloud — The application looks for the specific block, returns the block ID, adds the selected Catering Package, and returns the Block with the Catering Package added.
Figure 11-1 Workflow Diagram

Prerequisites
Table 11-1 Required Software Tools
Tool | Description | Links |
---|---|---|
Postman |
Postman is an API Platform that allows you to design, create and test API's. Use Postman to send API requests or to use the Postman collections provided. |
Table 11-2 Current Versions Required
OPERA Cloud Platform Module | Description | Minimum Version |
---|---|---|
OPERA Cloud Services |
The customer must have a subscription to OPERA Cloud Foundation |
|
Oracle Hospitality Integration Platform (OHIP) |
For customers, OHIP is included in the subscription to OPERA Cloud Foundation. Partners need a subscription to the Oracle Hospitality Integration Cloud Service. |
Configuration of OPERA Controls
To activate the Create Block functionality, you must ensure the following OPERA Controls are active in the target property. You can use the following API operations to validate the settings:
Ensure that application function BLOCKS - BUSINESS BLOCK is active
RQ: ent/config/v1/settings?hotelId={{HotelId}}¶meterNameWildCard=BUSINESS BLOCK
Ensure that application function EVENTS - CATERING EVENTS is active
RQ: ent/config/v1/settings?hotelId={{HotelId}}¶meterNameWildCard=CATERING EVENTS
Ensure that application function EVENTS - EVENT RESOURCES is active
RQ: ent/config/v1/settings?hotelId={{HotelId}}¶meterNameWildCard=EVENT RESOURCES
Workflow
Step by step solution including:
Figure 11-2 The sequence of API calls (in any direction)

Description of Steps
A typical process to add a Catering Package to a block is as follows:
- Search for a block using getBlock.
- Multiple search parameters are available, for example, dates, status, event type, and other parameters.
- Search for a Catering Package using getCateringPackages.
- In this specific scenario, we are searching for all Catering Packages that are matching the status and length in days of the block.
- Add the Catering Package to the block using postCateringPackages.
- The Catering Package is added as configured. Pricing, number of items, and other details cannot be modified during this operation. If changes are required, see the appropriate section in this user guide.
Sample calls: Sample API calls for the steps described in the diagram.
Sample for getBlock
In this example, the search is narrowed down to the Block ID.
Search for Block
GET{{HostName}}/operarest/CN/blk/v1/blocks?onlyOpportunities=false&offset=1&tourSeries=false&markAsRecentlyAccessed=false&leads=false&limit=20&blockIdList=1163926&blockIdType=Block&onlyPickupBlocks=false
Sample Response
{
"blockSummaries": {
"blockInfo": [
{
"blockIdList": [
{
"id": "1163926",
"type": "Block",
"idContext": "OPERA"
},
{
"id": "3329350",
"type": "GroupId",
"idContext": "OPERA"
}
],
"block": {
"hotelId": "BHOTEL",
"blockCode": "12122023SANS",
"blockName": "Co. & Co.",
"blockStatus": {
"status": {
"code": "INQ",
"description": "Inquiry"
},
"color": "Green"
},
"status": "F",
"cateringOnlyBlock": false,
"startDate": "2023-12-12",
"endDate": "2023-12-13",
"inventoryControl": "NonElastic",
"blockIndicators": [
{
"indicatorName": "OWNERS",
"count": 3
},
{
"indicatorName": "ASSOCIATED_PROFILES",
"count": 3
}
],
"rooms": 0,
"primaryOwners": {
"owner": [
{
"ownerCode": "CC",
"primary": true,
"ownership": "Block"
},
{
"ownerCode": "LBR",
"primary": true,
"ownership": "Rooms"
},
{
"ownerCode": "LBR",
"primary": true,
"ownership": "Catering"
}
],
"lockBlockOwners": false,
"lockRoomsOwners": false,
"lockCateringOwners": false
},
"blockClassification": "RegularBooking",
"isCentralSalesLead": false,
"synchronized": false,
"groupName": "Sansone & Co.",
"tentativeBlock": true,
"actualRooms": 0,
"reservationType": "GNON",
"flexibleDates": false,
"deductInventory": false,
"cateringDeductInventory": false
}
}
],
"totalPages": 1,
"offset": 20,
"limit": 20,
"hasMore": false,
"totalResults": 1
},
"masterInfoList": [],
"links": []
}
Sample for getCateringPackages
In this example, the search is by Catering Package Name.
Search for Item
GET{{HostName}}/operarest/{schemamap}/evm/config/v1/cateringPackages?duration=2&startDateTime=2025-03-30&offset=1&hotelIds={{HotelId}}&minAttendees=10&limit=-1&description=CC+Meeting+Package+w/space&fetchInstructions=PackageInfo&fetchInstructions=BlockPackageInfo&sellDate=2024-03-30&endDateTime=2025-03-31&pkgTmpltType=Packages
Sample Response:
{
"pkgTmplts": [
{
"pkgId": {
"id": "77303"
},
"hotelId": "BHOTEL",
"packageDetail": {
"pkgCode": "1DAM",
"description": {
"defaultText": "CC Meeting Package w/space",
"translatedTexts": [
{
"value": "Arabic",
"language": "A"
},
{
"value": "British English",
"language": "B"
},
{
"value": "D German",
"language": "D"
},
{
"value": "Croatian",
"language": "CRO"
}
]
},
"duration": 1,
"webBookable": false,
"isTemplate": false
},
"pricingList": [
{
"id": {
"id": "40524"
},
"priceCode": "IRMEET",
"description": "Meeting Day Package",
"totalPrice": {
"amount": 87
},
"flatRate": true
},
{
"id": {
"id": "64315"
},
"priceCode": "PRICE3",
"description": "PRICE3",
"totalPrice": {
"amount": 150
},
"flatRate": false
}
]
}
],
"totalPages": 1,
"offset": 0,
"limit": -1,
"hasMore": true,
"totalResults": 1,
"links": []
}
Sample for postCateringPackages
Add the Menu
POST {{HostName}}/operarest/CN/evm/v1/blocks/2200041036/cateringPackages
Body:
{
"requestCount": "1",
"criteria": {
"hotelId": "BHOTEL",
"blockId": {
"type": "Block",
"id": "2200041036"
},
"packageCode": "1DAM",
"priceCode": "IRMEET",
"status": "TEN",
"rentalCode": "CUSTOM",
"beginDate": "2025-03-30"
}
Limitations and Constraints
The customer must provide the partner with the correct Block Id to add the Catering Package to the block. Likewise, the customer must provide the Catering Package name and/or Id so the selected choice can be added to the Block.
References
-
Review the Anti-Patterns chapter in the OHIP user guide to learn more about functional and technical anti-patterns.
-
Fore more information, refer to the Configuring Catering Packages / Templates topic in the OPERA Cloud Services user guide.