9 Distribution Book Operations and Error Codes
A typical reservation book workflow process is as follows:
Book a reservation:
- Book a reservation: The book service receives a request to create a reservation (postReservation) using the information received in the Shop Availability response.
- The book service responds with a central confirmation number in OPERA Cloud.
Get a reservation:
- The book service receives a GET reservation call (getReservation) using the central confirmation number received during the create reservation process.
- The book service responds with a payload including all reservation details.
Modify a reservation:
- The book service receives a modify reservation call (putReservation) using the central confirmation number received during the create reservation process and the modified reservation payload.
- The book service responds with a payload including all modified reservation details.
Cancel a reservation:
- The book service receives a cancel reservation call (postCancelReservation) using the central confirmation number received during the create reservation process and the cancel reservation payload.
- The book service responds with a payload including the cancellation number.
On Hold (Session controlled) reservation creation / modification / cancellation:
Session Controlled Reservations are reservations that return a successful response marked as ‘pending’ and require a follow-up message to either commit or ignore (rollback) the reservation.
Create Session Controlled Reservation:
- The book service receives a request to create a session controlled reservation (postReservation) using the information received in the Shop Availability Response.
- The book service responds with a central confirmation number and the status as 'Pending.'
- Option 1:
-
- Commit the reservation.
- The book service responds with the central confirmation number and the status as 'Commit.'
- Option 2:
-
- Ignore the reservation. The reservation will be removed from OPERA.
- The book service responds with the central confirmation number and the status as 'Ignore.'
Modify Session Controlled Reservation
- The book service receives a request to Modify the reservation as session controlled (putReservation) using the central confirmation number received during the create reservation process and the modified reservation payload.
- The book service responds with a central confirmation number and the status as 'Pending.'
- Option 1:
-
- Commit the reservation modification.
- The book service responds with the central confirmation number and the status as 'Commit.'
- Option 2:
-
- Ignore the reservation modification. The reservation modification will be roll backed from OPERA.
- The book service responds with the central confirmation number and the status as 'Ignore.'
Cancel Session Controlled Reservation
- The book service receives a request to Cancel the reservation as session controlled (postCancelReservation) using the central confirmation number received during the create reservation process and the cancel reservation payload.
- The book service responds with a cancellation number and the status as 'Pending.'
- Option 1:
-
- Commit the reservation Modification.
- The book service responds with the cancellation number and the status as 'Commit.'
- Option 2:
-
- Ignore the reservation cancellation. The reservation cancellation will be roll backed from OPERA.
- The book service responds with the cancellation number and the status as 'Ignore.'
Sample API calls:
Create a reservation
POST {{HostName}}/book/v1/hotels/XSBOXD1/reservations
{
"reservations": [
{
"roomStay": {
"arrivalDate": "2025-02-20",
"departureDate": "2025-02-21",
"roomRates": [
{
"guestCounts": {
"adults": 1
},
"roomType": "B1K",
"ratePlanCode": "FLEX",
"numberOfUnits": 1,
"start": "2025-02-20",
"end": "2025-02-20"
}
],
"guarantee": {
"guaranteeType": "38"
},
"printRate": true
},
"reservationGuests": [
{
"profileInfo": {
"profile": {
"customer": {
"personName": [
{
"surname": "Reynolds",
"givenName": "Amiya",
"nameTitle": "Mr and Mrs",
"nameType": "Primary",
"email": "Krystina_Wuckert@gmail.com",
"phoneNumber": "466-265-1223",
"address": {
"addressLine": [
"2711 Samson Mission"
],
"cityName": "Millerhaven",
"postalCode": "CAA-90017",
"country": {
"code": "US"
},
"state": "CA"
}
}
],
"language": "en-us"
},
"profileType": "Guest"
}
},
"primary": true
}
],
"reservationPaymentMethods": [
{
"paymentMethod": "1"
}
],
"hotelCode": "XSBOXD1",
"messageId": "52541fba-0665-4658-b557-298225a708e1",
"comments": [
{
"commentTitle": "Note from Channel SANDBOX",
"comment": {
"text": {
"value": "Channel Text note\n1 king bed\nNon-Smoking\nBill guest full stay"
},
"notificationLocation": "RESERVATION",
"type": "GEN",
"internal": true,
"confidential": false,
"overrideInternal": false
}
}
]
}
]
}
200 response:
[
{
"reservationIds": [
{
"id": "224959",
"type": "Reservation",
"idContext": "Central",
"idExtension": "1"
},
{
"id": "2607384",
"type": "Confirmation",
"idContext": "Central",
"idExtension": "1"
}
],
"lastModifyDateTime": "2025-02-14T09:46:40Z",
"roomStay": {
"arrivalDate": "2025-02-20",
"departureDate": "2025-02-21",
"guestCounts": {
"adults": 1,
"children": 0
},
"guarantee": {
"guaranteeCode": "6PM",
"guaranteeType": "38"
},
"printRate": false,
"roomRates": [
{
"rates": {
"rate": [
{
"base": {
"amountBeforeTax": 300,
"currencyCode": "USD"
},
"start": "2025-02-20",
"end": "2025-02-20"
}
]
},
"guestCounts": {
"adults": 1,
"children": 0
},
"roomType": "B1K",
"ratePlanCode": "FLEX",
"numberOfUnits": 1,
"start": "2025-02-20",
"end": "2025-02-20",
"ratePlanInfo": {
"ratePlanName": "Best Flexible Rate",
"identificationRequired": false
},
"suppressRate": false
}
],
"total": {
"taxes": {
"tax": [
{
"description": "Resort fee",
"type": "Exclusive",
"code": "12",
"amount": 50,
"currencyCode": "USD"
},
{
"description": "Not known",
"type": "Exclusive",
"code": "41",
"amount": 75,
"currencyCode": "USD"
}
],
"amount": 125,
"currencyCode": "USD"
},
"amountAfterTax": 425,
"amountBeforeTax": 300
}
},
"reservationGuests": [
{
"profileInfo": {
"profileIdList": [
{
"id": "1075267",
"type": "Profile"
}
],
"profile": {
"customer": {
"personName": [
{
"givenName": "Reese",
"surname": "Stroman",
"nameTitle": "Mr and Mrs",
"nameType": "Primary",
"email": "Marc_Ankunding80@hotmail.com",
"phoneNumber": "650-595-8506",
"address": {
"addressLine": [
"9953 Stanton Glen",
null,
null,
null
],
"cityName": "Port Pascale",
"postalCode": "CAA-90017",
"country": {
"code": "US"
},
"state": "CA"
}
}
]
},
"profileType": "Guest"
}
},
"primary": true,
"arrivalTransport": {
"transportationReqd": false
},
"departureTransport": {
"transportationReqd": false
}
}
],
"reservationPaymentMethods": [
{
"paymentMethod": "1",
"folioView": "1"
}
],
"reservationMemberships": [],
"reservationPolicies": {
"cancellationPolicies": [
{
"revenueType": "Rooms",
"policy": {
"deadline": {
"absoluteDeadline": "2025-02-19T12:00:00Z"
},
"amountPercent": {
"basisType": "Nights",
"nights": 1,
"percent": 100.0,
"amount": 350.0,
"taxInclusive": false
},
"penaltyDescription": "Cancel latest by 2025-02-19 12:00 to avoid penalty of 350 USD.",
"policyCode": "1DAY",
"manual": false,
"effective": false
},
"percentageDue": 100,
"comments": "1 Day prior to arrival, forfeit 1 night",
"policyId": {
"id": "64009",
"type": "PolicyScheduleId"
}
}
],
"depositPolicies": []
},
"hotelCode": "XSBOXD1",
"comments": [
{
"comment": {
"text": {
"value": "Channel Text note\n1 king bed\nNon-Smoking\nBill guest full stay"
},
"commentTitle": "RESERVATION"
}
}
],
"reservationStatus": "Reserved",
"printRate": false,
"optedForCommunication": false,
"propertyInfo": {
"hotelId": "SBOXD1",
"hotelCode": "XSBOXD1",
"hotelName": "Sandbox New York Hotel",
"chainCode": "OH",
"address": {
"addressLine": [
"Street Line 1",
"Street Line 2"
],
"countryCode": "US",
"cityName": "New York City",
"stateProv": "US",
"postalCode": "20012"
},
"direction": {
"propertyDirection": "Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property "
},
"location": {
"propertyLocation": "Location of the Property Location of the Property Location of the Property Location of the Property Location of the Property Location of the Property Location of the Property Location of the Property "
},
"generalInformation": {
"checkInTime": "15:00",
"checkOutTime": "11:00"
},
"communications": {
"phones": [
{
"phoneTechType": "Voice",
"phoneLocationType": "Property direct",
"phoneNumber": "11111111111"
}
],
"emails": [
{
"emailType": "Property",
"email": "noreply@racle.com"
}
],
"urls": [
{
"url": "https://www.oracle.com/hospitality/"
}
]
},
"marketingMessage": "Thank you for choosing our property."
}
}
]
Get a reservation
GET {{HostName}}/book/v1/hotels/XSBOXD1/reservations/2607384
200 Response:
[
{
"reservationIds": [
{
"id": "224959",
"type": "Reservation",
"idContext": "Central",
"idExtension": "1"
},
{
"id": "2607384",
"type": "Confirmation",
"idContext": "Central",
"idExtension": "1"
}
],
"lastModifyDateTime": "2025-02-14T09:46:40Z",
"roomStay": {
"arrivalDate": "2025-02-20",
"departureDate": "2025-02-21",
"guestCounts": {
"adults": 1,
"children": 0
},
"guarantee": {
"guaranteeCode": "6PM",
"guaranteeType": "38"
},
"printRate": false,
"roomRates": [
{
"rates": {
"rate": [
{
"base": {
"amountBeforeTax": 300,
"currencyCode": "USD"
},
"start": "2025-02-20",
"end": "2025-02-20"
}
]
},
"guestCounts": {
"adults": 1,
"children": 0
},
"roomType": "B1K",
"ratePlanCode": "JVO",
"numberOfUnits": 1,
"start": "2025-02-20",
"end": "2025-02-21",
"ratePlanInfo": {
"ratePlanName": "Corporate Discount 1 (Max Stay Through 7 nights)",
"identificationRequired": false,
"mealPlan": {
"mealsIncluded": []
}
},
"suppressRate": false
}
],
"total": {
"taxes": {
"tax": [
{
"description": "Resort fee",
"type": "Exclusive",
"code": "12",
"amount": 50,
"currencyCode": "USD"
},
{
"description": "Not known",
"type": "Exclusive",
"code": "41",
"amount": 75,
"currencyCode": "USD"
}
],
"amount": 125,
"currencyCode": "USD"
},
"amountAfterTax": 425,
"amountBeforeTax": 300
}
},
"reservationGuests": [
{
"profileInfo": {
"profileIdList": [
{
"id": "1075267",
"type": "Profile"
}
],
"profile": {
"customer": {
"personName": [
{
"givenName": "Reese",
"surname": "Stroman",
"nameTitle": "Mr and Mrs",
"nameType": "Primary",
"email": "Marc_Ankunding80@hotmail.com",
"phoneNumber": "650-595-8506",
"address": {
"addressLine": [
"9953 Stanton Glen",
null,
null,
null
],
"cityName": "Port Pascale",
"postalCode": "CAA-90017",
"country": {
"code": "US"
},
"state": "CA"
}
}
]
},
"profileType": "Guest"
}
},
"primary": true,
"arrivalTransport": {
"transportationReqd": false
},
"departureTransport": {
"transportationReqd": false
}
}
],
"reservationPaymentMethods": [
{
"paymentMethod": "1",
"folioView": "1"
}
],
"reservationMemberships": [],
"reservationPolicies": {
"cancellationPolicies": [
{
"revenueType": "Rooms",
"policy": {
"deadline": {
"absoluteDeadline": "2025-02-19T12:00:00Z"
},
"amountPercent": {
"basisType": "Nights",
"nights": 1,
"percent": 100.0,
"amount": 350.0,
"taxInclusive": false
},
"penaltyDescription": "Cancel latest by 2025-02-19 12:00 to avoid penalty of 350 USD.",
"policyCode": "1DAY",
"manual": false,
"effective": false
},
"percentageDue": 100,
"comments": "1 Day prior to arrival, forfeit 1 night",
"policyId": {
"id": "64009",
"type": "PolicyScheduleId"
}
}
],
"depositPolicies": []
},
"hotelCode": "XSBOXD1",
"comments": [
{
"comment": {
"text": {
"value": "Channel Text note\n1 king bed\nNon-Smoking\nBill guest full stay"
},
"commentTitle": "RESERVATION"
}
}
],
"reservationStatus": "Reserved",
"printRate": false,
"optedForCommunication": false,
"propertyInfo": {}
}
]
Modify a reservation
PUT {{HostName}}/book/v1/hotels/XSBOXD1/reservations/2607384
{
"reservations": [
{
"reservationIdList": [
{
"id": "2607384",
"type": "Confirmation",
"idContext": "Central",
"idExtension": "1"
}
],
"roomStay": {
"arrivalDate": "2025-02-15",
"departureDate": "2025-02-17",
"roomRates": [
{
"guestCounts": {
"adults": 2
},
"roomType": "B1K",
"ratePlanCode": "FLEX",
"numberOfUnits": 1,
"start": "2025-02-15",
"end": "2025-02-16"
}
],
"guarantee": {
"guaranteeType": "5"
},
"printRate": true
},
"reservationGuests": [
{
"profileInfo": {
"profile": {
"customer": {
"personName": [
{
"surname": "Rodriguez",
"givenName": "Branson",
"nameTitle": "Mr and Mrs",
"nameType": "Primary",
"email": "Ellen21@hotmail.com",
"phoneNumber": "622-329-8204",
"address": {
"addressLine": [
"519 Adams Views"
],
"cityName": "Corkeryfurt",
"postalCode": "CAA-90017",
"country": {
"code": "US"
},
"state": "CA"
}
}
],
"language": "en-us"
},
"profileType": "Guest"
}
},
"primary": true
}
],
"reservationPaymentMethods": [
{
"paymentMethod": "5",
"folioView": "1",
"paymentCard": {
"cardType": "AX",
"cardNumber": "371449635398431",
"expirationDate": "06/29",
"cardHolderName": "SomeChannel VirtualCard"
}
}
],
"hotelCode": "XSBOXD1",
"messageId": "a20c88dc-8bc7-4733-9e8d-56be85f3821f",
"comments": [
{
"commentTitle": "Note from Channel SANDBOX",
"comment": {
"text": {
"value": "Channel Text note\n1 king bed\nNon-Smoking\nBill guest full stay"
},
"notificationLocation": "RESERVATION",
"type": "GEN",
"internal": true,
"confidential": false,
"overrideInternal": false
}
}
]
}
]
}
200 Response:
[
{
"reservationIds": [
{
"id": "224959",
"type": "Reservation",
"idContext": "Central",
"idExtension": "1"
},
{
"id": "2607384",
"type": "Confirmation",
"idContext": "Central",
"idExtension": "1"
}
],
"lastModifyDateTime": "2025-02-14T10:10:13Z",
"roomStay": {
"arrivalDate": "2025-02-15",
"departureDate": "2025-02-17",
"guestCounts": {
"adults": 2,
"children": 0
},
"guarantee": {
"guaranteeCode": "GCC",
"guaranteeType": "5"
},
"printRate": false,
"roomRates": [
{
"rates": {
"rate": [
{
"base": {
"amountBeforeTax": 300,
"currencyCode": "USD"
},
"start": "2025-02-15",
"end": "2025-02-15"
},
{
"base": {
"amountBeforeTax": 300,
"currencyCode": "USD"
},
"start": "2025-02-16",
"end": "2025-02-16"
}
]
},
"guestCounts": {
"adults": 2,
"children": 0
},
"roomType": "B1K",
"ratePlanCode": "FLEX",
"numberOfUnits": 1,
"start": "2025-02-15",
"end": "2025-02-17",
"ratePlanInfo": {
"ratePlanName": "Best Flexible Rate",
"identificationRequired": false
},
"suppressRate": false
}
],
"total": {
"taxes": {
"tax": [
{
"description": "Resort fee",
"type": "Exclusive",
"code": "12",
"amount": 100,
"currencyCode": "USD"
},
{
"description": "Not known",
"type": "Exclusive",
"code": "41",
"amount": 150,
"currencyCode": "USD"
}
],
"amount": 250,
"currencyCode": "USD"
},
"amountAfterTax": 850,
"amountBeforeTax": 600
}
},
"reservationGuests": [
{
"profileInfo": {
"profileIdList": [
{
"id": "1075273",
"type": "Profile"
}
],
"profile": {
"customer": {
"personName": [
{
"givenName": "Clifton",
"surname": "Boehm",
"nameTitle": "Mr and Mrs",
"nameType": "Primary",
"email": "Tyrique_Wiza52@gmail.com",
"phoneNumber": "612-218-1467",
"address": {
"addressLine": [
"5521 Nitzsche Mills",
null,
null,
null
],
"cityName": "Port Aracely",
"postalCode": "CAA-90017",
"country": {
"code": "US"
},
"state": "CA"
}
}
]
},
"profileType": "Guest"
}
},
"primary": true,
"arrivalTransport": {
"transportationReqd": false
},
"departureTransport": {
"transportationReqd": false
}
}
],
"reservationPaymentMethods": [
{
"paymentMethod": "5",
"folioView": "1",
"paymentCard": {
"cardType": "AX",
"cardNumber": "XXXXXXXXXXXXXXXX",
"expirationDate": "XX/XX",
"cardHolderName": "XXXXXX",
"cardNumberMasked": "XXXXXXXXXXXX8431",
"cardOrToken": "Token"
}
}
],
"reservationMemberships": [],
"reservationPolicies": {
"cancellationPolicies": [
{
"revenueType": "Rooms",
"policy": {
"deadline": {
"absoluteDeadline": "2025-02-14T12:00:00Z"
},
"amountPercent": {
"basisType": "Nights",
"nights": 1,
"percent": 100.0,
"amount": 350.0,
"taxInclusive": false
},
"penaltyDescription": "Cancel latest by 2025-02-14 12:00 to avoid penalty of 350 USD.",
"policyCode": "1DAY",
"manual": false,
"effective": false
},
"percentageDue": 100,
"comments": "1 Day prior to arrival, forfeit 1 night",
"policyId": {
"id": "64009",
"type": "PolicyScheduleId"
}
}
],
"depositPolicies": []
},
"hotelCode": "XSBOXD1",
"comments": [
{
"comment": {
"text": {
"value": "Channel Text note\n1 king bed\nNon-Smoking\nBill guest full stay"
},
"commentTitle": "RESERVATION"
}
}
],
"reservationStatus": "ReservedChanged",
"printRate": false,
"optedForCommunication": false,
"propertyInfo": {
"hotelId": "SBOXD1",
"hotelCode": "XSBOXD1",
"hotelName": "Sandbox New York Hotel",
"chainCode": "OH",
"address": {
"addressLine": [
"Street Line 1",
"Street Line 2"
],
"countryCode": "US",
"cityName": "New York City",
"stateProv": "US",
"postalCode": "20012"
},
"direction": {
"propertyDirection": "Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property "
},
"location": {
"propertyLocation": "Location of the Property Location of the Property Location of the Property Location of the Property Location of the Property Location of the Property Location of the Property Location of the Property "
},
"generalInformation": {
"checkInTime": "15:00",
"checkOutTime": "11:00"
},
"communications": {
"phones": [
{
"phoneTechType": "Voice",
"phoneLocationType": "Property direct",
"phoneNumber": "11111111111"
}
],
"emails": [
{
"emailType": "Property",
"email": "noreply@racle.com"
}
],
"urls": [
{
"url": "https://www.oracle.com/hospitality/"
}
]
},
"marketingMessage": "Thank you for choosing our property."
}
}
]
Cancel a reservation
POST {{HostName}}/book/v1/hotels/XSBOXD1/reservations/2607384/cancellations
{
"reservations": [
{
"reservationIdList": [
{
"id": "2607384",
"type": "Confirmation",
"idContext": "Central",
"idExtension": "1"
}
],
"hotelCode": "XSBOXD1",
"messageId": "1e975740-4825-4cd3-9ed6-53dbc3719d27"
}
]
}
200 Response:
[
{
"reservationIds": [
{
"id": "224959",
"type": "Reservation",
"idContext": "Central",
"idExtension": "1"
},
{
"id": "2607384",
"type": "Confirmation",
"idContext": "Central",
"idExtension": "1"
},
{
"id": "2607391",
"type": "Cancellation",
"idContext": "Central",
"idExtension": "1"
}
],
"hotelCode": "XSBOXD1",
"reservationStatus": "Cancelled",
"comments": []
}
]
Create an on hold reservation
POST {{HostName}}/book/v1/hotels/XSBOXD1/reservations
{
"reservations": [
{
"roomStay": {
"arrivalDate": "2025-02-20",
"departureDate": "2025-02-21",
"roomRates": [
{
"guestCounts": {
"adults": 1,
"children": 1,
"childAges": [
4
]
},
"roomType": "B1K",
"ratePlanCode": "FLEX",
"numberOfUnits": 1,
"start": "2025-02-20",
"end": "2025-02-20"
}
],
"guarantee": {
"guaranteeType": "5"
},
"printRate": true
},
"reservationGuests": [
{
"profileInfo": {
"profile": {
"customer": {
"personName": [
{
"surname": "D'''Amore",
"givenName": "Kurtis",
"nameTitle": "Mr and Mrs",
"nameType": "Primary",
"email": "Dan38@hotmail.com",
"phoneNumber": "930-398-2899",
"address": {
"addressLine": [
"7063 Little Shoal"
],
"cityName": "Daniellaville",
"postalCode": "CAA-90017",
"country": {
"code": "US"
},
"state": "CA"
}
}
],
"language": "en-us"
},
"profileType": "Guest"
}
},
"primary": true
}
],
"reservationPaymentMethods": [
{
"paymentMethod": "5",
"folioView": "1",
"paymentCard": {
"cardType": "AX",
"cardNumber": "371449635398431",
"expirationDate": "06/25",
"cardHolderName": "SomeChannel VirtualCard"
}
}
],
"hotelCode": "XSBOXD1",
"messageId": "86b78b93-069a-487c-8268-2d3ee4c641c1",
"comments": [
{
"comment": {
"text": {
"value": "Channel Text note\n1 king bed\nNon-Smoking\nBill guest full stay"
},
"commentTitle": "Notes from channel",
"notificationLocation": "RESERVATION",
"type": "GEN",
"internal": true,
"confidential": false,
"overrideInternal": false
}
}
],
"isSessionRequest": true
}
]
}
200 Response:
[
{
"reservationIds": [
{
"id": "224972",
"type": "Reservation",
"idContext": "Central",
"idExtension": "1"
},
{
"id": "2607397",
"type": "Confirmation",
"idContext": "Central",
"idExtension": "1"
}
],
"lastModifyDateTime": "2025-02-14T10:37:04Z",
"roomStay": {
"arrivalDate": "2025-02-20",
"departureDate": "2025-02-21",
"guestCounts": {
"adults": 1,
"children": 1
},
"guarantee": {
"guaranteeCode": "GCC",
"guaranteeType": "5"
},
"printRate": false,
"roomRates": [
{
"rates": {
"rate": [
{
"base": {
"amountBeforeTax": 300,
"currencyCode": "USD"
},
"start": "2025-02-20",
"end": "2025-02-20"
}
]
},
"guestCounts": {
"childAges": [
4
],
"adults": 1,
"children": 1
},
"roomType": "B1K",
"ratePlanCode": "FLEX",
"numberOfUnits": 1,
"start": "2025-02-20",
"end": "2025-02-20",
"ratePlanInfo": {
"ratePlanName": "Best Flexible Rate",
"identificationRequired": false
},
"suppressRate": false
}
],
"total": {
"taxes": {
"tax": [
{
"description": "Resort fee",
"type": "Exclusive",
"code": "12",
"amount": 50,
"currencyCode": "USD"
},
{
"description": "Not known",
"type": "Exclusive",
"code": "41",
"amount": 75,
"currencyCode": "USD"
}
],
"amount": 125,
"currencyCode": "USD"
},
"amountAfterTax": 425,
"amountBeforeTax": 300
}
},
"reservationGuests": [
{
"profileInfo": {
"profileIdList": [
{
"id": "1075289",
"type": "Profile"
}
],
"profile": {
"customer": {
"personName": [
{
"givenName": "Narciso",
"surname": "O'Keefe",
"nameTitle": "Mr and Mrs",
"nameType": "Primary",
"email": "Suzanne60@hotmail.com",
"phoneNumber": "286-930-2451",
"address": {
"addressLine": [
"64024 Bednar Course",
null,
null,
null
],
"cityName": "Daisyview",
"postalCode": "CAA-90017",
"country": {
"code": "US"
},
"state": "CA"
}
}
]
},
"profileType": "Guest"
}
},
"primary": true,
"arrivalTransport": {
"transportationReqd": false
},
"departureTransport": {
"transportationReqd": false
}
}
],
"reservationPaymentMethods": [
{
"paymentMethod": "5",
"folioView": "1",
"paymentCard": {
"cardType": "AX",
"cardNumber": "XXXXXXXXXXXXXXXX",
"expirationDate": "XX/XX",
"cardHolderName": "XXXXXX",
"cardNumberMasked": "XXXXXXXXXXXX8431",
"cardOrToken": "Token"
}
}
],
"reservationMemberships": [],
"reservationPolicies": {
"cancellationPolicies": [
{
"revenueType": "Rooms",
"policy": {
"deadline": {
"absoluteDeadline": "2025-02-19T12:00:00Z"
},
"amountPercent": {
"basisType": "Nights",
"nights": 1,
"percent": 100.0,
"amount": 350.0,
"taxInclusive": false
},
"penaltyDescription": "Cancel latest by 2025-02-19 12:00 to avoid penalty of 350 USD.",
"policyCode": "1DAY",
"manual": false,
"effective": false
},
"percentageDue": 100,
"comments": "1 Day prior to arrival, forfeit 1 night",
"policyId": {
"id": "64016",
"type": "PolicyScheduleId"
}
}
],
"depositPolicies": []
},
"hotelCode": "XSBOXD1",
"comments": [
{
"comment": {
"text": {
"value": "Channel Text note\n1 king bed\nNon-Smoking\nBill guest full stay"
},
"commentTitle": "Notes from channel"
}
}
],
"reservationStatus": "Reserved",
"isSessionRequest": true,
"printRate": false,
"optedForCommunication": false,
"propertyInfo": {
"hotelId": "SBOXD1",
"hotelCode": "XSBOXD1",
"hotelName": "Sandbox New York Hotel",
"chainCode": "OH",
"address": {
"addressLine": [
"Street Line 1",
"Street Line 2"
],
"countryCode": "US",
"cityName": "New York City",
"stateProv": "US",
"postalCode": "20012"
},
"direction": {
"propertyDirection": "Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property Direction to the Property "
},
"location": {
"propertyLocation": "Location of the Property Location of the Property Location of the Property Location of the Property Location of the Property Location of the Property Location of the Property Location of the Property "
},
"generalInformation": {
"checkInTime": "15:00",
"checkOutTime": "11:00"
},
"communications": {
"phones": [
{
"phoneTechType": "Voice",
"phoneLocationType": "Property direct",
"phoneNumber": "11111111111"
}
],
"emails": [
{
"emailType": "Property",
"email": "noreply@racle.com"
}
],
"urls": [
{
"url": "https://www.oracle.com/hospitality/"
}
]
},
"marketingMessage": "Thank you for choosing our property."
}
}
]
Commit an on hold reservation
POST {{HostName}}/book/v1/hotels/XSBOXD1/reservations/2607397/status
{
"reservations": [
{
"reservationIdList": [
{
"id": "2607397",
"type": "Confirmation",
"idContext": "Central",
"idExtension": "1"
}
],
"hotelCode": "XSBOXD1",
"reservationStatus": "Commit",
"lastModifyDateTime": "2020-09-17T19:21:00.0Z",
"messageId": "7f38a3a4-a0ad-4475-ac55-2963abb29d00"
}
]
}
200 Response:
{
"reservationIds": [
{
"id": "224972",
"type": "Reservation",
"idContext": "Central",
"idExtension": "1"
},
{
"id": "2607397",
"type": "Confirmation",
"idContext": "Central",
"idExtension": "1"
}
],
"reservationStatus": "Committed",
"hotelCode": "XSBOXD1"
}
Cancel an on hold reservation
POST {{HostName}}/book/v1/hotels/XSBOXD1/reservations/2607397/cancellations
{
"reservations": [
{
"reservationIdList": [
{
"id": "2607397",
"type": "Confirmation",
"idContext": "Central",
"idExtension": "1"
}
],
"hotelCode": "XSBOXD1",
"messageId": "444bdfa1-23e7-4359-bea5-93ce1bb67ef7",
"isSessionRequest": true
}
]
}
200 Response:
[
{
"reservationIds": [
{
"id": "224972",
"type": "Reservation",
"idContext": "Central",
"idExtension": "1"
},
{
"id": "2607397",
"type": "Confirmation",
"idContext": "Central",
"idExtension": "1"
},
{
"id": "2607398",
"type": "Cancellation",
"idContext": "Central",
"idExtension": "1"
}
],
"hotelCode": "XSBOXD1",
"reservationStatus": "Cancelled",
"comments": [],
"isSessionRequest": true
}
]
Limitations and constraints:
- An on hold reservation / modification / cancellation is kept on hold based on the configuration in OPERA Cloud controls. If it is not committed or ignored within that time frame, the reservation is removed from OPERA Cloud.
Error responses:
| Error code | Error Description |
|---|---|
| DRSV00011 | Update failed for {0} . There was a problem serving the request. Please try again |
| DRSV00020 | {0} is exceeded the maximum limit {1}. |
| DRSV00304 | Unable to tokenize the Credit Card with Oracle Payment Interface. Reservation is rejected. |
| DRSV00305 | Hotel Default controls are not found. |
| DRSV00306 | Payment Card details are required for the Payment Method 5 (Credit Card) |
| DRSV00307 | Travel Agency Name is required for the Profile type TravelAgent. |
| DRSV00308 | Either guaranteeCode or guaranteeType is required. |
| DRSV00314 | Block is not available to book. |
| DRSV00320 | The requested Block Code {1} is not valid in PMS. |
| DRSV00335 | Day use reservation is not allowed for a business block |
| DRSV00350 | No mapping exists for the Payment Method {1} {2}. Unable to process the reservation |
| DRSV00351 | Travel Agent Profile is required to process the reservation with Payment method 19 Travel Agent IATA Number / ID |
| DRSV00353 | Corporate ID Not Matching With Central Records, Please Correct. |
| DRSV00354 | CorporateID Required, Please Correct. |
| DRSV00355 | Unable to process the reservation for an 'Internal' Channel. |
| DRSV00389 | Invalid guarantee |
| DRSV00390 | Channel code is missing for the given hotelId {0}. |
| DRSV00391 | Failed to dequeue staged reservations for hotelId {0} and channelCode {1}. |
| DRSV00392 | Processing of staged reservations failed for hotelId {0} and channelCode {1}. |
| DRSV00393 | Failed to make an update operation while updating staged reservations for hotelId {0}. |
| DRSV00394 | Reservation ID list is empty for the given hotelId {0} and enterpriseId {1}. |
| DRSV10003 | An unexpected error occurred. Please contact your system administrator. |
| DRSV10008 | Bad request |
| DRSV20002 | Invalid check-in date |
| DRSV30000 | No Last Name provided. |
| DRSV30002 | No channel ID was provided |
| DRSV30003 | There was a problem serving the request. Please try again or contact your administrator. |
| DRSV30004 | Reservation Status {fieldname} is invalid or missing. |
| DRSV30005 | Request requires a query parameter |
| DRSV30006 | No Room Type provided |
| DRSV30007 | Reservation ID was not found |
| DRSV30008 | Field {fieldname} cannot be null or empty |
| DRSV30010 | Arrival Date is required |
| DRSV30011 | {0} is not allowed for {1} |
| DRSV30012 | Sorry, but you are not authorized to access this page |
| DRSV30013 | You do not have permission to access the option or page you have tried to reach |
| DRSV30014 | External Message ID required |
| DRSV30015 | Wrong delivery message ID |
| DRSV30016 | Either arrival date range or creation date range are mandatory |
| DRSV30017 | SUCCESS delivery status not accepted |
| DRSV30018 | Wrong delivery external message ID |
| DRSV30019 | Departure Date cannot be earlier than the Arrival Date |
| DRSV30020 | Number of rooms cannot be <1 |
| DRSV30021 | Requested reservation is not an Onhold Reservation |
| DRSV30022 | The reservation On Hold Time has expired |
| DRSV30023 | Update operation not allowed for existing On hold reservation |
| DRSV30024 | Invalid on hold reservation status value provided |
| DRSV30025 | Invalid On Hold reservation Payload provided |
| DRSV30027 | No expired On Hold Reservation present for this hotel {1} |
| DRSV30029 | Multi Leg Itinerary ID {0} not found for hotel {1} |
| DRSV30030 | Updates to Reservation with status different to OnHold or Reserved and with empty Reservation ID list is not supported |
| DRSV30031 | Reservation payload containing OhHold Reservation Status is not accepted |
| DRSV30032 | Unable to update InSession Reservation Record for hotelId {0} and confirmationId{1} |
| DRSV30033 | Cannot update an existing Reservation from {0} Status to {1} Status for hotelId: {2} |
| DRSV30034 | Unable to delete the cancellationRecord ID for hte hotel: {0} having cancellation number: {0} |
| DRSV30035 | Currency Code Is Missing, Please Correct. |
| DRSV30036 | Reservation rejected due to insufficient availability. |
| DRSV30037 | Update operation is not allowed for an already Cancelled Reservation. |
| DRSV30038 | Update operation is not allowed for OnHold reservation while in Cancelled status. OnHold Reservation needs to be ignored before further changes can be made. |
| DRSV30039 | Direct reservation update operation is not allowed for the existing OnHold Reservation. |
| DRSV30040 | Reservation can not be created due to invalid hotel: {0}. |
| DRSV30041 | Reservation {0} not found in the source. |
| DRSV30042 | Reservation cannot be created as there is no active connection with PMS for hotel : {0} |
| DRSV30043 | Reservation is already Checked In or the arrival date is a past date. Unable to Modify. |
| DRSV30044 | Reservation is already Checked In or the arrival date is a past date. Unable to Cancel. |
| DRSC00168 | Travel Agent ID Not Matching With Central Records, Please Correct |
| DRSC00208 | IATA Number Required, Please Correct |
| DRSC00240 | Credit Card Expiration Date Invalid, Please Correct |
| DRSC00242 | Credit Card Number Invalid, Please Correct |
| DRSC00249 | Rate Plan Invalid, Please Correct |
| DRSC00281 | Credit Card Details Required, Please Correct |
| DRSC00313 | Credit Card Type Not Accepted, Please Correct |
| DRSC00371 | Deposit Required, Please Correct |
| DRSC00400 | Property Not Found, Please Correct |
| DRSC004001 | Property is currently disabled in this region |
| DRSC00402 | Room Type Invalid, Please Correct |
| DRSC00427 | Property Not Available |
| DRSC00437 | Rate Not Available |
| DRSC00536 | Promotion Code Is Invalid For The Property |
| DRSC00632 | Booking Cannot Be Modified |
| DRSC10000 | Error Occurred During Reservation Processing |
| DRSC10001 | External Confirmation Not Found |
| DRSC10002 | Arrival Date Is Invalid |
| DRSC10003 | Departure Date Is Invalid |
| DRSC10004 | Room Type Is Empty |
| DRSC10005 | Rate Plan Code Is Empty |
| DRSC10007 | External Reservation ID was not found |
| DRSC10008 | Reservation ID was not found |
| DRSC10009 | Channel not allowed to use this service |
| DRSC10010 | Reservation Missing Rate Information |
| DRSC10011 | Either the guaranteeType or guaranteeCode will be accepted. Both cannot be sent in the same request. |
Anti-patterns:
Review Asynchronous APIs in the OHIP user guide to learn more about functional and technical anti-patterns.