Skip to main content

Opera integration

Updated today

This guide explains how to connect Oracle Opera (hotel property management system) to the Newo Platform and configure an AI agent to check room availability, create reservations, cancel bookings, and reschedule stays.

πŸ—’οΈ NOTE

The Opera integration is designed for hotel room reservations only. Restaurant or dining table bookings are handled by separate integrations (for example, Mozrest).

Overview

The Opera integration connects Newo.ai to Oracle Opera's REST API, enabling a conversational AI agent (voice or chat) to manage hotel room reservations on behalf of guests. The integration supports:

  • Checking room availability by date range, occupancy, and room quantity

  • Creating new reservations

  • Cancelling existing reservations

  • Rescheduling reservation dates

  • Automatically refreshing room type catalog data

  • Optionally seeding booking and cancellation scenarios onto the agent canvas

This integration is designed for hotels and hospitality businesses that need automated reservation management through a Newo AI agent.

⚠️ CAUTION

This integration performs real operations in Oracle Opera. Reservations created, cancelled, or modified through the agent are immediately reflected in your live hotel PMS.

Requirements

Before starting setup, confirm you have the following from Oracle Opera:

  • An active Oracle Opera account with API access enabled

  • OAuth2 credentials: Client ID and Client Secret

  • App Key and Enterprise ID

  • The Hotel ID configured in Opera

  • The Opera API base URL

  • The OAuth scope configured for your account

Connect in Newo Platform

  1. Open Newo and go to Projects.

  2. Select your project and open Builder > Attributes.

  3. Set the following attributes:

Attribute

Required

Description

opera_base_url

Yes

Opera API base URL

opera_app_key

Yes

Opera application key

opera_client_id

Yes

OAuth2 Client ID

opera_client_secret

Yes

OAuth2 Client Secret

opera_enterprise_id

Yes

Enterprise ID in Opera

opera_hotel_id

Yes

Hotel ID in Opera

opera_scope

Yes

OAuth2 scope for API access

opera_enable_slot_check

No

Enable availability checking (default: True)

opera_enable_booking

No

Enable reservation creation (default: True)

opera_enable_cancellation

No

Enable cancellation (default: True)

opera_setup_scenarios

No

Auto-add booking/cancellation scenarios to canvas (default: True)

opera_static_data_update_interval

No

Room type cache refresh interval in seconds

  1. Click Save + Publish All.

On publish, the integration automatically validates the configuration, initializes project attributes, creates HTTP connectors (opera_connector and opera_token_connector), obtains an OAuth access token, registers tool definitions for availability, booking, and rescheduling, and injects booking and availability payload schemas.

❗❗ IMPORTANT

Always click Save + Publish All after modifying any credential or configuration attribute. Changes do not take effect until the project is published.

How authentication works

The integration uses an OAuth 2.0 client-credentials flow. On publish, it sends a POST request to {opera_base_url}/oauth/v1/tokens using the configured Client ID and Secret to obtain an access token. The token is stored as the opera_access_token attribute.

If the Opera API returns an HTTP 401 response during a conversation, the integration automatically refreshes the token and retries the original request β€” no manual intervention is required.

How it works

When a guest asks about room availability, the integration queries Opera's availability endpoint with the requested date range, occupancy (adults and children), and room quantity. Results are normalized into a simplified list of room offers with rates and occupancy details, cached in the session, and presented to the guest.

When the guest selects a room and confirms a booking, the integration uses the cached availability data to build and submit the reservation payload to Opera. A reservation ID is returned on success.

Room type static data (used for catalog descriptions) is refreshed automatically at the interval configured in opera_static_data_update_interval, triggered at session start.

When opera_setup_scenarios is True (the default), booking and cancellation conversation scenarios are automatically added to the agent canvas when the project is published.

Capability toggles

Three attributes control which reservation actions the agent can perform:

Enable Availability Check

Set opera_enable_slot_check to True to allow the agent to query Opera for available rooms. If disabled, the agent cannot return availability information.

Enable Booking

Set opera_enable_booking to True to allow the agent to create new reservations in Opera. If disabled, the agent can check availability but cannot complete a booking.

Enable Cancellation

Set opera_enable_cancellation to True to allow the agent to cancel existing reservations. Disable this setting if the hotel does not want cancellations handled through the AI agent.

Canvas scenario setup

When opera_setup_scenarios is set to True, the integration automatically seeds booking and cancellation conversation flows onto the agent canvas when the project is published. This provides a ready-to-use starting point without requiring manual canvas configuration.

To disable automatic canvas injection, set opera_setup_scenarios to False before publishing.

Pre-launch checklist

Before going live, verify the following:

  1. All credential attributes are set: opera_base_url, opera_client_id, opera_client_secret, opera_app_key, opera_enterprise_id, opera_hotel_id, opera_scope.

  2. Project has been published and opera_access_token is populated (not empty).

  3. Capability toggles are configured as intended: opera_enable_slot_check, opera_enable_booking, opera_enable_cancellation.

  4. If using canvas bootstrap, opera_setup_scenarios is set to True before the first publish.

Test the integration

Test through the Newo conversation interface (voice or chat).

Setup verification: After publishing, confirm that opera_access_token is not empty. An empty token means authentication failed β€” check the credential attributes and republish.

Availability: Ask the agent about available rooms for specific dates. Verify that room offers are returned with rates and occupancy details.

Booking: Select a room and complete a reservation. Verify that a reservation ID is returned and the booking appears in Opera.

Cancellation: Request a cancellation by reservation ID. Verify the reservation is cancelled in Opera.

Reschedule: Request a date change on an existing reservation. Verify that Opera reflects the updated dates.

Troubleshooting

If the agent does not respond to reservation requests:

  • Confirm all required credential attributes are set correctly in Builder > Attributes.

  • Check that opera_access_token was populated after the last publish. If it is empty, authentication failed.

  • Verify the relevant capability toggle (opera_enable_slot_check, opera_enable_booking, opera_enable_cancellation) is set to True.

  • If credentials were changed after the initial setup, republish the project to re-authenticate and re-register tools.

Did this answer your question?