# 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'