# 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 Membership API version: 1.0.0 extends: openapi/oracle-hospitality-profilemembership-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: 45 - target: $.paths['/externalSystems/{extSystemCode}/chains/{chainCode}/enrollments'].post update: x-apievangelist-phrasing: intent: Enroll a guest in an external system's loyalty program effect: write questions: - How do I enroll a guest profile into a membership program run by an external loyalty system? - Can a chain push a new loyalty enrollment through an external system code rather than directly in OPERA? instructions: - text: Enroll the guest into the membership program of external system {ext_system} for chain {chain}. slots: ext_system: path.extSystemCode chain: path.chainCode - text: Send enrollment details {enrollment} to external system {ext_system} under chain {chain}. slots: enrollment: requestBody.enrollmentInfo ext_system: path.extSystemCode chain: path.chainCode method: generated generated: '2026-09-26' - target: $.paths['/externalSystems/{extSystemCode}/profiles/{externalProfileId}/profileAwards'].put update: x-apievangelist-phrasing: intent: Redeem an award on an external system's profile effect: write questions: - How do I redeem a loyalty award for a guest identified by an external system's profile ID? - Can an external loyalty system redeem an award held on a profile it knows by its own ID? instructions: - text: Redeem an award on external profile {external_profile} in external system {ext_system}. slots: external_profile: path.externalProfileId ext_system: path.extSystemCode - text: Redeem award {award} for external system {ext_system} profile {external_profile}. slots: award: requestBody.memberAward ext_system: path.extSystemCode external_profile: path.externalProfileId method: generated generated: '2026-09-26' - target: $.paths['/externalSystems/{extSystemCode}/profiles/{externalProfileId}/memberships'].get update: x-apievangelist-phrasing: intent: Get memberships for an external system's profile effect: read questions: - What loyalty memberships does a guest have when I only know the external system's profile ID? - Can I filter an external profile's memberships by membership type and a date span of up to 90 days? instructions: - text: Show the memberships on external profile {external_profile} from external system {ext_system}. slots: external_profile: path.externalProfileId ext_system: path.extSystemCode - text: Get the {membership_type} membership for external profile {external_profile} in system {ext_system}. slots: membership_type: query.membershipType external_profile: path.externalProfileId ext_system: path.extSystemCode method: generated generated: '2026-09-26' - target: $.paths['/airline/transactions'].get update: x-apievangelist-phrasing: intent: Check status of airline membership transactions effect: read questions: - Which membership transactions has the airline partner processed so far? - Can I look up airline-processed transactions by batch ID or import date? instructions: - text: Show the airline transaction status for batch {batch_id}. slots: batch_id: query.batchId - text: List airline-processed membership transactions imported on {import_date}. slots: import_date: query.importDate method: generated generated: '2026-09-26' - target: $.paths['/availableAwardsBasedOnType'].get update: x-apievangelist-phrasing: intent: Find loyalty awards available by award type effect: read questions: - Which rate, product or room upgrade awards can a member choose from? - Can I find awards that cost fewer than a given number of points for a stay? - What room upgrade awards are available from one room category to another? instructions: - text: Find available awards based on {award_based_on} for membership type {membership_type}. slots: award_based_on: query.awardBasedOn membership_type: query.membershipType - text: Show rate awards at hotel {hotel} for arrival {arrival} and departure {departure}. slots: hotel: query.rateCriteriaHotelId arrival: query.arrivalDate departure: query.departureDate - text: List awards available for under {points} points. slots: points: query.pointsBelow method: generated generated: '2026-09-26' - target: $.paths['/awards'].delete update: x-apievangelist-phrasing: intent: Cancel an award granted to a member effect: destructive questions: - How do I cancel a loyalty award that was already granted to a member? - Can I set how many points to charge back when an award is cancelled? instructions: - text: Cancel award {award_number}. slots: award_number: query.awardNumber - text: Cancel award {award_number} with {cancel_points} cancellation points. slots: award_number: query.awardNumber cancel_points: query.actualCancelPoints method: generated generated: '2026-09-26' - target: $.paths['/awardsToGrant'].get update: x-apievangelist-phrasing: intent: List awards that can be granted to a member effect: read questions: - Which awards could I grant to this member right now? - Can I narrow grantable awards by the points required or the rate code? instructions: - text: Show the awards I can grant to membership {membership_id}. slots: membership_id: query.membershipId - text: List grantable awards requiring {points} points at hotel {hotel}. slots: points: query.totalPointsRequired hotel: query.grantAwardInfoHotelId method: generated generated: '2026-09-26' - target: $.paths['/enrollments'].post update: x-apievangelist-phrasing: intent: Enroll a guest profile in a membership program effect: write questions: - How do I sign an existing guest profile up for our loyalty program in OPERA? - Can I enroll a guest into a membership program directly without going through an external system code? instructions: - text: Enroll the guest into the membership program using {enrollment}. slots: enrollment: requestBody.enrollmentInfo - text: Create a loyalty enrollment for this guest profile in OPERA. method: generated generated: '2026-09-26' - target: $.paths['/hotels/{hotelId}/memberships/{membershipId}'].get update: x-apievangelist-phrasing: intent: Get a member's issued award points at one hotel effect: read questions: - How many award points has a member been issued at a particular property? - What award points were issued per property for one membership? instructions: - text: Show the issued award points for membership {membership_id} at hotel {hotel}. slots: membership_id: path.membershipId hotel: path.hotelId - text: Get hotel {hotel} award points issued to member {membership_id}. slots: hotel: path.hotelId membership_id: path.membershipId method: generated generated: '2026-09-26' - target: $.paths['/issueOtherAwards'].post update: x-apievangelist-phrasing: intent: Issue an OTHER-type award to a member effect: write questions: - How do I issue a gift or other non-rate award to a loyalty member? - Can I issue an OTHER award by membership type and card number instead of membership ID? instructions: - text: Issue an OTHER type award using {award_info}. slots: award_info: requestBody.issueAwardsInfo - text: Give this member a non-rate OTHER award. method: generated generated: '2026-09-26' - target: $.paths['/memberHistory'].get update: x-apievangelist-phrasing: intent: View a guest's primary membership history effect: read questions: - What changes have been made to a guest's primary membership over time? - Can I filter membership history by action type, user or date range? instructions: - text: Show the primary membership history for membership {membership_id}. slots: membership_id: query.membershipId - text: List membership history actions for {membership_id} between {from} and {to}. slots: membership_id: query.membershipId from: query.fromDate to: query.toDate method: generated generated: '2026-09-26' - target: $.paths['/membershipClaims'].get update: x-apievangelist-phrasing: intent: Search membership claims across all members effect: read questions: - Which missing-points claims are open across all members right now? - Can I search membership claims by status, hotel or claim date without a membership ID? instructions: - text: Search all membership claims with status {status}. slots: status: query.claimStatus - text: Find membership claims at hotel {hotel} filed between {start} and {end}. slots: hotel: query.hotelId start: query.claimDateStart end: query.claimDateEnd - text: Look up the membership claim for confirmation number {confirmation}. slots: confirmation: query.confirmationNo method: generated generated: '2026-09-26' - target: $.paths['/membershipClaims'].post update: x-apievangelist-phrasing: intent: Create a membership claim effect: write questions: - How do I file a claim for loyalty points a member says they are missing? - Can I open a new membership claim with instructions attached? instructions: - text: Create a membership claim with details {claim}. slots: claim: requestBody.membershipClaimDetails - text: Open a new missing-points claim for this member. method: generated generated: '2026-09-26' - target: $.paths['/membershipClaims/{claimId}'].get update: x-apievangelist-phrasing: intent: Get one membership claim effect: read questions: - What are the details and status of a specific membership claim? - Can I fetch a single claim by its claim ID? instructions: - text: Show membership claim {claim_id}. slots: claim_id: path.claimId - text: Get claim {claim_id} with instructions {instructions}. slots: claim_id: path.claimId instructions: query.fetchInstructions method: generated generated: '2026-09-26' - target: $.paths['/membershipClaims/{claimId}'].put update: x-apievangelist-phrasing: intent: Update an existing membership claim effect: write questions: - How do I change the details of a membership claim that has already been filed? - Can I update a claim's status after reviewing it? instructions: - text: Update membership claim {claim_id} with {claim}. slots: claim_id: path.claimId claim: requestBody.membershipClaimDetails - text: Change the details of existing claim {claim_id}. slots: claim_id: path.claimId method: generated generated: '2026-09-26' - target: $.paths['/membershipPoints/calculations'].post update: x-apievangelist-phrasing: intent: Start a membership points calculation effect: write questions: - How do I kick off the loyalty points calculation process? - Can I trigger points to be recalculated for stays? instructions: - text: Start membership points calculation with {calculation}. slots: calculation: requestBody.membershipPointsCalculation - text: Run the membership points calculation process now. method: generated generated: '2026-09-26' - target: $.paths['/membershipPointsExceptions'].get update: x-apievangelist-phrasing: intent: List membership points exceptions effect: read questions: - Which stays failed to earn points and are sitting as points exceptions? - Can I filter points exceptions by hotel, membership level or arrival date? instructions: - text: List membership points exceptions with status {status}. slots: status: query.exceptionStatus - text: Show {status} points exceptions at hotel {hotel} for membership type {membership_type}. slots: status: query.exceptionStatus hotel: query.hotelId membership_type: query.membershipType method: generated generated: '2026-09-26' - target: $.paths['/membershipPointsExceptions'].put update: x-apievangelist-phrasing: intent: Update membership points exceptions effect: write questions: - How do I resolve or update points exceptions after reviewing them? - Can I change several membership points exceptions in one request? instructions: - text: Update membership points exceptions with {exceptions}. slots: exceptions: requestBody.membershipPointsExceptions - text: Mark the reviewed points exceptions as resolved. method: generated generated: '2026-09-26' - target: $.paths['/membershipReservationActivity'].get update: x-apievangelist-phrasing: intent: Get today's reservation activity for members effect: read questions: - How many loyalty members are arriving, departing or in-house today? - What projected room revenue comes from members at my hotels on a given date? instructions: - text: Show member reservation activity for hotels {hotels}. slots: hotels: query.hotelIds - text: Get {membership_type} member arrivals, departures and in-house for hotels {hotels} on {date}. slots: membership_type: query.membershipType hotels: query.hotelIds date: query.propertyDate method: generated generated: '2026-09-26' - target: $.paths['/membershipTransactions/{membershipTransactionId}'].get update: x-apievangelist-phrasing: intent: Get a membership points transaction effect: read questions: - What are the details of one membership transaction? - Can I retrieve a specific loyalty transaction by its ID? instructions: - text: Show membership transaction {transaction_id}. slots: transaction_id: path.membershipTransactionId - text: Get the full record of loyalty transaction {transaction_id}. slots: transaction_id: path.membershipTransactionId method: generated generated: '2026-09-26' - target: $.paths['/membershipTransactions/{membershipTransactionId}/awardPoints'].get update: x-apievangelist-phrasing: intent: Get award points accrued on a transaction effect: read questions: - How many award points did a points transaction earn, and under which rule? - What cost per point was applied to the award points on a transaction? instructions: - text: Show the award points accrued on transaction {transaction_id}. slots: transaction_id: path.membershipTransactionId - text: List the award point rules applied to transaction {transaction_id}. slots: transaction_id: path.membershipTransactionId method: generated generated: '2026-09-26' - target: $.paths['/membershipTransactions/{membershipTransactionId}/pointRejectionReasons'].get update: x-apievangelist-phrasing: intent: See why points were not awarded on a transaction effect: read questions: - Why didn't a guest earn points for their stay? - Which rule rejected points on a transaction, such as membership level requirements not met? instructions: - text: Explain why points were rejected on transaction {transaction_id}. slots: transaction_id: path.membershipTransactionId - text: List the points rejection reasons for transaction {transaction_id}. slots: transaction_id: path.membershipTransactionId method: generated generated: '2026-09-26' - target: $.paths['/membershipTransactions/{membershipTransactionId}/rates'].get update: x-apievangelist-phrasing: intent: Get the stay rates behind a points transaction effect: read questions: - Which rate code and rate amount were used for the stay on a points transaction? - Can I compare the PMS rate with the central rate for a loyalty transaction? instructions: - text: Show the rate details for points transaction {transaction_id}. slots: transaction_id: path.membershipTransactionId - text: List stay dates, rate codes and market codes for transaction {transaction_id}. slots: transaction_id: path.membershipTransactionId method: generated generated: '2026-09-26' - target: $.paths['/membershipTransactions/{membershipTransactionId}/revenue'].get update: x-apievangelist-phrasing: intent: Get the stay revenue behind a points transaction effect: read questions: - What revenue was recognized for the stay tied to a points transaction? - Which revenue types and PMS revenue amounts count toward a member's points? instructions: - text: Show the revenue details for points transaction {transaction_id}. slots: transaction_id: path.membershipTransactionId - text: Break down stay revenue by type for transaction {transaction_id}. slots: transaction_id: path.membershipTransactionId method: generated generated: '2026-09-26' - target: $.paths['/membershipTransactions/{membershipTransactionId}/tierPoints'].get update: x-apievangelist-phrasing: intent: Get tier points accrued on a transaction effect: read questions: - How many tier points toward status did a points transaction earn? - Which rule generated the tier points on a loyalty transaction? instructions: - text: Show the tier points accrued on transaction {transaction_id}. slots: transaction_id: path.membershipTransactionId - text: List tier point rules applied to transaction {transaction_id}. slots: transaction_id: path.membershipTransactionId method: generated generated: '2026-09-26' - target: $.paths['/memberships/{membershipId}/award'].get update: x-apievangelist-phrasing: intent: Export a member's award for fulfillment effect: read questions: - How do I export a member's award details to a fulfillment house? - Can I include the award number and stay dates in a fulfillment export? instructions: - text: Export award {award_number} for membership {membership_id} for fulfillment processing. slots: award_number: query.awardNumber membership_id: path.membershipId - text: Produce the fulfillment house export for member {membership_id}. slots: membership_id: path.membershipId method: generated generated: '2026-09-26' - target: $.paths['/memberships/{membershipId}/awardExports'].get update: x-apievangelist-phrasing: intent: Get a member's award export information effect: read questions: - What award information was prepared for the fulfillment house for this member? - Can I look up previously generated award export info by award number? instructions: - text: Show award export information for membership {membership_id}. slots: membership_id: path.membershipId - text: Get the export info for award {award_number} on member {membership_id}. slots: award_number: query.awardNumber membership_id: path.membershipId method: generated generated: '2026-09-26' - target: $.paths['/memberships/{membershipId}/awards'].get update: x-apievangelist-phrasing: intent: List awards issued to a member effect: read questions: - Which awards has a loyalty member already been issued? - Can I filter a member's issued awards by hotel or booking number? instructions: - text: List the awards issued to membership {membership_id}. slots: membership_id: path.membershipId - text: Show awards issued to member {membership_id} at hotel {hotel}. slots: membership_id: path.membershipId hotel: query.hotelId method: generated generated: '2026-09-26' - target: $.paths['/memberships/{membershipId}/claims'].get update: x-apievangelist-phrasing: intent: List claims filed for one membership effect: read questions: - What missing-points claims has a specific member filed? - Can I see only one member's claims that are still pending approval? instructions: - text: List claims for membership {membership_id}. slots: membership_id: path.membershipId - text: Show claims for member {membership_id} with status {status}. slots: membership_id: path.membershipId status: query.claimStatus method: generated generated: '2026-09-26' - target: $.paths['/memberships/{membershipId}/pointsToExpire'].get update: x-apievangelist-phrasing: intent: See a member's points about to expire effect: read questions: - How many of a member's points are about to expire, and when? - Which points will lapse soon for a given membership ID? instructions: - text: Show points to expire for membership {membership_id}. slots: membership_id: path.membershipId - text: List the expiring point balances on member {membership_id}. slots: membership_id: path.membershipId method: generated generated: '2026-09-26' - target: $.paths['/memberships/{membershipId}/pointsToExpire'].put update: x-apievangelist-phrasing: intent: Extend expiring member points effect: write questions: - Can I extend the expiration date on points a member is about to lose? - How does the grace period in months apply when extending expiring points? instructions: - text: Extend expiring points for membership {membership_id}. slots: membership_id: path.membershipId - text: Extend member {membership_id}'s expiring points to {expiration}. slots: membership_id: path.membershipId expiration: requestBody.expirationDate method: generated generated: '2026-09-26' - target: $.paths['/memberships/{membershipId}/promotions'].get update: x-apievangelist-phrasing: intent: List a member's promotions effect: read questions: - Which loyalty promotions is a member signed up for? - Can I include inactive promotions when listing a member's promotions? instructions: - text: List promotions for membership {membership_id}. slots: membership_id: path.membershipId - text: Show all promotions, including inactive, for member {membership_id}. slots: membership_id: path.membershipId method: generated generated: '2026-09-26' - target: $.paths['/memberships/{membershipId}/promotions'].post update: x-apievangelist-phrasing: intent: Add a promotion to a member effect: write questions: - How do I register a member for a loyalty promotion? - Can I attach a new promotion code to a guest's membership? instructions: - text: Add promotion {promotion} to membership {membership_id}. slots: promotion: requestBody.membershipPromotion membership_id: path.membershipId - text: Sign member {membership_id} up for a new promotion. slots: membership_id: path.membershipId method: generated generated: '2026-09-26' - target: $.paths['/memberships/{membershipId}/promotions/{promotionCode}'].put update: x-apievangelist-phrasing: intent: Change a member's existing promotion effect: write questions: - How do I edit a promotion a member is already enrolled in? - Can I update the details of promotion code on an existing membership? instructions: - text: Update promotion {promotion_code} on membership {membership_id}. slots: promotion_code: path.promotionCode membership_id: path.membershipId - text: Change member {membership_id}'s promotion {promotion_code} to {promotion}. slots: membership_id: path.membershipId promotion_code: path.promotionCode promotion: requestBody.membershipPromotion method: generated generated: '2026-09-26' - target: $.paths['/memberships/{membershipId}/promotions/{promotionCode}'].delete update: x-apievangelist-phrasing: intent: Remove a promotion from a member effect: destructive questions: - How do I take a member out of a promotion they joined by mistake? - Does deleting a membership promotion just inactivate it? instructions: - text: Remove promotion {promotion_code} from membership {membership_id}. slots: promotion_code: path.promotionCode membership_id: path.membershipId - text: Inactivate member {membership_id}'s promotion {promotion_code}. slots: membership_id: path.membershipId promotion_code: path.promotionCode method: generated generated: '2026-09-26' - target: $.paths['/memberships/{membershipId}/transactions'].get update: x-apievangelist-phrasing: intent: Summarize a member's transactions by membership ID effect: read questions: - What does a member's points transaction summary look like? - Can I get a transaction summary using the membership ID? instructions: - text: Show the transaction summary for membership {membership_id}. slots: membership_id: path.membershipId - text: Summarize loyalty transactions posted to member {membership_id}. slots: membership_id: path.membershipId method: generated generated: '2026-09-26' - target: $.paths['/memberships/{membershipId}/transactions'].post update: x-apievangelist-phrasing: intent: Post a new membership transaction effect: write questions: - How do I post a points transaction to a member's account? - Can I record a manual loyalty transaction for a member? instructions: - text: Post transaction {transaction} to membership {membership_id}. slots: transaction: requestBody.membershipTransactionDetails membership_id: path.membershipId - text: Record a new points transaction for member {membership_id}. slots: membership_id: path.membershipId method: generated generated: '2026-09-26' - target: $.paths['/membershipsCard/{membershipCardNo}/membershipType/{membershipCardType}/pointsToExpire'].get update: x-apievangelist-phrasing: intent: See expiring points by membership card number effect: read questions: - Which points are about to expire when I only have the guest's membership card number? - Can a card number lookup of expiring points return more than one membership? instructions: - text: Show points to expire for card {card_no} of type {card_type}. slots: card_no: path.membershipCardNo card_type: path.membershipCardType - text: Look up expiring points by card number {card_no} and card type {card_type}. slots: card_no: path.membershipCardNo card_type: path.membershipCardType method: generated generated: '2026-09-26' - target: $.paths['/membershipsCard/{membershipCardNo}/membershipType/{membershipCardType}/transactions'].get update: x-apievangelist-phrasing: intent: Summarize member transactions by card number effect: read questions: - Can I get a transaction summary using a membership card number instead of the membership ID? - What transactions are on the membership tied to a given card number and card type? instructions: - text: Show the transaction summary for card {card_no} of type {card_type}. slots: card_no: path.membershipCardNo card_type: path.membershipCardType - text: Summarize transactions by membership card number {card_no}, card type {card_type}. slots: card_no: path.membershipCardNo card_type: path.membershipCardType method: generated generated: '2026-09-26' - target: $.paths['/profileForEnrollment'].get update: x-apievangelist-phrasing: intent: Find matching profiles before enrollment effect: read questions: - Does this guest already have a profile I should use before enrolling them in the loyalty program? - Can I match enrollment candidates by name, email or phone number? instructions: - text: Find profiles matching {given_name} {surname} for enrollment. slots: given_name: query.givenName surname: query.surname - text: Search enrollment match profiles by email {email}. slots: email: query.emailAddress method: generated generated: '2026-09-26' - target: $.paths['/profiles/{profileId}/awards/redeem'].put update: x-apievangelist-phrasing: intent: Redeem an award on an OPERA profile effect: write questions: - How do I redeem an award that sits on a guest's OPERA profile? - Can I redeem a member award using the OPERA profile ID? instructions: - text: Redeem an award on OPERA profile {profile_id}. slots: profile_id: path.profileId - text: Redeem award {award} for profile {profile_id}. slots: award: requestBody.memberAward profile_id: path.profileId method: generated generated: '2026-09-26' - target: $.paths['/profiles/{profileId}/membershipTransactionExceptions'].get update: x-apievangelist-phrasing: intent: List a profile's membership transaction exceptions effect: read questions: - Which of a guest's membership transactions ended up as exceptions? - Can I filter a profile's transaction exceptions by hotel and date range? instructions: - text: Show membership transaction exceptions for profile {profile_id}. slots: profile_id: path.profileId - text: List transaction exceptions for profile {profile_id} at hotel {hotel} from {start} to {end}. slots: profile_id: path.profileId hotel: query.hotelId start: query.start end: query.end method: generated generated: '2026-09-26' - target: $.paths['/profiles/{profileId}/memberships/history'].get update: x-apievangelist-phrasing: intent: View membership card history on a profile effect: read questions: - What membership cards has a guest held over time? - Can I see the card history for a profile's memberships? instructions: - text: Show membership card history for profile {profile_id}. slots: profile_id: path.profileId - text: List past membership cards issued to profile {profile_id}. slots: profile_id: path.profileId method: generated generated: '2026-09-26' - target: $.paths['/profiles/{profileId}/memberships/info'].get update: x-apievangelist-phrasing: intent: Get memberships on an OPERA profile effect: read questions: - Which loyalty memberships are attached to a guest's OPERA profile? - Can I narrow an OPERA profile's membership details by type or hotel? instructions: - text: Show membership details for OPERA profile {profile_id}. slots: profile_id: path.profileId - text: Get the {membership_type} membership on profile {profile_id}. slots: membership_type: query.membershipType profile_id: path.profileId method: generated generated: '2026-09-26' - target: $.paths['/services/profileMembership/status'].get update: x-apievangelist-phrasing: intent: Check the ProfileMembership service status effect: read questions: - Is the profile membership service up and responding? - How can I health-check the loyalty membership service? instructions: - text: Ping the profile membership service. - text: Check whether the membership service is available for hotel {hotel}. slots: hotel: header.x-hotelid method: generated generated: '2026-09-26'