3 Create Block Posting Master
Business context
Posting Master reservations linked to a block are used for two purposes:
- Billing — Where various sales charges must be routed or transferred from individual block room reservation accounts to a 'Block master account' for settlement.
- Rooming List — Where the selected Posting Master reservation is used as a template for reservations created through a rooming list. Reservations created inherit their attributes from the selected post master reservation. You can create multiple PM templates reservations according to your needs.
Within the OPERA UI, the Posting Master reservation is created automatically when either the block status is changed, when the deposit / cancellation screen is accessed, or when the rooming list operation is accessed. The Posting Master creation does not happen automatically when these changes are made through the REST APIs; therefore, it is important to check if a Posting Master already exists before creating any new ones using the REST APIs by posting deposits or any other operations that involve creating Posting Masters.
Workflow Diagram
The below workflow diagram explains typical use cases for adding a menu to an event.
Figure 3-1 Use Cases for adding a menu to an event

Customer — The meeting planner is ready to pay the deposit for the upcoming event.
Partner — The partner communicates to the property the amount the customer wants to pay as a deposit for the event, so the billing information must be ready.
OPERA Cloud — The application creates the Posting Master with the correct charges to apply as a deposit against it.
Prerequisites
Table 3-1 Prerequisites
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 3-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 custopmers OHIP is included in the subscription to OPERA Cloud Foundation. Partners need a subscription to 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 BLOCKblk/config/v1/blockStatusCodes
Workflow
Step by step solution including:
Figure 3-2 The sequence of API calls (in any direction)

Description of Steps
A typical process to create a block posting master is as follows:
- Check if the block in question already has one or several posting master reservations using getBlockPMReservations.
- If existing Posting Master Reservations are returned, use one of these as applicable.
- If no Posting Master Reservations exist, you can create one using
the postBlockPostingMaster operation.
- All reservation details for the PM are defaulted from the Block.
- Check for the Posting Master using getBlockPMReservations (optional).
Sample calls: Sample API calls for steps described in the diagram.
Sample for getBlockPMReservations
Get List of existing Posting Masters for the Block
GET{{HostName}}/blk/v1/hotels/{{HotelId}}/blocks/{{BlockId}}/postingMaster/reservations
No Body
200 Response: OK
Body:
{
"reservations": {
"reservationInfo": [
{
"reservationIdList": [
{
"id": "1264363",
"type": "Reservation"
},
{
"id": "2042429",
"type": "Confirmation"
}
],
"roomStay": {
"arrivalDate": "2024-07-07",
"departureDate": "2024-07-08",
"originalTimeSpan": {
"startDate": "2024-07-07",
"endDate": "2024-07-08"
},
"expectedTimes": {
"reservationExpectedDepartureTime": "2024-07-08"
},
"adultCount": 0,
"childCount": 0,
"roomClass": "ALL",
"roomType": "PM",
"numberOfRooms": 1,
"roomOwnershipType": "Regular",
"rateAmount": {
"amount": 0,
"currencyCode": "USD"
},
"rateSuppressed": false,
"reservationBlock": {
"blockIdList": [
{
"id": "918694",
"type": "Block"
},
{
"id": "240707CREA",
"type": "BlockCode"
}
]
},
"fixedRate": false,
"guarantee": {
"guaranteeCode": "GNON",
"shortDescription": "Group Non Deduct"
},
"marketCode": "CORI",
"sourceCode": "GSALES",
"sourceCodeDescription": "Group Sales",
"balance": {
"amount": 0,
"currencyCode": "USD"
},
"compBalance": {
"amount": 0,
"currencyCode": "USD"
},
"roomTypeCharged": "PM",
"roomNumberLocked": false,
"pseudoRoom": true
},
"departureReservationInfo": {},
"reservationGuest": {
"surname": "Create Posting Master",
"language": "E",
"vip": {},
"address": {
"streetAddress": "",
"country": {
"code": "US"
}
},
"anonymization": {},
"accompanyGuests": [],
"guestRestricted": false,
"nameType": "Group",
"id": "1696531",
"type": "Profile"
},
"sharedGuests": [],
"attachedProfiles": [
{
"name": "Create Posting Master",
"profileIdList": [
{
"id": "1696531",
"type": "Profile"
}
],
"reservationProfileType": "Group"
}
],
"reservationPaymentMethod": {},
"reservationFolioWindows": [],
"commissionsInfo": {},
"reservationIndicators": [
{
"indicatorName": "NOPOST"
},
{
"indicatorName": "PACKAGEITEM",
"count": 2
},
{
"indicatorName": "HISTORYFUTURE",
"count": 1
},
{
"indicatorName": "COMMUNICATION",
"count": 1
},
{
"indicatorName": "ASSOCIATEDPROFILES",
"count": 2
},
{
"indicatorName": "DAILYDETAILS",
"count": 0
}
],
"sourceOfSale": {
"sourceType": "PMS",
"sourceCode": "BHOTEL"
},
"waitlist": {},
"advanceCheckIn": {
"advanceCheckedIn": false
},
"hotelId": "BHOTEL",
"hotelName": "Baltimore Inner & Harbour East Hotel",
"roomStayReservation": true,
"createDateTime": "2024-02-21 10:49:30.0",
"lastModifyDateTime": "2024-02-21 10:49:30.0",
"reservationStatus": "Requested",
"computedReservationStatus": "Requested",
"walkInIndicator": false,
"commissionPayoutTo": "None",
"preRegistered": false,
"openFolio": false,
"allowMobileCheckout": false,
"optedForCommunication": false
}
],
"totalPages": 1,
"offset": 20,
"limit": 20,
"hasMore": false,
"totalResults": 1
},
"links": [
{
"href": "https://XYZ/rsv/v1/hotels/BHOTEL/reservations",
"rel": "other",
"templated": false,
"method": "POST",
"operationId": "postReservation"
},
{
"href": "https://XYZ/rsv/v1/hotels/BHOTEL/reservations/1264363",
"rel": "self",
"templated": false,
"method": "GET",
"operationId": "getReservation"
},
{
"href": "https://XYZ/rsv/v1/hotels/BHOTEL/reservations/1264363",
"rel": "self",
"templated": false,
"method": "PUT",
"operationId": "putReservation"
}
]
}
Sample for postBlockPostingMaster
Post Block Posting Master
POST{{HostName}}/blk/v1/hotels/{{HotelId}}/blocks/{{BlockId}}/status
{
"criteria": {
"hotelId": "{{HotelId}}",
"blockId": {
"type": "Block",
"idContext": "OPERA",
"id": "{{BlockId}}"
},
"responseInstruction": {
"fetchFullReservation": false
}
}
}
201 Response: Created
Posting Master ID is returned in Location parameter in RS Headers.
References
For more information, review the Best Practices in the OHIP user guide to learn more about functional and technical anti-patterns.
For more information, refer to the Creating Additional Posting Master Reservation in the OPERA Cloud Services user guide.