OPERA Xchange Interface (OXI)

The OXI Interface works on an asynchronous pattern which follows the below flow:
  1. A message is sent from an external system to OXI.

  2. The message sits in a queue.

  3. The message is processed.

  4. A record is inserted or updated in OPERA Cloud.

Once processed, a response message is returned to the external system, and it again sits in a queue until processed. This same pattern occurs for messages being generated from OPERA Cloud to an external system. The REST APIs work on a synchronous pattern. Conforming to REST architecture, the APIs allow for interaction with RESTful web services.

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