Oracle Hospitality · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Oracle Hospitality Profile External API
12 actions
12 updates
phrasing
extends
openapi/oracle-hospitality-profileexternal-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Oracle Hospitality's API. It is a proposal applied on top of the contract, not a document Oracle Hospitality publishes.
What the actions change
x-apievangelist-phrasing
Targets 12
$.info
$.paths['/externalSystems/{extSystemCode}/chains/{chainCode}/externalProfiles'].get
$.paths['/externalSystems/{extSystemCode}/chains/{chainCode}/externalProfiles/{profileExternalId}'].get
$.paths['/externalSystems/{extSystemCode}/playerStatistics/{profileId}'].get
$.paths['/externalSystems/{extSystemCode}/gamingOffers/{membershipNo}'].get
$.paths['/hotels/{hotelId}/travelAgents/{iataNumber}'].get
$.paths['/validatedAddresses'].get
$.paths['/validatedAddresses/{externalAddressId}'].get
$.paths['/externalSystems/{extSystemCode}/chains/{chainCode}/validateMembershipNumber'].get
$.paths['/services/profileExternal/status'].get
$.paths['/validateEmail'].post
$.paths['/validatePhone'].post
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Oracle Hospitality Profile External API
version: 1.0.0
extends: openapi/oracle-hospitality-profileexternal-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-09-26'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 11
- target: $.paths['/externalSystems/{extSystemCode}/chains/{chainCode}/externalProfiles'].get
update:
x-apievangelist-phrasing:
intent: Search guest profiles in an external system
effect: read
questions:
- How do I look up a guest profile that lives in an external CRM or loyalty system?
- Can I search external profiles by membership number or birth date?
- Which fields can I filter on when searching profiles held outside OPERA?
instructions:
- text: Search external system {system} in chain {chain} for profiles named {name}.
slots:
system: path.extSystemCode
chain: path.chainCode
name: query.name
- text: Find the external profile with membership number {membership} in {system} for chain {chain}.
slots:
membership: query.membershipNumber
system: path.extSystemCode
chain: path.chainCode
method: generated
generated: '2026-09-26'
- target: $.paths['/externalSystems/{extSystemCode}/chains/{chainCode}/externalProfiles/{profileExternalId}'].get
update:
x-apievangelist-phrasing:
intent: Download a guest profile from an external system
effect: read
questions:
- Once I find a profile in the external system, how do I pull it into OPERA?
- What ID do I need to download a single profile from an external database?
instructions:
- text: Download external profile {profile} from system {system} for chain {chain}.
slots:
profile: path.profileExternalId
system: path.extSystemCode
chain: path.chainCode
- text: Bring external profile {profile} from {system} into hotel {hotel} for chain {chain}.
slots:
profile: path.profileExternalId
system: path.extSystemCode
hotel: query.hotelId
chain: path.chainCode
method: generated
generated: '2026-09-26'
- target: $.paths['/externalSystems/{extSystemCode}/playerStatistics/{profileId}'].get
update:
x-apievangelist-phrasing:
intent: Get a guest's gaming player statistics
effect: read
questions:
- Can I see casino player statistics for a hotel guest from the gaming system?
- How do I look up player stats tied to a particular reservation?
instructions:
- text: Get player statistics for profile {profile} from gaming system {system}.
slots:
profile: path.profileId
system: path.extSystemCode
- text: Show player {player} statistics for profile {profile} on reservation {reservation} via {system}.
slots:
player: query.playerId
profile: path.profileId
reservation: query.reservationId
system: path.extSystemCode
method: generated
generated: '2026-09-26'
- target: $.paths['/externalSystems/{extSystemCode}/gamingOffers/{membershipNo}'].get
update:
x-apievangelist-phrasing:
intent: List gaming offers available to a member
effect: read
questions:
- What casino offers can I attach to a guest's profile from the gaming system?
- Can I limit gaming offers to a specific date window?
instructions:
- text: List gaming offers for membership {membership} from system {system}.
slots:
membership: path.membershipNo
system: path.extSystemCode
- text: Get offers for member {membership} in {system} valid between {start} and {end}.
slots:
membership: path.membershipNo
system: path.extSystemCode
start: query.startDate
end: query.endDate
method: generated
generated: '2026-09-26'
- target: $.paths['/hotels/{hotelId}/travelAgents/{iataNumber}'].get
update:
x-apievangelist-phrasing:
intent: Validate a travel agent's IATA number
effect: read
questions:
- How do I check whether a travel agent's IATA number is valid?
- Is there a way to verify an IATA code before creating a travel agent profile?
instructions:
- text: Validate IATA number {iata} for hotel {hotel}.
slots:
iata: path.iataNumber
hotel: path.hotelId
- text: Check that travel agent IATA {iata} is real at {hotel}.
slots:
iata: path.iataNumber
hotel: path.hotelId
method: generated
generated: '2026-09-26'
- target: $.paths['/validatedAddresses'].get
update:
x-apievangelist-phrasing:
intent: Look up address suggestions from a validation vendor
effect: read
questions:
- How do I get validated address suggestions for a guest's partially typed address?
- Can I set a timeout on the third-party address lookup?
instructions:
- text: Find validated address matches for {address} in country {country}.
slots:
address: query.addressText
country: query.country
- text: Suggest addresses for {address} in {country} in language {language}.
slots:
address: query.addressText
country: query.country
language: query.language
method: generated
generated: '2026-09-26'
- target: $.paths['/validatedAddresses/{externalAddressId}'].get
update:
x-apievangelist-phrasing:
intent: Get the full address for a validated address ID
effect: read
questions:
- After picking an address suggestion, how do I get the complete address details?
- What do I get back for one external address ID from the validation vendor?
instructions:
- text: Get the full address for validated address ID {address_id}.
slots:
address_id: path.externalAddressId
- text: Expand address suggestion {address_id} into its complete address.
slots:
address_id: path.externalAddressId
method: generated
generated: '2026-09-26'
- target: $.paths['/externalSystems/{extSystemCode}/chains/{chainCode}/validateMembershipNumber'].get
update:
x-apievangelist-phrasing:
intent: Validate a loyalty membership number externally
effect: read
questions:
- How can I check a guest's membership number against the external loyalty system?
- Does membership validation need the membership type as well as the number?
instructions:
- text: Validate membership number {membership} of type {type} with {system} for chain {chain}.
slots:
membership: query.membershipNo
type: query.membershipType
system: path.extSystemCode
chain: path.chainCode
- text: Check if {type} member {membership} exists in external system {system} for chain {chain}.
slots:
type: query.membershipType
membership: query.membershipNo
system: path.extSystemCode
chain: path.chainCode
method: generated
generated: '2026-09-26'
- target: $.paths['/services/profileExternal/status'].get
update:
x-apievangelist-phrasing:
intent: Check the ProfileExternal service status
effect: read
questions:
- Is the external profile service up and responding?
- What version of the ProfileExternal service is running?
instructions:
- text: Ping the ProfileExternal service.
- text: Check whether the external profile service is healthy for hotel {hotel}.
slots:
hotel: header.x-hotelid
method: generated
generated: '2026-09-26'
- target: $.paths['/validateEmail'].post
update:
x-apievangelist-phrasing:
intent: Validate an email address with a vendor
effect: read
questions:
- Can OPERA check whether a guest's email address is valid before I save it?
- How long will the third-party email validation wait before timing out?
instructions:
- text: Validate the email address {email}.
slots:
email: requestBody.emailAddress
- text: Check {email} with the email validation vendor, timing out after {seconds} seconds.
slots:
email: requestBody.emailAddress
seconds: requestBody.timeoutSeconds
method: generated
generated: '2026-09-26'
- target: $.paths['/validatePhone'].post
update:
x-apievangelist-phrasing:
intent: Validate a phone number with a vendor
effect: read
questions:
- How do I confirm a guest's phone number is valid through a third-party service?
- Can I set a timeout on phone number validation?
instructions:
- text: Validate the phone number {phone}.
slots:
phone: requestBody.phone
- text: Check phone {phone} with the validation vendor within {seconds} seconds.
slots:
phone: requestBody.phone
seconds: requestBody.timeoutSeconds
method: generated
generated: '2026-09-26'