OPERA Cloud Customer Relationship Management Outbound API

APIs to cater for Customer Relationship Management external (outbound) functionality with OPERA. These APIs facilitate various operations related to getting data from an external system, and inserting it into OPERA. Compatible with OPERA Cloud release 26.2.0.0. 12 operation(s) documented; base path /crm/v1. Harvested verbatim from Oracle's public hospitality-api-docs repository (Swagger 2.0, release 26.2.0.0).

OpenAPI Specification

oracle-hospitality-property-outbound-crmoutbound.json Raw ↑
{
  "swagger": "2.0",
  "info": {
    "title": "OPERA Cloud Customer Relationship Management Outbound API",
    "description": "APIs to cater for Customer Relationship Management external (outbound) functionality with OPERA. These APIs facilitate various operations related to getting data from an external system, and inserting it into OPERA.<br /><br /> Compatible with OPERA Cloud release 26.2.0.0.<br /><br /><p> This document and all content within is available under the Universal Permissive License v 1.0 (https://oss.oracle.com/licenses/upl). Copyright (c) 2020, 2026 Oracle and/or its affiliates.</p>",
    "version": "26.2.0.0",
    "termsOfService": "https://www.oracle.com/legal/terms.html",
    "contact": {
      "email": "hospitality_apis_ww_grp@oracle.com"
    },
    "license": {
      "name": "UPL",
      "url": "https://opensource.org/licenses/upl"
    }
  },
  "schemes": [
    "https"
  ],
  "basePath": "/crm/v1",
  "produces": [
    "application/json"
  ],
  "paths": {
    "/externalSystems/{extSystemCode}/chains/{chainCode}/externalProfiles": {
      "get": {
        "summary": "Retrieve profiles from external system",
        "description": "Use this API when you want to search for profiles in an external system. The response will include a list of profiles that exist in the external system, based on your search criteria.  For example, you want to see if the external system has a profile for Mr David Smith.  The GET API will send a request to external system, and the response will include a list of any profiles that exist for Mr Davis Smith in that system.  If a profile does exist, and the user would like to 'download' that profile into OPERA, you would then proceed to use the downlodExternalProfiles API.",
        "operationId": "getExternalProfiles",
        "responses": {
          "200": {
            "headers": {
              "Content-Language": {
                "type": "string",
                "description": "Audience language",
                "pattern": "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",
                "x-example": "en-GB"
              }
            },
            "description": "Response object for fetching profiles from external CRM System. This object contains profile primary details, profile summary details, master info list containing code and description used as lookup for description.",
            "schema": {
              "$ref": "#/definitions/externalProfiles"
            }
          },
          "204": {
            "description": "ExternalProfiles not found."
          },
          "400": {
            "$ref": "#/responses/400"
          },
          "401": {
            "$ref": "#/responses/401"
          },
          "403": {
            "$ref": "#/responses/403"
          },
          "404": {
            "$ref": "#/responses/404"
          },
          "405": {
            "$ref": "#/responses/405"
          },
          "406": {
            "$ref": "#/responses/406"
          },
          "413": {
            "$ref": "#/responses/413"
          },
          "414": {
            "$ref": "#/responses/414"
          },
          "415": {
            "$ref": "#/responses/415"
          },
          "500": {
            "$ref": "#/responses/500"
          },
          "502": {
            "$ref": "#/responses/502"
          },
          "503": {
            "$ref": "#/responses/503"
          }
        },
        "parameters": [
          {
            "name": "extSystemCode",
            "in": "path",
            "required": true,
            "type": "string",
            "minLength": 1,
            "maxLength": 2000,
            "description": "Profiles will be fetched from this External System."
          },
          {
            "name": "chainCode",
            "in": "path",
            "required": true,
            "type": "string",
            "minLength": 1,
            "maxLength": 2000,
            "description": "Chain code from which the External Profiles will be fetched."
          },
          {
            "name": "externalDatabaseId",
            "in": "query",
            "required": false,
            "description": "Profile will be fetched from this External database.",
            "type": "string"
          },
          {
            "name": "hotelId",
            "in": "query",
            "required": false,
            "description": "Hotel Code, It is used to filter hotel specific children to this specific hotel code.",
            "type": "string"
          },
          {
            "name": "profileType",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "The types of Profile handled by the web service.",
            "uniqueItems": true,
            "enum": [
              "Guest",
              "Agent",
              "Company",
              "Group",
              "Source",
              "Employee",
              "Hotel",
              "Vendor",
              "Contact",
              "Purge",
              "BusinessHeader",
              "BillingAccount",
              "Activity",
              "Potential",
              "Account"
            ]
          },
          {
            "name": "profileId",
            "in": "query",
            "type": "array",
            "collectionFormat": "multi",
            "description": "A unique identifying value assigned by the creating system. The ID attribute may be used to reference a primary-key value within a database or in a particular implementation.",
            "items": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "profileIdType",
            "in": "query",
            "type": "array",
            "collectionFormat": "multi",
            "description": "A reference to the type of object defined by the UniqueID element.",
            "items": {
              "type": "string"
            },
            "required": false
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "description": "Family name, last name or Company Name.",
            "type": "string"
          },
          {
            "name": "givenName",
            "in": "query",
            "required": false,
            "description": "Given name, first name or names.",
            "type": "string"
          },
          {
            "name": "city",
            "in": "query",
            "required": false,
            "description": "City (e.g., Dublin), town, or postal station (i.e., a postal service territory, often used in a military address).",
            "type": "string"
          },
          {
            "name": "postalCode",
            "in": "query",
            "required": false,
            "description": "Post Office Code number.",
            "type": "string"
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "description": "State or Province name (e.g., Texas).",
            "type": "string"
          },
          {
            "name": "countryCode",
            "in": "query",
            "required": false,
            "description": "Code for a country or a nationality.",
            "type": "string"
          },
          {
            "name": "keyword",
            "in": "query",
            "required": false,
            "description": "Keyword associated to the profile.",
            "type": "string"
          },
          {
            "name": "communication",
            "in": "query",
            "required": false,
            "description": "Any communication method associated to the profile such as phone, fax, eMail id.",
            "type": "string"
          },
          {
            "name": "membershipNumber",
            "in": "query",
            "required": false,
            "description": "Membership number associated to the profile.",
            "type": "string"
          },
          {
            "name": "membershipType",
            "in": "query",
            "required": false,
            "description": "Member Type of searching profile.",
            "type": "string"
          },
          {
            "name": "arNumber",
            "in": "query",
            "required": false,
            "description": "Account Receivable associated to the profile.",
            "type": "string"
          },
          {
            "name": "birthDate",
            "in": "query",
            "required": false,
            "description": "Date of birth",
            "type": "string",
            "format": "date"
          },
          {
            "$ref": "#/parameters/authKey"
          },
          {
            "$ref": "#/parameters/externalData"
          },
          {
            "$ref": "#/parameters/x-app-key"
          }, {
            "$ref": "#/parameters/x-request-id"
          }, {
            "$ref": "#/parameters/x-originating-application"
          },
          {
            "$ref": "#/parameters/Accept-Language"
          }
        ],
        "consumes": [
          "application/json;charset=UTF-8"
        ],
        "produces": [
          "application/json;charset=UTF-8"
        ],
        "tags": [
          "ProfileExternal"
        ]
      }
    },
    "/externalSystems/{extSystemCode}/chains/{chainCode}/externalProfiles/{profileExternalId}": {
      "get": {
        "summary": "Download a Profile from external system",
        "description": "After searching for profiles in an external system using getExternalProfiles, proceed to use this API knowing the external profile ID in the path.  The result will be a new profile created in OPERA. <p><strong>OperationId:</strong>downloadExternalProfile</p>",
        "operationId": "downloadExternalProfile",
        "parameters": [
          {
            "name": "extSystemCode",
            "in": "path",
            "required": true,
            "description": "If supplied, profile will be downloaded from this External System, otherwise it will be decided automatically based on the configuration.",
            "type": "string"
          },
          {
            "name": "chainCode",
            "in": "path",
            "required": true,
            "type": "string",
            "minLength": 1,
            "maxLength": 2000,
            "description": "Chain code from which the External Profiles will be downloaded."
          },
          {
            "name": "profileExternalId",
            "in": "path",
            "required": true,
            "type": "string",
            "minLength": 1,
            "maxLength": 2000,
            "description": "Unique Identifier of the Profile on the External System."
          },
          {
            "name": "externalDatabaseId",
            "in": "query",
            "required": false,
            "description": "Profile will be downloaded from this External database.",
            "type": "string"
          },
          {
            "name": "hotelId",
            "in": "query",
            "required": false,
            "description": "Hotel Code, It is used to filter hotel specific children to this specific hotel code.",
            "type": "string"
          },
          {
            "$ref": "#/parameters/authKey"
          },
          {
            "$ref": "#/parameters/externalData"
          },
          {
            "$ref": "#/parameters/x-app-key"
          }, {
            "$ref": "#/parameters/x-request-id"
          }, {
            "$ref": "#/parameters/x-originating-application"
          },
          {
            "$ref": "#/parameters/x-transactionId"
          },
          {
            "$ref": "#/parameters/Accept-Language"
          }
        ],
        "responses": {
          "200": {
            "headers": {
              "Content-Language": {
                "type": "string",
                "description": "Audience language",
                "pattern": "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",
                "x-example": "en-GB"
              }
            },
            "description": "Response object for the OPERA profile resulted from the download.",
            "schema": {
              "$ref": "#/definitions/profile"
            }
          },
          "204": {
            "description": "downloadExternalProfile not found."
          },
          "400": {
            "$ref": "#/responses/400"
          },
          "401": {
            "$ref": "#/responses/401"
          },
          "403": {
            "$ref": "#/responses/403"
          },
          "404": {
            "$ref": "#/responses/404"
          },
          "405": {
            "$ref": "#/responses/405"
          },
          "406": {
            "$ref": "#/responses/406"
          },
          "413": {
            "$ref": "#/responses/413"
          },
          "414": {
            "$ref": "#/responses/414"
          },
          "415": {
            "$ref": "#/responses/415"
          },
          "500": {
            "$ref": "#/responses/500"
          },
          "502": {
            "$ref": "#/responses/502"
          },
          "503": {
            "$ref": "#/responses/503"
          }
        },
        "consumes": [
          "application/json;charset=UTF-8"
        ],
        "produces": [
          "application/json;charset=UTF-8"
        ],
        "tags": [
          "ProfileExternal"
        ]
      }
    },
    "/externalSystems/{extSystemCode}/chains/{chainCode}/enrollments": {
      "post": {
        "summary": "Create an Enrollment",
        "description": "Use this API when you have a guest profile and you want to enroll that guest profile into a membership program in an external system. <p><strong>OperationId:</strong>postEnrollment</p>",
        "operationId": "postEnrollment",
        "parameters": [
          {
            "name": "extSystemCode",
            "in": "path",
            "required": true,
            "type": "string",
            "minLength": 1,
            "maxLength": 2000,
            "description": "Profile will be downloaded from this External System."
          },
          {
            "name": "chainCode",
            "in": "path",
            "required": true,
            "type": "string",
            "minLength": 1,
            "maxLength": 2000,
            "description": "Chain code from which the External Profiles will be downloaded."
          },
          {
            "name": "enrollment",
            "in": "body",
            "required": true,
            "description": "Request object to create profile enrollment.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/enrollment"
                }
              ]
            }
          },
          {
            "$ref": "#/parameters/authKey"
          },
          {
            "$ref": "#/parameters/externalData"
          },
          {
            "$ref": "#/parameters/x-app-key"
          }, {
            "$ref": "#/parameters/x-request-id"
          }, {
            "$ref": "#/parameters/x-originating-application"
          },
          {
            "$ref": "#/parameters/x-transactionId"
          },
          {
            "$ref": "#/parameters/Accept-Language"
          }
        ],
        "responses": {
          "201": {
            "headers": {
              "Content-Language": {
                "type": "string",
                "description": "Audience language",
                "pattern": "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",
                "x-example": "en-GB"
              },
              "Location": {
                "type": "string",
                "description": "Location of newly created resource"
              }
            },
            "description": "HATEOAS links which help the consumer to navigate to resources",
            "schema": {
              "$ref": "#/definitions/enrollment"
            }
          },
          "400": {
            "$ref": "#/responses/400"
          },
          "401": {
            "$ref": "#/responses/401"
          },
          "403": {
            "$ref": "#/responses/403"
          },
          "404": {
            "$ref": "#/responses/404"
          },
          "405": {
            "$ref": "#/responses/405"
          },
          "406": {
            "$ref": "#/responses/406"
          },
          "413": {
            "$ref": "#/responses/413"
          },
          "414": {
            "$ref": "#/responses/414"
          },
          "415": {
            "$ref": "#/responses/415"
          },
          "500": {
            "$ref": "#/responses/500"
          },
          "502": {
            "$ref": "#/responses/502"
          },
          "503": {
            "$ref": "#/responses/503"
          }
        },
        "consumes": [
          "application/json;charset=UTF-8"
        ],
        "produces": [
          "application/json;charset=UTF-8"
        ],
        "tags": [
          "ProfileMembership"
        ]
      }
    },
    "/externalSystems/{extSystemCode}/playerStatistics/{profileId}": {
      "get": {
        "summary": "Retrieve player statistics",
        "description": "Request for the fetch player statistics WS operation <p><strong>OperationId:</strong>getPlayerStatistics</p>",
        "operationId": "getPlayerStatistics",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "required": true,
            "type": "string",
            "minLength": 1,
            "maxLength": 2000,
            "description": "Unique Identifier for profile ID"
          },
          {
            "name": "extSystemCode",
            "in": "path",
            "required": true,
            "type": "string",
            "minLength": 1,
            "maxLength": 2000,
            "description": "External System Code"
          },
          {
            "name": "playerId",
            "in": "query",
            "required": false,
            "description": "Unique Identifier for PlayerID.",
            "type": "string"
          },
          {
            "name": "hotelId",
            "in": "query",
            "required": false,
            "description": "Code of the Hotel.",
            "type": "string"
          },
          {
            "name": "reservationId",
            "in": "query",
            "required": false,
            "description": "A unique identifying value assigned by the creating system. The ID attribute may be used to reference a primary-key value within a database or in a particular implementation.",
            "type": "string"
          },
          {
            "name": "reservationIdContext",
            "in": "query",
            "required": false,
            "description": "Used to identify the source of the identifier (e.g., IATA, ABTA).",
            "type": "string"
          },
          {
            "name": "reservationIdType",
            "in": "query",
            "required": false,
            "description": "A reference to the type of object defined by the UniqueID element.",
            "type": "string"
          },
          {
            "$ref": "#/parameters/authKey"
          },
          {
            "$ref": "#/parameters/externalData"
          },
          {
            "$ref": "#/parameters/x-app-key"
          }, {
            "$ref": "#/parameters/x-request-id"
          }, {
            "$ref": "#/parameters/x-originating-application"
          },
          {
            "$ref": "#/parameters/Accept-Language"
          }
        ],
        "responses": {
          "200": {
            "headers": {
              "Content-Language": {
                "type": "string",
                "description": "Audience language",
                "pattern": "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",
                "x-example": "en-GB"
              }
            },
            "description": "Response of the WS operation to fetch player statistics.",
            "schema": {
              "$ref": "#/definitions/fetchPlayerStatisticsRS"
            },
            "examples": {
              "application/json": {
                "profiles": {
                  "profileInfo": [
                    {
                      "profileIdList": [
                        {
                          "type": "",
                          "idContext": "a",
                          "id": "a"
                        }
                      ],
                      "profile": {
                        "customer": {
                          "personName": [
                            {
                              "namePrefix": "a",
                              "givenName": "Thomas",
                              "middleName": "B",
                              "surname": "Smith",
                              "nameSuffix": "a",
                              "nameTitle": "Mr",
                              "nameTitleSuffix": -100000000,
                              "envelopeGreeting": "",
                              "salutation": "",
                              "nameType": "PRIMARY",
                              "language": "E"
                            }
                          ],
                          "anonymization": {
                            "anonymizationStatus": "REQUESTED",
                            "anonymizationDate": "2019-09-03T14:56:18.21Z"
                          },
                          "citizenCountry": {
                            "name": "United States of America",
                            "code": "US"
                          },
                          "identifications": {
                            "identificationInfo": [
                              {
                                "identification": {
                                  "idType": "PASSPORT",
                                  "idNumber": "C03005988",
                                  "idNumberMasked": "C030059XX",
                                  "issuedCountry": "USA",
                                  "issuedDate": "2009-11-30",
                                  "issuedPlace": "New York",
                                  "expirationDate": "2019-11-29",
                                  "registeredProperty": "",
                                  "primaryInd": false,
                                  "orderSequence": -100000000
                                }
                              }
                            ]
                          },
                          "profession": "Engineer",
                          "alienInfo": {
                            "alienRegistrationNo": "",
                            "immigrationStatus": "a",
                            "visaValidityType": "a"
                          },
                          "birthCountry": {
                            "name": "United States of America",
                            "code": "US"
                          },
                          "businessTitle": "Dr",
                          "gender": "MALE",
                          "birthDate": "2000-01-01",
                          "birthDateMasked": "",
                          "language": "EN",
                          "nationality": "US",
                          "nationalityDescription": "a",
                          "customerValue": "a",
                          "creditRating": "",
                          "vipStatus": "2",
                          "vipDescription": "Gold",
                          "birthPlace": "New York",
                          "privateProfile": false,
                          "blacklist": false
                        },
                        "company": {
                          "companyName": "Example Corporation, Ltd.",
                          "companyName2": "a",
                          "companyName3": "a",
                          "alternateName": "a",
                          "alternateLanguage": "E",
                          "businessLocale": "a",
                          "iATAInfo": {
                            "iATACompany": "a",
                            "iATAConsortia": "a"
                          },
                          "businessTitle": "a",
                          "currencyCode": "USD",
                          "currencySymbol": "a",
                          "decimalPlaces": -100000000,
                          "language": "",
                          "nationality": "US",
                          "nationalityDescription": "United States of America",
                          "commissionCode": "",
                          "creditRating": "",
                          "corporateIdType": "",
                          "vipStatus": "2",
                          "vipDescription": "Gold VIP",
                          "blacklist": false
                        },
                        "profileImage": {
                          "language": "",
                          "imageSet": "a",
                          "sequenceId": -100000000,
                          "imageStyle": "FULL",
                          "imageType": "a",
                          "hotelCode": "",
                          "imageURL": "a",
                          "description": "a",
                          "imageOrder": -100000000,
                          "website": "a"
                        },
                        "addresses": {
                          "addressInfo": [
                            {
                              "uniqueId": {
                                "type": "",
                                "idContext": "a",
                                "id": "a"
                              },
                              "address": {
                                "addressLine": [
                                  "500 Oracle Parkway"
                                ],
                                "cityName": "Redwood Shores",
                                "postalCode": "94065",
                                "cityExtension": "a",
                                "county": "a",
                                "state": "CA",
                                "country": {
                                  "name": "United States of America",
                                  "code": "US"
                                },
                                "language": "E",
                                "type": "",
                                "typeDescription": "",
                                "primaryInd": false,
                                "barCode": "a",
                                "createDateTime": "2019-09-03T14:56:18.227Z",
                                "creatorId": "a",
                                "lastModifyDateTime": "2019-09-03T14:56:18.228Z",
                                "lastModifierId": "a"
                              }
                            }
                          ]
                        },
                        "telephones": {
                          "telephoneInfo": [
                            {
                              "uniqueId": {
                                "type": "",
                                "idContext": "a",
                                "id": "a"
                              },
                              "telephone": {
                                "phoneTechType": "PHONE",
                                "phoneUseType": "MOBILE",
                                "phoneUseTypeDescription": "Mobile Phone Number",
                                "phoneNumber": "+1 415 555 0100",
                                "extension": "2",
                                "primaryInd": false,
                                "orderSequence": -100000000,
                                "createDateTime": "2019-09-03T14:56:18.23Z",
                                "creatorId": "1234",
                                "lastModifyDateTime": "2019-09-03T14:56:18.231Z",
                                "lastModifierId": "1234"
                              }
                            }
                          ]
                        },
                        "emails": {
                          "emailInfo": [
                            {
                              "uniqueId": {
                                "type": "",
                                "idContext": "a",
                                "id": "a"
                              },
                              "email": {
                                "emailAddress": "eg@example.com",
                                "type": "BUSINESSEMAIL",
                                "typeDescription": "Business Email Address",
                                "emailFormat": "HTML",
                                "primaryInd": false,
                                "orderSequence": -100000000,
                                "createDateTime": "2019-09-03T14:56:18.234Z",
                                "creatorId": "1232",
                                "lastModifyDateTime": "2019-09-03T14:56:18.234Z",
                                "lastModifierId": "1232"
                              }
                            }
                          ]
                        },
                        "comments": {
                          "commentInfo": [
                            {
                              "uniqueId": {
                                "type": "",
                                "idContext": "a",
                                "id": "a"
                              },
                              "comment": {
                                "text": {
                                  "value": "",
                                  "language": ""
                                },
                                "commentTitle": "a",
                                "notificationLocation": "",
                                "type": "",
                                "typeDescription": "a",
                                "internal": false,
                                "confidential": false,
                                "overrideInternal": false,
                                "protectDescription": false,
                                "hotelCode": "",
                                "actionType": "",
                                "actionDate": "0101-01-01",
                                "createDateTime": "2019-09-03T14:56:18.239Z",
                                "creatorId": "a",
                                "lastModifyDateTime": "2019-09-03T14:56:18.239Z",
                                "lastModifierId": "a"
                              }
                            }
                          ]
                        },
                        "profileMemberships": {
                          "profileMembership": [
                            {
                              "comment": {
                                "text": {
                                  "value": "",
                                  "language": ""
                                }
                              },
                              "newMembershipId": "",
                              "nameOnCard": "Thomas Smith",
                              "programDescription": "Hotel Plus Membership",
                              "membershipLevel": "Gold",
                              "membershipLevelDescription": "Gold Level",
                              "membershipClass": "MEM",
                              "earningPreference": "POINTS",
                              "inactive": false,
                              "benefits": [
                                {
                                  "code": "",
                                  "message": "a",
                                  "inactive": false
                                }
                              ],
                              "tierAdministration": "DISABLED",
                              "downgrade": "GRACE",
                              "reIssueNewCard": "PENDING",
                              "excludeFromBatch": false,
                              "upgradeDescription": "a",
                              "downgradeDescription": "a",
                              "rating": "",
                              "membershipEnrollmentCode": "",
                              "memberStatus": "",
                              "currentPoints": -100000000,
                              "pointsLabel": "a",
                              "enrollmentSource": "",
                              "enrollmentResort

# --- truncated at 32 KB (472 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/oracle-hospitality/refs/heads/main/openapi/oracle-hospitality-property-outbound-crmoutbound.json