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


This images shows a workflow diagram of the typical use cases for adding a Catering Package to a block.

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.

Using the Oracle Hospitality APIs

Tool

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}}&parameterNameWildCard=BUSINESS BLOCK

Ensure that application function EVENTS - CATERING EVENTS is active

RQ: ent/config/v1/settings?hotelId={{HotelId}}&parameterNameWildCard=CATERING EVENTS

Ensure that application function EVENTS - EVENT RESOURCES is active

RQ: ent/config/v1/settings?hotelId={{HotelId}}&parameterNameWildCard=EVENT RESOURCES

Workflow

Step by step solution including:

Figure 11-2 The sequence of API calls (in any direction) 


This image shows 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:

  1. Search for a block using getBlock.
    1. Multiple search parameters are available, for example, dates, status, event type, and other parameters.
  2. Search for a Catering Package using getCateringPackages.
    1. In this specific scenario, we are searching for all Catering Packages that are matching the status and length in days of the block.
  3. Add the Catering Package to the block using postCateringPackages.
    1. 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