OPERA Xchange Interface (OXI)
-
A message is sent from an external system to OXI.
-
The message sits in a queue.
-
The message is processed.
-
A record is inserted or updated in OPERA Cloud.
Note:
The REST APIs use JSON formatting.
You can move your integration from OXI to REST and even enhance it as there is greater functionality available with the REST APIs.
OXI Outbound Messages
For messages sent from OPERA Cloud to an external application, the REST APIs utilize the same Business Event functionality as OXI. Therefore, the same data can be triggered from OPERA Cloud. There are two approaches available for use: polling for Business Events using getBusinessEvents operation or using streaming services. For more information on property Business Events available in OHIP, refer to the Business Events topic that explains both options in detail.
OXI Inbound Messages
Data from the external application to OPERA Cloud can be achieved using REST APIs. The below mapping table shows the OXI messages and shows the equivalent Property REST API to use.
Key Considerations
OXI can synchronize data between the two applications. For example, users could enter a date range of reservations, and a batch of resync messages are sent to the external system. This was often used when a hotel went live with a new interface, ensuring the external system had all the required data, including rates, inventory, restrictions, and so on. The REST Property APIs have Asynchronous APIs, which enable the user to send a REST request to OPERA Cloud for a significant amount of data (for example, 30 days of reservations). OPERA Cloud processes the request, collects all the data, and then allows the data to be fetched using the get request.
OXI provided the ability to map OPERA Cloud codes to external system codes, such as room type codes, rate codes, package codes, and so on. The REST APIs with OPERA Cloud no longer follow this approach, and codes must now be one to one. Alternatively, the external system would need to cater for mapping on their side and ensure that when posting a message to OPERA Cloud, the message contained the OPERA Cloud code(s).
OXI XML messages send a full object in XML format as opposed to business event messages (either pull or push approach), which send key value pairs in JSON format. You will receive a JSON message with the old value and the new value. For more information, see Interpreting the Event.
Rest APIs handle credit card data differently than OXI, which allowed tokenization of card data. With REST APIs, the consumer must perform a step to fetch the token from the Payment Service Provider (PSP) and then use that token in the reservation. This only applies to customers with OPI active.
Table 15-1 OXI to REST
Functional Module | OXI Inbound Operation (External System to OPERA Cloud) | REST API Operation | REST Module |
---|---|---|---|
Activity |
Create Activity |
postActivity |
ACT |
Activity |
Update Activity |
putActivity |
ACT |
Activity |
Delete Activity |
deleteActivity |
ACT |
Activity |
Fetch Activity |
getActivity |
ACT |
Profile |
New Profile |
postProfile |
CRM |
Profile |
Update Profile |
putProfile |
CRM |
Profile |
Delete Profile |
deleteProfile |
CRM |
Profile |
Merge Profile |
postMergeProfiles |
CRM |
Profile |
Create Relationship |
postProfileRelations |
CRM |
Profile |
Update Relationship |
putProfileRelations |
CRM |
Profile |
Delete Relationship |
deleteProfileRelations |
CRM |
Profile |
Lookup |
getExternalProfiles |
CRM-OUTBOUND |
Profile |
Download |
downloadExternalProfile |
CRM-OUTBOUND |
Reservations |
Add Reservation |
postReservation |
RSV |
Reservations |
Edit Reservation |
putReservation |
RSV |
Reservations |
Cancel Reservation |
postCancelReservation |
RSV |
Reservations |
Share Reservations |
postCombineShareReservations |
RSV |
Reservations |
checkout |
postCheckOut |
CSH |
Reservations |
checkin |
postCheckIn` |
FOF |
Reservations |
Cancel Checkin(reverse check in) |
deleteCheckin |
FOF |
Reservations |
Fintrx |
postDepositPayment |
CSH |
Reservations |
Turnaway |
postTurnawayReservation |
RSV |
Reservations |
Routing |
putRoutingInstructions |
RSV |
Reservations |
Reinstate |
putReinstateReservation |
CSH |
Reservations |
No Show |
putReservationStatusToNoShow |
BOF |
Reservations |
Reservation Trace |
getTracesByReservation |
RSV |
Reservations |
Waitlist Reservation |
postReservation |
RSV |
Reservations |
Reactivate Waitlist Reservation |
putReservation |
RSV |
Reservations |
Room Move |
moveInHouseGuest |
FOF |
Allotment (Group Blocks) |
New Allotment |
postBlock |
BLK |
Allotment (Group Blocks) |
Edit Allotment |
putBlock |
BLK |
Allotment (Group Blocks) |
New Allotment - Header |
postBlock |
BLK |
Allotment (Group Blocks) |
New Allotment - Header with Detail |
postBlock |
BLK |
Allotment (Group Blocks) |
Allotment - Header - Status Change |
putBlockStatus |
BLK |
Allotment (Group Blocks) |
New Block Reservation |
postReservationByBlock |
RSV |
Allotment (Group Blocks) |
Update Block Reservation |
putBlockReservations |
BLK |
Allotment (Group Blocks) |
Fetch Block Reservation |
getBlockReservations |
BLK |
Allotment (Group Blocks) |
Update Block Grid Allocation |
putBlockAllocation |
BLK |
Allotment (Group Blocks) |
Block Grid Wash |
putBlockAllocationWash |
BLK |
Allotment (Group Blocks) |
Update Block Rates |
putBlockRates |
BLK |
Allotment (Group Blocks) |
Update Block Pickup |
putBlockStatusToOpen |
BLK |
Allotment (Group Blocks) |
Update Catering Status |
putCateringStatus |
BLK |
Allotment (Group Blocks) |
Cancel Block |
postCancelBlock |
BLK |
Hurdles |
Hurdle |
Block Asynchronous, Inventory Asynchronous, Par Asynchronous & Reservation Asynchronous Modules |
ASYNC |
Inventory |
Inventory - KATOVER (overbook) |
changeSellLimitByDate |
INV |
Inventory |
Inventory - OOO |
postOutOfOrderRooms |
HSK |
Stay Records |
getStayHistory |
CRM |
|
Packages |
Packages - New |
postPackage |
RTP |
Packages |
Packages - Edit |
putPackage |
RTP |
Rates |
Rate - Header |
postRatePlan |
RTP |
Rates |
postNegotiatedRates |
RTP |
|
Rates |
postRatePlanPackages |
RTP |
|
Rates |
Rate - Detail (Rate Set) |
postRatePlanSchedules |
RTP |
Rates |
Rate Strategy |
postRateStrategy |
RTP |
RAVL (Rate Restrictions) |
Restriction - Change |
postRestriction |
PAR |
RAVL (Rate Restrictions) |
Restriction - Change |
clearAllRestrictions |
PAR |
RAVR (Rate/Room Type Restrictions) |
RAVR - New |
postRestriction |
PAR |
RTAV (Inventory Snapshot) |
RTAV |
getHotelInventory |
INV |
Configuration |
Configuration - RATE_CATEGORY |
createRateCategory |
ENTCFG |
Configuration |
New Item Inventory |
postInventoryItems |
EVMCFG |
Configuration |
New Item Load |
postItemPools |
EVMCFG |
Configuration |
Update Item Inventory |
putInventoryItems |
EVMCFG |
Configuration |
New Item Inventory Class |
postItemClasses |
EVMCFG |
Parent topic: Migrating from Legacy APIs to REST