Oracle Hospitality Profile API

The Profile APIs allow you to view, create, update, and delete profiles in OPERA Cloud. Each time a new profile in created in OPERA Cloud, a profileID is assigned. Use this profileID to retrieve and update details relating to that profile. The resource 'Companies' includes group, source, company and travel agent profile types. The resource 'Guests' includes individual and contact profile types.

Business capability
Guest Profile & Identity Management BC-4040.10

Operations 110

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

POST /externalSystems/{extSystemCode}/memberships/{membershipType}/membershipIDs Generate a membership number via an external system · Generate membership number #
Ask an LLM
“Can a new loyalty membership number be generated through an external system's membership endpoint?”
“Where do I request a membership ID tied to a specific external system code?”
Tell an agent
Generate a new {membershipType} membership ID through external system {extSystemCode}.
Ask external system {extSystemCode} to issue a fresh membership ID for program {membershipType}.
GET /address Look up cities and states · Get city states #
Ask an LLM
“Can I look up which city and state go with a postal code?”
“Where can I find a list of cities matching a partial city name for address entry?”
Tell an agent
Look up the city and state for postal code {postalCode}.
Find cities named {cityName} in state {state}.
DELETE /certificates Delete a certificate · Delete certificate #
Ask an LLM
“How do I remove a certificate using the generic certificates endpoint?”
“Can a certificate be deleted outright rather than an e-certificate on a profile?”
Tell an agent destructive · confirm first
Delete the certificate using the certificates endpoint.
Remove a certificate record at hotel {hotelId}, not an e-certificate.
POST /companies Create a company, travel agent, group or source profile · This API facilitates creation of a company/agent/group/source profile in OPERA #
Ask an LLM
“How do I create a new company or travel agent profile in OPERA Cloud?”
“Can I set up a group or source profile and get back its OPERA ID?”
Tell an agent
Create a company profile with these details: {companyDetails}.
Add a new travel agent profile linked to external reference {externalReferences}.
GET /companies/{corporateID} Get a company profile by corporate ID · Get company profile by corporate ID #
Ask an LLM
“What details are stored on a company profile if I know its corporate ID?”
“Can I pull up a travel agent or group profile using the corporate ID rather than the profile ID?”
Tell an agent
Get the company profile with corporate ID {corporateID}.
Show me the travel agent profile for corporate ID {corporateID}.
GET /duplicateExternalSubscriptions Find profiles linked to multiple external profiles · Get profiles with duplicate external subscriptions #
Ask an LLM
“Which OPERA Cloud profiles are subscribed to more than one external profile in the same external system?”
“Can I find guest profiles that link to duplicate external records?”
Tell an agent
List OPERA profiles that are linked to several external profiles in one external system.
Check whether profile {profileId} has duplicate external subscriptions.
GET /duplicateOPERASubscriptions Find external profiles linked to multiple OPERA profiles · Get profiles with duplicate OPERA Cloud subscriptions #
Ask an LLM
“Which external profiles are linked to more than one OPERA Cloud profile?”
“How can I spot an external record that maps to several OPERA guest profiles?”
Tell an agent
List external profiles that are subscribed to multiple OPERA Cloud profiles.
Find duplicate OPERA subscriptions involving profile {profileId}.
GET /ecertificates List e-certificates on a profile · Get e-certificate #
Ask an LLM
“What e-certificates does a guest profile have in OPERA Cloud?”
“Can I include inactive e-certificates or filter them by status?”
Tell an agent
List the e-certificates on profile {profileId}.
Show e-certificates with status {status} at hotel {hotelId}.
POST /ecertificates Create an e-certificate on a profile · Create e-certificate #
Ask an LLM
“How do I issue a new e-certificate to a guest profile?”
“Can I generate an eCertificate for a loyalty member?”
Tell an agent
Create an e-certificate on a profile with these generation details: {eCertificateGenerationDetails}.
Issue a new e-certificate to the guest.
DELETE /ecertificates/{certificateId} Delete an e-certificate from a profile · Delete e-certificate #
Ask an LLM
“How do I remove an e-certificate that was issued to a guest profile by mistake?”
“Can an e-certificate be deleted from a profile entirely?”
Tell an agent destructive · confirm first
Delete e-certificate {certificateId}.
Remove e-certificate {certificateId} from the guest's profile.
PUT /ecertificates/{certificateId} Redeem an e-certificate · Consume an E-Certificate #
Ask an LLM
“How do I mark an e-certificate as used when a guest redeems it?”
“Can I consume an e-certificate so it can't be redeemed again?”
Tell an agent destructive · confirm first
Consume e-certificate {certificateId}.
Redeem e-certificate {certificateId} with these consumption details: {consumeECertificates}.
PUT /ecertificates/{certificateId}/action/validate Verify an e-certificate number · Verify E-Certificate Number #
Ask an LLM
“How can I check that an e-certificate number is valid before accepting it?”
“Is there a way to confirm an e-certificate can be used on a reservation?”
Tell an agent
Verify e-certificate {certificateId} with certificate number {certificateNo}.
Check whether e-certificate {certificateId} is valid.
POST /ecertificates/{certificateId}/extensions Extend an e-certificate's expiry date · Extend E-Certificate Expiry date #
Ask an LLM
“Can I push back the expiration date of a guest's e-certificate?”
“How do I give an expiring e-certificate more time?”
Tell an agent
Extend e-certificate {certificateId} to expire on {expiryDate}.
Change the expiry of e-certificate {certificateId} to {expiryDate}.
GET /externalSystems/{extSystemCode}/profiles/{profileExternalId} Get a profile by its external system ID · Get profile by external ID #
Ask an LLM
“How do I fetch a guest profile when I only know its ID in an external system?”
“Can I look up an OPERA profile using the external profile ID a partner system gave me?”
Tell an agent
Get the profile with external ID {profileExternalId} from external system {extSystemCode}.
Look up external profile {profileExternalId} in system {extSystemCode} for hotel {hotelId}.
PUT /externalSystems/{extSystemCode}/profiles/{profileExternalId} Update a profile by its external system ID · Update by external ID #
Ask an LLM
“Can I update a guest's profile details using the external system's profile ID instead of the OPERA ID?”
“What do I need to change a profile identified by an external system code?”
Tell an agent
Update the profile with external ID {profileExternalId} in system {extSystemCode} with {profileDetails}.
Change guest details on external profile {profileExternalId} from {extSystemCode}.
POST /guests Create a guest, contact or employee profile · Create a guest, contact or employee profile in OPERA #
Ask an LLM
“How do I create a new guest profile in OPERA Cloud using the guests endpoint?”
“Can I add a contact or employee profile and get its OPERA ID back?”
Tell an agent
Create a guest profile with these details: {guestDetails}.
Add a new employee profile via the guests endpoint.
GET /guests/{guestId} Get a guest profile by guest ID · Get guest profile by guest ID #
Ask an LLM
“What address, phone and preferences are stored for a guest if I have their guest ID?”
“Can I retrieve a guest's full record through the guests endpoint?”
Tell an agent
Get guest {guestId}.
Show guest {guestId}'s profile as seen by hotel {hotelId}.
PUT /hotels/{hotelId}/profiles/{profileId}/commissionAccount Copy a profile's commission account at a hotel · Copy profile commission account #
Ask an LLM
“Can I copy a travel agent's commission account setup for use at another hotel?”
“How do I duplicate the commission account on a profile for a specific property?”
Tell an agent
Copy the commission account on profile {profileId} for hotel {hotelId}.
Duplicate profile {profileId}'s commission account at hotel {hotelId} using {profileCommissionAccountsInfo}.
DELETE /hotels/{hotelId}/profiles/{profileId}/flexFieldCode/{flexFieldCode} Delete a profile flex field value · Operation to delete a flex field #
Ask an LLM
“How do I remove a custom flex field value from a guest profile at one hotel?”
“Can I clear a single flex field on a profile by its code?”
Tell an agent destructive · confirm first
Delete flex field {flexFieldCode} from profile {profileId} at hotel {hotelId}.
Clear the {flexFieldCode} flex field value on profile {profileId} for hotel {hotelId}.
GET /hotels/{hotelId}/profiles/{profileId}/flexFieldValues Get a profile's flex field values at one hotel · Operation to fetch flex field values #
Ask an LLM
“What custom flex field values are set on a profile for a particular hotel?”
“Can I filter a profile's flex fields at one property by flex field code?”
Tell an agent
Show flex field values on profile {profileId} at hotel {hotelId}.
Get flex field {flexFieldCode} for profile {profileId} at hotel {hotelId}.
POST /hotels/{hotelId}/profiles/{profileId}/flexFieldValues Add a flex field value to a profile · Operation to create a flex field with value for a module #
Ask an LLM
“Can I store a new custom flex field value on a guest profile?”
“How do I set a flex field on a profile that doesn't have one yet?”
Tell an agent
Add flex field value {flexFieldInfo} to profile {profileId} at hotel {hotelId}.
Create a new flex field entry on profile {profileId} at hotel {hotelId}.
PUT /hotels/{hotelId}/profiles/{profileId}/flexFieldValues Update a profile flex field value · Operation to update flex field value #
Ask an LLM
“How do I change an existing flex field value on a guest profile?”
“Can I overwrite a custom field that's already set on a profile at a hotel?”
Tell an agent
Update the flex field values on profile {profileId} at hotel {hotelId} to {flexFieldInfo}.
Change an existing flex field on profile {profileId} for hotel {hotelId}.
PUT /hotels/{hotelId}/profiles/{profileId}/reprocess Reprocess a single stage record · Re-Process a single Stage Record #
Ask an LLM
“How do I rerun processing on one staged record that failed?”
“Can I reprocess just one stage record for a profile at a hotel?”
Tell an agent
Reprocess the stage record for profile {profileId} at hotel {hotelId}.
Retry the single staged record {profileId} for hotel {hotelId}.
GET /membershipTierProjections Get membership tier upgrade and downgrade projections · Get Membership Tier Projection #
Ask an LLM
“Which loyalty members are projected to be upgraded or downgraded a tier?”
“Can I see a member's projected tier as of a certain date?”
Tell an agent
Show tier projections for membership {membershipId}.
List {projectionType} tier projections for program {membershipType} as of {projectionDate}.
GET /memberships/{membershipId}/fullfillmentExportLogs Get fulfillment export logs for a membership · Get Fulfillment Export Logs #
Ask an LLM
“Where can I see the fulfillment export history for a loyalty membership?”
“Was a member's fulfillment record exported, and when?”
Tell an agent
Get fulfillment export logs for membership {membershipId}.
Show the export log entries for membership {membershipId} of type {membershipType}.
POST /memberships/{membershipType}/membershipNumbers Generate a membership number for a program · Generate membership number #
Ask an LLM
“How can I auto-generate the next membership card number for a loyalty program in OPERA Cloud?”
“Is there a way to get a new membership number for a program without going through an external system?”
Tell an agent
Generate the next membership number for program {membershipType}.
Create a new card number for {membershipType} membership directly in OPERA, not via an external system.
PUT /processStagedProfile Process one staged profile · Process a staged profile #
Ask an LLM
“How do I process a profile that's sitting in staging?”
“Can I push a single staged profile through so it becomes a real profile?”
Tell an agent
Process staged profile {stagedProfile}.
Run processing on this one staged profile.
GET /profileMatch Find a unique guest profile ID before booking · Fetch the profile Id if a unique guest profile Exists #
Ask an LLM
“Before creating a reservation, how can I check whether the guest already has a profile so I don't create a duplicate?”
“Can I get a guest's profile ID by last name and email?”
Tell an agent
Find the profile ID for guest {lastName} with email {email}.
Check for an existing profile for {firstName} {lastName} with membership card {membershipCardNumber}.
POST /profileMatch/searches Find a unique guest profile ID via a search body · Fetch the profile Id if a unique guest profile Exists #
Ask an LLM
“Can I send guest identity details in a request body to find their single matching profile ID?”
“Is there a POST version of the unique-profile lookup for passing ID document numbers?”
Tell an agent
Search for a unique profile matching last name {lastName} and ID number {identificationNumber}.
Post a unique-profile search for {lastName} with email {email}.
GET /profileTransactions/{profileId} List a profile's stay and membership transactions · Get Profile Transactions #
Ask an LLM
“What stay record and membership adjustment transactions are tied to a profile?”
“How far back can I query a profile's transactions at once?”
Tell an agent
List transactions for profile {profileId} from {startDate} to {endDate}.
Show profile {profileId}'s transactions for confirmation number {confirmationNumber}.
GET /profiles Search profiles with query filters · Search for profile(s) #
Ask an LLM
“How can I find guest profiles by name, city or email in OPERA Cloud?”
“Can I search profiles by VIP code or membership level?”
Tell an agent
Search profiles named {profileName} in {city}.
Find profiles with email {email}.
POST /profiles Create a profile · Create a profile #
Ask an LLM
“How do I create a new profile of any type through the general profiles endpoint?”
“What do I get back after creating a profile, and does it include the OPERA ID?”
Tell an agent
Create a profile with details {profileDetails}.
Create a profile linked to external references {externalReferences}.
GET /profiles/action/validate Check a profile's allowed actions and attached records · Validate and check profiles #
Ask an LLM
“Can I check whether a profile has attached records before I act on it?”
“What actions are allowed on a given profile?”
Tell an agent
Check allowed actions and attached records for profile {id}.
Validate profile {id} using check instruction {checkProfileInstruction}.
GET /profiles/activityLog Get a profile's activity log · Fetch profile activity log #
Ask an LLM
“Who changed a guest's profile and when?”
“Can I filter the profile change history by date range or user?”
Tell an agent
Show the activity log between {fromDate} and {toDate}.
Get profile activity log entries matching {searchText}.
GET /profiles/profileMatches Find potential duplicate profile matches · Get potential profile matches #
Ask an LLM
“Which existing profiles might be the same person as a given name and address?”
“Can I set a minimum match percentage when looking for similar profiles?”
Tell an agent
Find potential profile matches for {firstName} {lastName} in {city}.
List profiles matching email {email} at {matchPercentage} percent or better.
POST /profiles/profileMatches/searches Find potential profile matches via a search body · Get potential profile matches #
Ask an LLM
“Is there a POST search that returns a list of possible matching profiles instead of just one ID?”
“Can I send address and phone in the body to get candidate profile matches?”
Tell an agent
Post a search for candidate profiles matching {lastName} at phone {phone}.
Search potential profile matches for company {legalCompany} in {country}.
POST /profiles/searches Search profiles with a request body · Search for profile(s) #
Ask an LLM
“Can I send profile search criteria in a POST body instead of query parameters?”
“Is there a body-based profile search for long lists of profile IDs?”
Tell an agent
Run a body-based profile search for name {profileName}.
Post a profile search for tax ID {taxId}.
GET /profiles/stageProfileMatches Find matches for a staged profile · Get potential stage profile matches #
Ask an LLM
“Which existing profiles could a staged profile be merged into?”
“Can I see potential matches for a suspended profile at a hotel?”
Tell an agent
Find potential matches for staged profile {resortNameId} at hotel {hotelId}.
List existing profiles similar to staged profile {resortNameId}.
GET /profiles/{profileId} Get a profile by OPERA profile ID · Get profile by ID #
Ask an LLM
“How do I retrieve any type of profile, company or individual, by its OPERA profile ID?”
“Can I mark a profile as recently accessed when I open it?”
Tell an agent
Get profile {profileId}.
Fetch profile {profileId} as seen at hotel {hotelId}.
PUT /profiles/{profileId} Update a profile by OPERA profile ID · Update a profile by ID #
Ask an LLM
“How do I update a guest's details on their profile using the OPERA profile ID?”
“Can I change a profile's allowed actions when I edit it?”
Tell an agent
Update profile {profileId} with {profileDetails}.
Change the guest details on profile {profileId}.
DELETE /profiles/{profileId} Forget (anonymize) a guest profile · Forget or delete a profile by ID #
Ask an LLM
“How do I honor a guest's request to be forgotten in OPERA Cloud?”
“Can I anonymize a contact profile?”
Tell an agent destructive · confirm first
Forget profile {profileId}.
Anonymize guest profile {profileId}.
GET /profiles/{profileId}/accounts List accounts on a profile · Get profile accounts #
Ask an LLM
“Which accounts are listed on a company profile?”
“Can I limit a profile's accounts to certain hotels?”
Tell an agent
List the accounts on profile {profileId}.
Show profile {profileId}'s accounts for hotels {hotelIds}.
GET /profiles/{profileId}/attachments List attachments on a profile · Get profile attachments #
Ask an LLM
“What files are attached to a guest profile?”
“Can I find a profile attachment by file name?”
Tell an agent
List attachments on profile {profileId}.
Find the attachment named {attachedFileName} on profile {profileId}.
DELETE /profiles/{profileId}/attachments/{attachmentId} Delete an attachment from a profile · Delete profile attachment #
Ask an LLM
“How do I remove a file attached to a guest profile?”
“Can a single profile attachment be deleted by its ID?”
Tell an agent destructive · confirm first
Delete attachment {attachmentId} from profile {profileId}.
Remove file {attachmentId} attached to profile {profileId}.
GET /profiles/{profileId}/awardsAndCertificates Get awards and certificates on a profile · Get Profile awards and certificates #
Ask an LLM
“What awards and certificates does a loyalty member have on their profile?”
“Can I see a guest's awards at a particular hotel?”
Tell an agent
Show awards and certificates for profile {profileId}.
List profile {profileId}'s awards at hotel {hotelId}.
GET /profiles/{profileId}/cashieringDetails Get a profile's billing and routing details · Get cashiering details for a profile #
Ask an LLM
“What routing instructions and payment methods are set on a company profile?”
“Can I view a travel agent profile's financial details for specific hotels?”
Tell an agent
Get the cashiering details on profile {profileId}.
Show routing instructions for profile {profileId} at hotels {hotelIds}.
PUT /profiles/{profileId}/cashieringDetails Update a profile's billing and routing details · Change cashiering details for a profile #
Ask an LLM
“How do I change the billing or routing instructions on a company profile?”
“Can I update a profile's financial settings?”
Tell an agent
Update cashiering details on profile {profileId} to {profileCashieringDetailList}.
Change routing instructions on profile {profileId}.
GET /profiles/{profileId}/commissionAccount Get a profile's commission account · Get commission account on a profile #
Ask an LLM
“Which commission account is set on a travel agent profile?”
“Can I see commission account details for specific hotels?”
Tell an agent
Get the commission account on profile {profileId}.
Show profile {profileId}'s commission account for hotels {hotelIds}.
DELETE /profiles/{profileId}/commissionAccount Remove a commission account from a profile · Delete a commission account from a profile #
Ask an LLM
“How do I delete a commission account from a travel agent profile?”
“Can I remove a commission account for one hotel only?”
Tell an agent destructive · confirm first
Delete the commission account from profile {profileId}.
Remove commission code {commissionCode} from profile {profileId} at hotel {hotelId}.
POST /profiles/{profileId}/commissionAccount Add a commission account to a profile · Add a commission account on a profile #
Ask an LLM
“How do I add a new commission account to a travel agent or source profile?”
“Which profile types are allowed to have a commission account?”
Tell an agent
Add a commission account to profile {profileId} with {criteria}.
Create a new commission account on travel agent profile {profileId}.
PUT /profiles/{profileId}/commissionAccount Apply a commission account to a profile · Set profile commission account #
Ask an LLM
“How do I apply or replace the commission account on an existing travel agent profile?”
“Can I set a commission account on a profile that already has one?”
Tell an agent
Set the commission account on profile {profileId} using {criteria}.
Apply a replacement commission account to profile {profileId}.
POST /profiles/{profileId}/emails Save an email to a profile · Create an Email #
Ask an LLM
“Can I log an email I received against a contact or account profile?”
“How do I store an email with subject and body on a profile?”
Tell an agent
Store an email from {fromAddress} with subject {subject} on profile {profileId}.
Save this email to profile {profileId}: {emailBody}.
GET /profiles/{profileId}/flexFieldValues Get a profile's flex field values across hotels · Operation to fetch flex field values #
Ask an LLM
“What flex field values does a profile have across several hotels at once?”
“Can I pull flex fields for a profile across multiple properties?”
Tell an agent
Get flex field values for profile {profileId} across hotels {hotelIds}.
Show flex field {flexFieldCode} on profile {profileId} for hotels {hotelIds}.
GET /profiles/{profileId}/hotels/{hotelId}/forecasts List account forecasts for a hotel · Fetch Account Forecasts by hotel #
Ask an LLM
“What revenue forecasts exist for a company account at a hotel?”
“Can I see account forecasts starting from a given period?”
Tell an agent
List account forecasts for profile {profileId} at hotel {hotelId}.
Show forecasts for account {profileId} at hotel {hotelId} from period {fromPeriodCode}.
POST /profiles/{profileId}/hotels/{hotelId}/forecasts Create an account forecast at a hotel · Create account forecast in a hotel #
Ask an LLM
“How do I add a new forecast for a company account at a hotel?”
“Can I record expected business for an account by period?”
Tell an agent
Create an account forecast for profile {profileId} at hotel {hotelId} with {forecastsInformation}.
Add a new forecast for account {profileId} at hotel {hotelId}.
DELETE /profiles/{profileId}/hotels/{hotelId}/forecasts Delete several account forecasts at once · Delete multiple account forecasts #
Ask an LLM
“Can I delete several account forecast periods in one request?”
“How do I clear multiple forecasts for an account at a hotel?”
Tell an agent destructive · confirm first
Delete account forecasts for periods {periodCodes} on profile {profileId} at hotel {hotelId}.
Bulk-remove forecasts for account {profileId} at hotel {hotelId}.
PUT /profiles/{profileId}/hotels/{hotelId}/forecasts/periodCodes/{periodCode} Update an account forecast for one period · Update account forecast in a hotel by period code #
Ask an LLM
“How do I change the forecast for a specific period on a company account?”
“Can I edit an existing account forecast if I know its period code?”
Tell an agent
Update the {periodCode} forecast for profile {profileId} at hotel {hotelId}.
Change account {profileId}'s forecast for period {periodCode} at hotel {hotelId} to {forecastsInformation}.
DELETE /profiles/{profileId}/hotels/{hotelId}/forecasts/periodCodes/{periodCode} Delete an account forecast for one period · Delete account forecast in a hotel by period code #
Ask an LLM
“How do I remove the forecast for a single period on an account?”
“Can I delete one account forecast by its period code?”
Tell an agent destructive · confirm first
Delete the {periodCode} forecast for profile {profileId} at hotel {hotelId}.
Remove period {periodCode} from account {profileId}'s forecasts at hotel {hotelId}.
DELETE /profiles/{profileId}/hotels/{hotelId}/preferenceType/{preferenceType}/preferences/{preferenceCode} Remove a hotel-specific preference from a profile · Delete a preference from a profile #
Ask an LLM
“A guest no longer wants a high floor room at one hotel, how do I remove that preference?”
“Can I delete a property-level preference from a profile?”
Tell an agent destructive · confirm first
Delete preference {preferenceCode} of type {preferenceType} from profile {profileId} at hotel {hotelId}.
Remove hotel {hotelId}'s {preferenceType} preference {preferenceCode} for guest {profileId}.
DELETE /profiles/{profileId}/hotels/{hotelId}/stagedProfile Delete a staged profile · Delete a staged profile #
Ask an LLM
“How do I discard a profile that's stuck in staging at a hotel?”
“Can I delete a staged profile instead of merging it?”
Tell an agent destructive · confirm first
Delete staged profile {profileId} at hotel {hotelId}.
Discard the staged record for profile {profileId} at hotel {hotelId}.
GET /profiles/{profileId}/links List profiles linked to a profile · Get linked profiles #
Ask an LLM
“Which contacts or companies are linked to a given profile?”
“Is there a limit on how many linked profiles come back?”
Tell an agent
List profiles linked to profile {profileId}.
Show linked profiles of type {profileTypes} for profile {profileId}.
GET /profiles/{profileId}/matches Find profiles that match an existing profile · Get profile matches #
Ask an LLM
“Are there other profiles that look like duplicates of this profile?”
“Can I check an existing profile for matches at one hotel?”
Tell an agent
Find profiles that match profile {profileId}.
Check profile {profileId} for duplicates at hotel {hotelId}.
PUT /profiles/{profileId}/membershipType/{membershipType}/membershipId/{membershipId} Update a membership on a profile · Change membership information on a profile #
Ask an LLM
“How do I update a guest's loyalty or frequent flyer membership details?”
“Can I change an existing membership on a profile by its membership ID?”
Tell an agent
Update membership {membershipId} of type {membershipType} on profile {profileId}.
Change profile {profileId}'s {membershipType} membership {membershipId} to {profileMemberships}.
DELETE /profiles/{profileId}/membershipType/{membershipType}/membershipId/{membershipId} Remove a membership from a profile · Delete membership information from a profile #
Ask an LLM
“How do I remove a frequent flyer membership from a guest profile?”
“Can I delete a loyalty membership that was added by mistake?”
Tell an agent destructive · confirm first
Delete membership {membershipId} of type {membershipType} from profile {profileId}.
Remove the {membershipType} membership {membershipId} from guest {profileId}.
POST /profiles/{profileId}/memberships Add a membership to a profile · Create membership on a profile #
Ask an LLM
“How do I add a guest's airline frequent flyer number to their profile?”
“Can a profile hold several loyalty memberships?”
Tell an agent
Add membership {profileMemberships} to profile {profileId}.
Enroll guest {profileId} in a new membership.
GET /profiles/{profileId}/owners List owners assigned to a profile · Get profile owners #
Ask an LLM
“Who are the sales owners on a company profile?”
“Which owner is responsible for a given account?”
Tell an agent
List the owners on profile {profileId}.
Tell me who owns account {profileId}.
PUT /profiles/{profileId}/owners Change the owners on a profile · Change profile owners #
Ask an LLM
“How do I reassign the owner of an account profile to someone else?”
“Can I update an existing owner on a profile?”
Tell an agent
Change the owners on profile {profileId} to {criteria}.
Reassign the existing owner on profile {profileId}.
POST /profiles/{profileId}/owners Assign an owner to a profile · Assign profile owners #
Ask an LLM
“How do I assign a salesperson as the owner of a profile?”
“Can I add an additional owner to an account?”
Tell an agent
Assign owner {criteria} to profile {profileId}.
Add a new owner to profile {profileId}.
DELETE /profiles/{profileId}/preferenceType/{preferenceType}/preferences/{preferenceCode} Remove a global preference from a profile · Delete a global preference from a profile #
Ask an LLM
“How do I delete a guest preference that applies across all hotels, not just one?”
“Can I remove a chain-wide preference code from a profile?”
Tell an agent destructive · confirm first
Delete global preference {preferenceCode} of type {preferenceType} from profile {profileId}.
Remove the chain-wide {preferenceType} preference {preferenceCode} for guest {profileId}.
GET /profiles/{profileId}/preferences List preferences on a profile · Get preferences on a profile #
Ask an LLM
“What room and service preferences does a guest have on file?”
“Can I see only one hotel's preferences for a guest?”
Tell an agent
List preferences on profile {profileId}.
Show guest {profileId}'s preferences at hotel {hotelId}.
PUT /profiles/{profileId}/preferences Distribute a profile's preferences · Distribute preferences on a profile #
Ask an LLM
“Can I distribute a guest's preferences so they apply more widely?”
“How do I push preferences on one profile out to other profiles?”
Tell an agent
Distribute preferences {preferenceCollections} on profile {profileId}.
Distribute the preferences stored on profile {profileId}.
POST /profiles/{profileId}/preferences Add preferences to a profile · Add preferences to a profile #
Ask an LLM
“How do I record that a guest prefers a high floor or a feather-free pillow?”
“Can I add several preferences to a profile at once?”
Tell an agent
Add preferences {preferenceCollections} to profile {profileId}.
Save a new room preference for guest {profileId}.
GET /profiles/{profileId}/relationships List a profile's relationships · FetchProfileRelationships method provides the ability to retrieve a profile… #
Ask an LLM
“What relationships does a profile have, such as employer or contact links?”
“Can I see only relationships where the profile is primary?”
Tell an agent
List relationships for profile {profileId}.
Show the primary relationships for profile {profileId}.
PUT /profiles/{profileId}/reservations/action/validate Check whether a profile has past or future bookings · Check future past bookings #
Ask an LLM
“Does this guest have any upcoming or past reservations on their profile?”
“Can I confirm a profile has no bookings before removing it?”
Tell an agent
Check if profile {profileId} has past or future bookings.
Validate reservations on profile {profileId} with {criteria}.
GET /profiles/{profileId}/stayHistory Get a profile's stay history and future stays · FetchStayHistory method provides stay history and future reservations of a… #
Ask an LLM
“Where has this guest stayed before, and what future reservations do they have?”
“Can I limit a guest's stay history to one hotel?”
Tell an agent
Show stay history for profile {profileId}.
Get guest {profileId}'s stays at hotel {hotelId}.
POST /profiles/{sourceProfileId}/relationships/{targetProfileId} Create a relationship between two profiles · CreateProfileRelationship method provides the ability to create profile… #
Ask an LLM
“How do I link a contact profile to a company profile?”
“Can I create a new relationship between two guest profiles?”
Tell an agent
Link profile {sourceProfileId} to profile {targetProfileId} as {relationship}.
Create a relationship from {sourceProfileId} to {targetProfileId}.
PUT /profiles/{sourceProfileId}/relationships/{targetProfileId} Change a relationship between two profiles · ChangeProfileRelationship method provides the ability to update(delete and add)… #
Ask an LLM
“How do I change how two profiles are related, like switching a contact to a different role?”
“Can I update an existing link between a source and target profile?”
Tell an agent
Change the relationship between profile {sourceProfileId} and profile {targetProfileId}.
Update the link from {sourceProfileId} to {targetProfileId} to {relationship}.
DELETE /profiles/{sourceProfileId}/relationships/{targetProfileId} Delete a relationship between two profiles · DeleteProfileRelationship method provides the ability to delete profile… #
Ask an LLM
“How do I unlink a contact from a company profile?”
“What relation types do I need to specify to remove a profile relationship?”
Tell an agent destructive · confirm first
Remove the {sourceRelation} to {targetRelation} link between {sourceProfileId} and {targetProfileId}.
Unlink profile {sourceProfileId} from profile {targetProfileId}.
POST /profiles/{survivorProfileId}/merges Merge two profiles into one · Merge two profiles by ID #
Ask an LLM
“How do I merge two duplicate guest profiles into one?”
“Which profile survives when I combine duplicates?”
Tell an agent destructive · confirm first
Merge profile {victimProfileId} into survivor profile {survivorProfileId}.
Combine the duplicate into profile {survivorProfileId}.
GET /profiles/{survivorProfileId}/merges/snapshot Preview the result of merging two profiles · Get merge profiles snapshot #
Ask an LLM
“Can I preview what a merged profile will look like before I merge two guests?”
“What would the surviving profile contain after a merge?”
Tell an agent
Show a merge snapshot of profile {toBeMergedId} into {survivorProfileId}.
Preview merging into survivor profile {survivorProfileId}.
GET /profiles/{survivorProfileId}/stageProfiles/snapshot Preview merging a staged profile · Get merge stage profile snapshot #
Ask an LLM
“Can I preview how a staged profile would merge into an existing profile?”
“What will the survivor look like if I merge a suspended profile into it?”
Tell an agent
Preview merging staged profile {resortProfileId} into {survivorProfileId}.
Show the stage-merge snapshot for survivor {survivorProfileId} at hotel {hotelId}.
GET /profilesByIds Fetch several profiles by their IDs · Search for profile(s) #
Ask an LLM
“Can I fetch several profiles at once if I already have their IDs?”
“How do I look up profiles by a list of corporate IDs?”
Tell an agent
Get the profiles with IDs {profileIds}.
Fetch profiles for corporate IDs {corporateIds}.
PUT /profilesMatchList Mark profile matches to skip or keep · Updates a list of matchIds to skip or don't skip profile match #
Ask an LLM
“How do I mark a flagged duplicate pair as not a match so it's skipped?”
“Can I update several profile match records at once?”
Tell an agent
Update the profile match list with {matchList}.
Mark these profile matches as do-not-merge.
GET /profilesMatchList/profileType/{profileType} List suspected duplicate profiles by type · Get profiles match list #
Ask an LLM
“Which profiles have been flagged as likely duplicates based on the match rules?”
“Can I list matches above the upper threshold or marked do-not-merge?”
Tell an agent
List the profile match list for profile type {profileType}.
Show {profileType} matches for surname {surname}.
PUT /reProcessStageRecords Reprocess all stage records · Re-Process all Stage Records #
Ask an LLM
“How do I rerun processing for every stage record in bulk?”
“Can I kick off a reprocess of all staged records?”
Tell an agent
Reprocess all stage records using {reProcessStageRecords}.
Start a bulk reprocess of every stage record.
GET /reProcessStageRecords/logs Get logs of stage record reprocessing · Get reProcess stage records logs #
Ask an LLM
“Where can I see the logs of reprocess and rematch jobs?”
“Can I filter stage-record reprocess logs by job ID?”
Tell an agent
Show reprocess logs for job {jobId}.
List reprocess and rematch logs since {fromDate}.
GET /recentlyAccessedProfiles List recently accessed profiles · Fetch recently accessed profiles #
Ask an LLM
“Which profiles have I opened recently?”
“Can I see profiles accessed since a particular date?”
Tell an agent
List my recently accessed profiles.
Show profiles accessed on {accessDate}.
DELETE /service/profileService/cache Clear the profile service cache · Operation to delete cache for Profile service #
Ask an LLM
“How do I flush the cache for the profile service?”
“Can I reset cached profile data on the server?”
Tell an agent destructive · confirm first
Clear the profile service cache.
Flush cached profile service data for hotel {hotelId}.
GET /services/profile/status Check the profile service status · Operation to check the status of profile service #
Ask an LLM
“Is the OPERA Cloud profile service up right now?”
“How can I health-check the profile API?”
Tell an agent
Ping the profile service.
Check whether the profile service is running for hotel {hotelId}.
GET /stagedProfile/{id} Get a staged profile · Get a staged profile #
Ask an LLM
“How do I review a single suspended profile before deciding to merge or add it?”
“Can I pull the details of one staged profile by ID?”
Tell an agent
Get staged profile {id}.
Show staged profile {id} at hotel {hotelId}.
PUT /stagedProfile/{id} Update a staged profile · Change a staged profile #
Ask an LLM
“Can I correct the details on a staged profile before it's processed?”
“How do I edit a suspended profile?”
Tell an agent
Update staged profile {id} with {stagedProfile}.
Edit the staged profile {id}.
GET /stagedProfiles List staged profiles · Get staged profiles #
Ask an LLM
“Which profiles are currently suspended in staging for review?”
“Can I filter staged profiles by stage status or import date?”
Tell an agent
List staged profiles with status {stageStatus}.
Show staged profiles imported on {importDate} for hotels {hotelIds}.
POST /stagedProfiles/searches Search staged profiles with a request body · Get staged profiles #
Ask an LLM
“Is there a POST search for staged profiles when I have many filters?”
“Can I search suspended profiles by membership number in a request body?”
Tell an agent
Post a staged profile search for membership number {membershipNumber}.
Search staged profiles by error description {errorDescription}.
POST /stayMembership Attach or replace a membership on a stay record · This API facilitates attaching or replacing a membership to a given stayRecord #
Ask an LLM
“How do I add a loyalty membership to a stay that was recorded without one?”
“Can I swap the membership on a stay record for a different card?”
Tell an agent
Attach membership {newMembershipCardNo} to stay record {stayRecordId} in {attachMode} mode.
Replace card {oldMembershipCardNo} with {newMembershipCardNo} on stay {stayRecordId} using mode {attachMode}.
POST /stayRecord Upload a stay record · This API facilitates uploading stage records to LCS #
Ask an LLM
“How do I upload a stay record to loyalty from an outside source?”
“Can I load stay record columns into OPERA?”
Tell an agent
Upload stay record {stayRecord}.
Send a new stay record to the loyalty system.
GET /stayRecord/{stayRecordId} Get a stay record's details · Get Stay Record Detail #
Ask an LLM
“What daily rates and revenue are on a specific stay record?”
“Can I see the user-defined fields on a stay?”
Tell an agent
Get details for stay record {stayRecordId}.
Show revenue and daily rates for stay {stayRecordId}.
PUT /stayRecords/{stayRecordId} Edit an orphan stay record · Ability to edit Orphan Stay Records #
Ask an LLM
“How do I fix an orphan stay record that isn't linked to a profile?”
“Can I edit the fields on an orphaned stay?”
Tell an agent
Update orphan stay record {stayRecordId} with {orphanStayRecord}.
Edit orphan stay {stayRecordId}.
GET /suspendedAddresses List suspended profile addresses · Fetch Suspended Profile Addresses #
Ask an LLM
“Which suspended profiles have addresses that need review?”
“Can I filter suspended addresses by country or match code?”
Tell an agent
List suspended addresses for name {name}.
Show suspended addresses in country {countryCode} at hotel {hotelId}.
GET /suspendedProfiles/errorsSummary Summarize suspended profile errors · Get suspended profiles errors summary details #
Ask an LLM
“What errors are causing profiles to be suspended?”
“Can I get an error summary for suspended profiles by insert date?”
Tell an agent
Summarize suspended profile errors for hotels {hotelIds}.
Show the suspended profile error summary for {insertDate}.
GET /suspendedProfiles/errorsSummary/profileType Summarize suspended profile errors by profile type · Get suspended profiles match errors summary information grouped by profile type #
Ask an LLM
“Which profile types have the most suspended-profile errors?”
“Can I break down suspension errors by guest versus company profiles?”
Tell an agent
Group suspended profile errors by profile type.
Show suspended profile errors by profile type for {insertDate}.
GET /suspendedProfiles/errorsSummary/property Count suspended profile errors per property · Get suspended profiles match errors summary information grouped by property #
Ask an LLM
“How many suspended-profile errors does each property have?”
“Which hotel has the most profile match errors?”
Tell an agent
Count suspended profile errors per property.
Show error counts by property for profiles inserted on {insertDate}.
POST /suspendedProfiles/errorsSummary/property Count one suspended profile error per property · Get suspended profiles match errors summary information grouped by property #
Ask an LLM
“For one specific error message, how often does it occur at each property?”
“Can I see where a particular suspension error shows up across hotels?”
Tell an agent
Show how often error {errorDesc} occurs at each property.
Break down the suspension error {errorDesc} by hotel.
GET /suspendedProfiles/matchStats Get suspended profile match statistics · Get suspended profile match statistics information #
Ask an LLM
“What are the overall match statistics for suspended profiles?”
“Can I get match stats for a date range and profile type?”
Tell an agent
Show suspended profile match stats from {insertDateFrom} to {insertDateTo}.
Get match statistics for {profileType} suspended profiles at hotel {hotelId}.
GET /suspendedProfiles/matchStats/matchCriteria Get suspended profile match stats by criteria · Get suspended profiles match statistics information grouped by match criteria #
Ask an LLM
“Which match criteria are catching the most suspended profiles?”
“Can I break down suspended profile matches by the rule that matched them?”
Tell an agent
Group suspended profile match stats by match criteria.
Show match statistics per matching rule for suspended profiles at hotel {hotelId}.
GET /suspendedProfiles/matchStats/profileType Get suspended profile match stats by profile type · Get suspended profiles match statistics information grouped by profile type #
Ask an LLM
“How do suspended profile match numbers differ between profile types?”
“Can I see match statistics split by guest, company and agent profiles?”
Tell an agent
Group suspended profile match stats by profile type.
Show match statistics by profile type for {insertDate}.
GET /suspendedProfiles/matchStats/property Get suspended profile match stats by property · Get suspended profiles match statistics information grouped by property #
Ask an LLM
“Which properties have the most suspended profile matches?”
“Can I compare match statistics hotel by hotel?”
Tell an agent
Group suspended profile match stats by property.
Show per-hotel match statistics for {insertDate}.
GET /suspendedProfiles/matchStats/propertyAndProfileType Get match stats by property and profile type · Get suspended profiles match statistics information grouped by property and… #
Ask an LLM
“How are suspended profile matches split across each hotel and profile type combined?”
“Can I see a property-by-profile-type matrix of match stats?”
Tell an agent
Group suspended profile match stats by property and profile type.
Show the property and profile type match breakdown for {insertDate}.
GET /suspendedProfiles/matchStats/threshold Get suspended profile match stats by threshold · Get suspended profiles match statistics summary information filtering by… #
Ask an LLM
“How many suspended profiles fall above or below the match threshold in a region?”
“Can I filter match statistics by region, profile type and threshold?”
Tell an agent
Show {threshold} threshold match stats for {profileType} profiles in region {regionCode}.
Get match statistics in region {regionCode} for {profileType} at threshold {threshold}.
PUT /synchronizeProfileSubscriptions Synchronize profile subscriptions · Synchronize profile subscriptions #
Ask an LLM
“How do I resync a profile's subscriptions with external systems?”
“Can I force profile subscriptions to synchronize?”
Tell an agent
Synchronize profile subscriptions using {criteria}.
Resync the subscriptions for these profiles.
PUT /validateForgetProfiles Check if profiles can be forgotten · Validate forget profiles #
Ask an LLM
“Before anonymizing guests, can I validate whether their profiles are eligible to be forgotten?”
“Is there a dry-run check for a forget-me request?”
Tell an agent
Validate whether these profiles can be forgotten: {validateForgetProfilesCriteria}.
Check forget eligibility for the listed profiles.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/oracle-hospitality:oracle-hospitality-profile-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

oracle-hospitality-profile-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Oracle Hospitality Profile API
  version: 26.2.0.0
  contact:
    email: hospitality_apis_ww_grp@oracle.com
  license:
    name: UPL
    url: https://opensource.org/licenses/upl
  termsOfService: https://www.oracle.com/legal/terms.html
  description: 'Operations tagged Profile across 2 of this provider''s published API definitions: oracle-hospitality-property-outbound-crmoutbound.json, oracle-hospitality-property-v1-crm.json. Each path carries the servers of the definition it was published in.'
servers:
- url: /crm/v1
tags:


# --- truncated at 32 KB (887 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/oracle-hospitality/refs/heads/main/openapi/oracle-hospitality-profile-api-openapi.yml