9 Add a Catering Menu to an Event

Business Context

Events require many levels of organization including: booking a function space for the event, creating a food and beverage menu, and making sure all other resources needed for the event are available. To add a Catering Menu to an event, you must search for an event first. This topic describes the steps to search for an event using the REST APIs, and describes how to add a Catering Menu.

The below workflow diagram explains the typical use cases for adding a Catering Menu to an event.

Customer — The meeting planner who has selected a Catering Menu for the VIP group coming to the property for a one day meeting.

Partner — The partner communicates with the property the customer's choice so the Catering Menu can be added to the event.

OPERA Cloud — The application looks for the specific event, returns the event ID, adds the selected Catering Menu, and returns the event with the Catering Menu added.

Figure 9-1 Workflow Diagram


This image shows the workflow diagram of typical use cases for adding a Catering Menu to an event.

Prerequisites

Table 9-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 9-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 9-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 menu to an event is as follows:

  1. Search for events using getEvents
    1. Multiple search parameters are available for example dates, status, event type, and other parameters.
  2. Search for a menu using getCateringMenus
    1. In this specific scenario, the customer has provided you the menu name, so the search has been narrowed by name.
  3. Add the Catering Menu to the event using putEventsResources
    1. The Catering Menu is added as configured, pricing, number of attendees, 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 steps described in the diagram.

Sample for getEvents

Search for Event

GET{{HostName}}/evm/v1/events?eventStartDate=2023-12-12&eventEndDate=2023-12-12&eventStatusCodes=DEF&hotelIds={{HotelId}}&eventTypeCodes=MTG

Sample Response

{
    "eventSummaries": {
        "eventSummary": [
            {
                "eventId": {
                    "type": "EventId",
                    "idContext": "OPERA",
                    "id": "610375"
                },
                "blockIdList": [
                    {
                        "id": "875435",
                        "type": "Block"
                    }
                ],
                "blockName": "STEST - Wait 1",
                "attendees": 20,
                "functionSpaceDetails": {
                    "code": "ANNA",
                    "description": "Annapolis Room"
                },
                "functionSpaceSetup": {
                    "code": "BQ10",
                    "description": "Banquets 10 Chairs"
                },
                "eventStatus": {
                    "status": {
                        "code": "DEF",
                        "description": "Definite"
                    },
                    "color": "Red"
                },
                "cateringStatusDeductInventory": true,
                "cateringStatusReturnToInventory": false,
                "setupTime": 30,
                "tearDownTime": 30,
                "masterEvent": false,
                "subEvent": false,
                "packageEvent": false,
                "alternateEvent": false,
                "displayDoorCard": true,
                "doorCard": "STEST - Wait",
                "excludeFromForecast": false,
                "useForecastRevenue": true,
                "minimumOccupancy": 5,
                "maximumOccupancy": 60,
                "loudEvent": false,
                "rentalCode": "CUSTOM",
                "eventShared": false,
                "shareable": false,
                "includeSpaceInPackage": false,
                "hotelId": "BHOTEL",
                "blockHotelCode": "BHOTEL",
                "hasPostings": false,
                "blockHasPostings": false,
                "hasPartialPostings": false,
                "allPosted": false,
                "nothingPosted": false,
                "eventStartDate": "2023-12-12 09:00:00.0",
                "eventEndDate": "2023-12-12 17:00:00.0",
                "type": "MTG",
                "eventName": "Meeting Wait 1",
                "cateringCurrency": "USD",
                "cateringQuotedCurrency": "USD"
            }
        ],
        "totalPages": 1,
        "offset": 200,
        "limit": 200,
        "hasMore": false,
        "totalResults": 1
    },
    "links": []
}

Sample for getCateringMenus

Search for Menu

GET{{HostName}}/evm/config/v1/hotels/{{HotelId}}/cateringMenus?name=briyani&eventTypesCodes=BRK

Sample Response:

{
    "menuList": [
        {
            "id": {
                "id": "111276"
            },
            "classId": "53812",
            "hotelId": "BHOTEL",
            "info": {
                "className": "Buffet Breakfast Menus",
                "name": {
                    "defaultText": "Briyani",
                    "translatedTexts": []
                },
                "dietaryList": [],
                "eventTypes": [],
                "type": "Food",
                "quickInsertCode": "111276",
                "servingType": "Pp",
                "servingSize": "",
                "includedInMenu": false,
                "consumptionBased": false,
                "menusSold": 0,
                "webBookable": false,
                "inactive": false,
                "salesPrice": {
                    "amount": 33
                },
                "multiChoice": false
            }
        }
    ],
    "totalPages": 1,
    "offset": 20,
    "limit": 20,
    "hasMore": false,
    "totalResults": 1,
    "links": []
}

Sample for putEventsResources

Add the Catering Menu

PUT{{HostName}}/operarest/{schemamap}/evm/v1/eventsResources

Body:

{
    "eventDetails": [
        {
            "eventPrimaryInfo": {
                "eventId": {
                    "type": "EventId",
                    "idContext": "OPERA",
                    "id": "610375"
                },
                "hotelId": "BHOTEL"
            },
            "eventBlockInfo": {
                "blockIdList": [
                    {
                        "type": "Block",
                        "idContext": "OPERA",
                        "id": "875435"
                    }
                ],
                "markAsRecentlyAccessed": false
            }
        }
    ],
    "eventMenus": {
        "eventMenuInfo": [
            {
                "eventMenu": {
                    "basicInfo": {
                        "menuId": {
                            "type": "MenuId",
                            "idContext": "OPERA",
                            "id": "111276"
                        },
                        "hotelId": "BHOTEL",
                        "multiChoice": false
                    }
                }
            }
        ],
        "includedInPackage": false,
        "critical": false
    }
}

Limitations and Constraints

The customer has to provide an event ID in order for the partner to find the correct event to add the Catering Menu. Likewise, the Catering Menu name and/or menu ID has to be provided to the partner in order to add the correct one to the event.

References

  • For more information, refer to the Events topic in the OPERA Cloud Services user guide.