Opera (Oracle) logo

Opera (Oracle Hospitality) Integration

Connects via OAuth 2.0 with an additional application key header. Focuses on availability, room types, and rate catalogue queries. Reservation creation is not yet supported. Opera (Oracle) official site ↗

Supported features

FeatureSupportedNotes
Hotel availabilityIncludes rate plan and room type info
Room types
Rate plansUses check-in date as sell date
Rate categories
Room ratesPricing exposed through availability and rate plans
Create reservation
List / get reservations
Payment link

Setup steps

  1. Request API credentials from Oracle Hospitality

    Contact your Oracle Hospitality account manager to request partner API access for Opera Cloud. You will receive:

    • clientId — OAuth application client ID
    • clientSecret — OAuth application client secret
    • xAppKey — application key sent as the x-app-key header on every request
    • enterpriseId — your enterprise scope identifier (optional but required for some endpoints)
    The xAppKey is different from the OAuth credentials. It must be sent on both the token request and every subsequent API call. Missing it causes 401 errors even with a valid access token.
  2. Find your hotel ID

    The hotel ID is the Opera Hotel Code (typically a short uppercase string like GRAND). It appears in Opera Cloud under Administration → Enterprise → Hotels. You need this for the hotelConfig array.

  3. Enter the credentials in the business console

    Open the business console, select your client, and go to PMS Integration. Choose Opera and fill in:

    • xAppKey — application key from step 1
    • clientId and clientSecret — OAuth credentials from step 1
    • enterpriseId — enterprise scope from step 1 (leave blank if not provided)
    • hotelConfig — hotel code and display name from step 2
  4. Enable the integration

    Toggle Active to on and save. OAuth tokens are fetched on first use and refreshed automatically. The hotel ID is sent as the x-hotelid header on every Opera API request — no additional configuration needed.