openapi: 3.2.0
info:
title: OPERA Cloud CRM Asynchronous CRM Async API
description: APIs to insert Stay Records related asynchronous functionality in OPERA.
Compatible with OPERA Cloud release 26.2.0.0.
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.
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 servers: - url: /crm/async/v1 tags: - name: CRMAsync description: The CRM Async Web Service provides capability to implement stay records related asynchronous operations in OPERA Cloud. paths: /stayRecords: post: summary: This API facilitates uploading stage records to LCS. description: A user can upload various stay records to OPERA by specifying stay record column details in the request.OperationId:stayRecords
operationId: stayRecords x-interaction: - async-polling responses: '202': headers: Content-Language: description: Audience language x-example: en-GB schema: type: string pattern: '[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*' Location: description: Location of process status resource schema: type: string description: HATEOAS links which help the consumer to navigate to resources content: application/json;charset=UTF-8: schema: $ref: '#/components/schemas/links' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '413': $ref: '#/components/responses/413' '414': $ref: '#/components/responses/414' '415': $ref: '#/components/responses/415' '500': $ref: '#/components/responses/500' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' parameters: - $ref: '#/components/parameters/authKey' - $ref: '#/components/parameters/externalData' - $ref: '#/components/parameters/x-app-key' - $ref: '#/components/parameters/x-request-id' - $ref: '#/components/parameters/x-originating-application' - $ref: '#/components/parameters/x-hotelid' - $ref: '#/components/parameters/Accept-Language' tags: - CRMAsync requestBody: content: application/json;charset=UTF-8: schema: $ref: '#/components/schemas/stayRecords' description: Request object for uploading stage records to LCS asynchronously. required: true /stayRecords/{requestId}: head: summary: This API returns the status of asynchronous process scheduled for given id. description: Use this to check whether the request sent have been processed.OperationId:getStayRecordsProcessStatus
operationId: getStayRecordsProcessStatus responses: '200': headers: Content-Language: description: Audience language x-example: en-GB schema: type: string pattern: '[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*' Status: description: Status of the requested process. schema: type: string enum: - Processing - Invalid Cache-Control: description: number of seconds to wait before polling again. x-example: max-age=10 schema: type: string description: Response for status of scheduled asynchronous process. '201': headers: Content-Language: description: Audience language x-example: en-GB schema: type: string pattern: '[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*' Status: description: Status of the requested process. schema: type: string enum: - Completed Location: description: Location of newly created resource once the status of process run is Complete. schema: type: string description: Response for status of scheduled asynchronous process. '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '413': $ref: '#/components/responses/413' '414': $ref: '#/components/responses/414' '415': $ref: '#/components/responses/415' '500': $ref: '#/components/responses/500' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' parameters: - name: requestId in: path required: true schema: type: string maxLength: 2000 minLength: 1 - $ref: '#/components/parameters/authKey' - $ref: '#/components/parameters/externalData' - $ref: '#/components/parameters/x-app-key' - $ref: '#/components/parameters/x-request-id' - $ref: '#/components/parameters/x-originating-application' - $ref: '#/components/parameters/x-hotelid' - $ref: '#/components/parameters/Accept-Language' tags: - CRMAsync get: summary: This API facilitates fetching the status for stay records uploaded. description: Use this to check whether the request sent have been processed.OperationId:getStayRecordsProcess
operationId: getStayRecordsProcess responses: '200': headers: Content-Language: description: Audience language x-example: en-GB schema: type: string pattern: '[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*' description: Response for stay records uploaded content: application/json;charset=UTF-8: schema: $ref: '#/components/schemas/stayRecordStatus' '204': description: Stay Record not found. '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '413': $ref: '#/components/responses/413' '414': $ref: '#/components/responses/414' '415': $ref: '#/components/responses/415' '500': $ref: '#/components/responses/500' '502': $ref: '#/components/responses/502' '503': $ref: '#/components/responses/503' parameters: - name: requestId in: path required: true schema: type: string maxLength: 2000 minLength: 1 - $ref: '#/components/parameters/authKey' - $ref: '#/components/parameters/externalData' - $ref: '#/components/parameters/x-app-key' - $ref: '#/components/parameters/x-request-id' - $ref: '#/components/parameters/x-originating-application' - $ref: '#/components/parameters/x-hotelid' - $ref: '#/components/parameters/Accept-Language' tags: - CRMAsync /deleteSuspendedStays: delete: summary: This API facilitates deleting multiple suspended stay records based on criteria. description: This API can be used to delete multiple suspended stay records based on the available criteria.OperationId:deleteSuspendedStays
operationId: deleteSuspendedStays x-interaction: - async-polling responses: '202': headers: Content-Language: description: Audience language x-example: en-GB schema: type: string pattern: '[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*' Location: description: Location of process status resource schema: type: string description: HATEOAS links which help the consumer to navigate to resources content: application/json;charset=UTF-8: schema: $ref: '#/components/schemas/links' parameters: - name: hotelId in: query required: false description: Hotel code. schema: type: string maxLength: 20 minLength: 1 - name: reservationStatus in: query required: false description: Status of reservation. schema: type: string maxLength: 20 minLength: 1 - name: importDate in: query required: false description: Date of creation or import of stay. schema: type: string format: date - name: importDateFrom in: query required: false description: From date of creation or import of stay. schema: type: string format: date - name: importDateTo in: query required: false description: To date of creation or import of stay. schema: type: string format: date - name: arrivalDateFrom in: query required: false description: From date of arrival of reservation. schema: type: string format: date - name: arrivalDateTo in: query required: false description: To date of arrival of reservation. schema: type: string format: date - name: departureDateFrom in: query required: false description: From date of departure of reservation. schema: type: string format: date - name: departureDateTo in: query required: false description: To date of departure of reservation. schema: type: string format: date - name: pmsResvConfNo in: query required: false description: Reservation confirmation number in PMS. schema: type: string maxLength: 50 minLength: 1 - name: clientID in: query required: false description: Client ID/Corp/IATA of the profile in central. schema: type: string maxLength: 20 minLength: 1 - name: pmsNameID in: query required: false description: Profile number in PMS. schema: type: string maxLength: 20 minLength: 1 - name: membershipType in: query required: false description: Membership type of the profile. schema: type: string maxLength: 20 minLength: 1 - name: membershipNo in: query required: false description: Membership number of the profile. schema: type: string maxLength: 50 minLength: 1 - name: errorDescription in: query required: false description: Suspended reason description. schema: type: string maxLength: 2000 minLength: 1 - $ref: '#/components/parameters/authKey' - $ref: '#/components/parameters/externalData' - $ref: '#/components/parameters/x-app-key' - $ref: '#/components/parameters/x-request-id' - $ref: '#/components/parameters/x-originating-application' - $ref: '#/components/parameters/x-hotelid' - $ref: '#/components/parameters/Accept-Language' tags: - CRMAsync /deleteSuspendedStays/{requestId}: head: summary: This API retrieves the status of the delete suspended stays asynchronous process based on unique request id. description: Use the API to retrieve the status of the delete suspended stays process job associated with the unique request ID obtained from the 'Location' header in the deleteSuspendedStays API response.OperationId:getSuspendedStaysDeleteStatus
operationId: getSuspendedStaysDeleteStatus responses: '200': headers: Content-Language: description: Audience language x-example: en-GB schema: type: string pattern: '[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*' Status: description: Status of the requested process. schema: type: string enum: - Processing - Invalid Cache-Control: description: number of seconds to wait before polling again. x-example: max-age=10 schema: type: string description: Response for status of scheduled asynchronous process. '201': headers: Content-Language: description: Audience language x-example: en-GB schema: type: string pattern: '[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*' Status: description: Status of the requested process. schema: type: string enum: - Completed Location: description: Location of newly created resource once the status of process run is Complete. schema: type: string description: Response for status of scheduled asynchronous process. parameters: - name: requestId in: path description: Request Id for polling. required: true schema: type: string maxLength: 2000 minLength: 1 - $ref: '#/components/parameters/authKey' - $ref: '#/components/parameters/externalData' - $ref: '#/components/parameters/x-app-key' - $ref: '#/components/parameters/x-request-id' - $ref: '#/components/parameters/x-originating-application' - $ref: '#/components/parameters/x-hotelid' - $ref: '#/components/parameters/Accept-Language' tags: - CRMAsync get: summary: This API facilitates fetching the status for suspended stay records deleted. description: Use this to check whether the request sent has been processed.OperationId:getSuspendedStaysDelete
operationId: getSuspendedStaysDelete responses: '200': headers: Content-Language: description: Audience language x-example: en-GB schema: type: string pattern: '[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*' description: Response for suspended stay records deleted. content: application/json;charset=UTF-8: schema: $ref: '#/components/schemas/suspendedStayDeleteStatus' '204': description: Resource not found. parameters: - name: requestId in: path description: Request Id for polling. required: true schema: type: string maxLength: 2000 minLength: 1 - $ref: '#/components/parameters/authKey' - $ref: '#/components/parameters/externalData' - $ref: '#/components/parameters/x-app-key' - $ref: '#/components/parameters/x-request-id' - $ref: '#/components/parameters/x-originating-application' - $ref: '#/components/parameters/x-hotelid' - $ref: '#/components/parameters/Accept-Language' tags: - CRMAsync components: responses: '406': description: Not acceptable. '414': description: Request URI Too Large '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/exceptionDetailType' '403': description: Forbidden '413': description: Request Entity Too Large '415': description: Unsupported Media Type '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/exceptionDetailType' '502': description: Bad Gateway '500': description: System Error content: application/json: schema: $ref: '#/components/schemas/exceptionDetailType' '503': description: Service Unavailable '401': description: Unauthorized '405': description: Method not allowed parameters: x-hotelid: name: x-hotelid description: Mandatory parameter to identify the hotel code where the end user is logged in in: header required: true schema: type: string x-app-key: name: x-app-key description: Client or PartnerAC/AAs Application Key in: header required: true schema: type: string pattern: ^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$ authKey: name: authorization description: Bearer token that needs to be passed which is generated post user authentication in: header required: true schema: type: string externalData: name: externalData description: Pass this header as true, if payload needs DVM in: header schema: type: string x-originating-application: name: x-originating-application description: Customer's Integration Application Id in: header schema: type: string Accept-Language: name: Accept-Language description: Language code in: header schema: type: string x-request-id: name: x-request-id description: Request Id of an incoming request in: header schema: type: string pattern: ~*[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12} schemas: stayDailyRatesType: type: object properties: transactionDate: description: Date on which the transaction was done. type: string format: date bookedRoomType: description: Specifies the type of room booked. type: string currencyCode: description: Specifies the code assigned to the currency. type: string pseudoRoom: description: Specifies if the room is a pseudo room. type: boolean marketCode: description: Specifies the market code. type: string rateCode: description: Specifies the rate code. type: string rateAmount: description: Specifies the amount added to a particular rate code. type: number roomNumber: description: Describes the number assigned to a room. type: string roomType: description: Describes the type of the room. type: string required: - transactionDate - rateCode instanceLink: type: object description: Metadata describing link description objects that MAY appear in the JSON instance representation. properties: href: description: URI [RFC3986] or URI Template [RFC6570]. If the value is set to URI Template, then the "templated" property must be set to true. type: string rel: description: Name of the link relation that, in addition to the type property, can be used to retrieve link details. For example, href or profile. type: string templated: description: Boolean flag that specifies that "href" property is a URI or URI Template. If the property is a URI template, set this value to true. By default, this value is false. type: boolean default: false method: description: HTTP method for requesting the target of the link. type: string enum: - GET - POST - PUT - DELETE - PATCH - OPTIONS - HEAD targetSchema: description: Link to the metadata of the resource, such as JSON-schema, that describes the resource expected when dereferencing the target resource.. type: string operationId: description: The operationId of the path you can call to follow this link. This allows you to look up not only the path and method, but the description of that path and any parameters you need to supply. type: string title: description: Exact copy of the "summary" field on the linked operation. type: string errorInstance: title: Error Instance Details description: Complex type that contains error instance details for a REST call. type: object properties: type: type: string description: Absolute URI [RFC3986] that identifies the problem type. When dereferenced, it SHOULD provide a human-readable summary of the problem (for example, using HTML). title: type: string description: Short, human-readable summary of the problem. The summary SHOULD NOT change for subsequent occurrences of the problem, except for purposes of localization. status: type: integer description: HTTP status code for this occurrence of the problem, set by the origin server. detail: type: string description: Human-readable description specific to this occurrence of the problem. instance: type: string description: Absolute URI that identifies the specific occurrence of the problem. It may or may not provide additional information if dereferenced. o:errorCode: type: string description: Application error code, which is different from HTTP error code. o:errorPath: type: string description: Path to the problem at the resource or property level. stayRecordsType: type: object properties: UDFC01: description: Describes the user defined field 01 type: string UDFC02: description: Describes the user defined field 02 type: string UDFC03: description: Describes the user defined field 03 type: string UDFC04: description: Describes the user defined field 04 type: string UDFC05: description: Describes the user defined field 05 type: string UDFC06: description: Describes the user defined field 06 type: string UDFC07: description: Describes the user defined field 07 type: string UDFC08: description: Describes the user defined field 08 type: string UDFC09: description: Describes the user defined field 09 type: string UDFC10: description: Describes the user defined field 10 type: string UDFD01: description: Describes the user defined field 01 type: string format: date UDFD02: description: Describes the user defined field 02 type: string format: date UDFD03: description: Describes the user defined field 03 type: string format: date UDFD04: description: Describes the user defined field 04 type: string format: date UDFD05: description: Describes the user defined field 05 type: string format: date UDFN01: description: Describes the user defined field 10 type: number UDFN02: description: Describes the user defined field 10 type: number UDFN03: description: Describes the user defined field 10 type: number UDFN04: description: Describes the user defined field 10 type: number UDFN05: description: Describes the user defined field 10 type: number adults: description: Describes the number of adults type: number arrivalDate: description: Specifies the date of arrival type: string format: date baseRateAmount: description: Specifies the base rate amount type: number baseRateCode: description: Specifies the base rate code type: string baseRateCurrencyCode: description: Specifies the currency code of the base rate type: string blockCode: description: Specifies the block code type: string bookedRoomType: description: Specifies the type of room booked. type: string bookingDate: description: Specifies the date of booking. type: string format: date cancellationDate: description: Specifies the date of cancellation type: string format: date channel: description: Specifies the channel type: string children: description: specifies the number of children type: number companyId: description: Specifies the id assigned to the company type: string confirmationLegNumber: description: Specifies the confirmation leg number type: number confirmationNumber: description: Specifies the confirmation number. If externalReservationId is not passed as part of POST stayRecords API then length of confirmation number should be less than 43 digits type: string currencyCode: description: Specifies the currency code type: string departureDate: description: Specifies the date of departure type: string format: date exhangeRate: description: Specifies the exchange rate type: number externalReservationId: description: Describes the id assigned to an external reservation type: string groupId: description: Specifies the id assigned to a group type: string guestNameId: description: Specifies the id assigned to a guest name type: string hotelCode: description: Specifies the code assigned to a property type: string complimentary: description: Describes if complimentary or not type: boolean primaryShare: description: Describes if it is a primary share type: boolean miscellaneousId: description: Specifies the miscellaneous id type: string paymentMethod: description: Specifies the payment method used type: string posCode: description: Specifies the postal code type: string promotionCode: description: Specifies the promotion code type: string reservationStatus: description: Describes the reservation status ie CANCELLED, CHECKED OUT, ARRIVAL etc type: string reservationExpectedArrivalTime: description: Specifies the expected arrival time of the reservation type: string format: date reservationExpectedDepartureTime: description: Specifies the expected departure time of the reservation type: string format: date reservationInsertSource: description: Specifies the insert source for the reservation type: string reservationInsertSourceType: description: Specifies the insert source type for the reservation type: string roomNumber: description: Describes the number assigned to a room. type: string roomRevenue: description: Specifies the revenue for the room. type: number roomType: description: Describes the type of the room. type: string shareId: description: Specifies the share id. type: string sourceCode: description: Specifies the source code. type: string sourceId: description: Specifies the source id. type: string stageStatus: description: Specifies the stage status. type: string stageSuspenseReason: description: Specifies the stage suspense reason. type: string totalRevenue: description: Specifies the total revenue. type: number travelAgentId: description: Specifies the travel agent id type: string warningType: type: object description: Used when a stay record is successfully processed to repory any warnings or business error. properties: value: type: string description: Property Value shortText: description: An abbreviated version of the error in textual format. type: string maxLength: 2000 code: description: If present, this refers to a table of coded values exchanged between applications to identify errors or warnings. type: string minLength: 0 maxLength: 20 docURL: description: If present, this URL refers to an online description of the error that occurred. type: string maxLength: 2000 status: description: If present, recommended values are those enumerated in the ErrorRS, (NotProcessed Incomplete Complete Unknown) however, the data type is designated as string data, recognizing that trading partners may identify additional status conditions not included in the enumeration. type: string maxLength: 2000 tag: description: If present, this attribute may identify an unknown or misspelled tag that caused an error in processing. It is recommended that the Tag attribute use XPath notation to identify the location of a tag in the event that more than one tag of the same name is present in the document. Alternatively, the tag name alone can be used to identify missing data [Type=ReqFieldMissing]. type: string maxLength: 2000 recordId: description: If present, this attribute allows for batch processing and the identification of the record that failed amongst a group of records. This value may contain a concatenation of a unique failed transaction ID with specific record(s) associated with that transaction. type: string maxLength: 2000 type: description: The Warning element MUST contain the Type attribute that uses a recommended set of values to indicate the warning type. The validating XSD can expect to accept values that it has NOT been explicitly coded for and process them by using Type ="Unknown". type: string minLength: 0 maxLength: 20 language: description: Language identification. type: string pattern: '[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*' rph: description: Reference Place Holder used as an index for this warning. type: string minLength: 1 maxLength: 8 exceptionDetailType: title: Error Detail description: Complex type that contains error details for a REST call. type: object properties: type: type: string description: Absolute URI [RFC3986] that identifies the problem type. When dereferenced, it SHOULD provide a human-readable summary of the problem (for example, using HTML). title: type: string description: Short, human-readable summary of the problem. The summary SHOULD NOT change for subsequent occurrences of the problem, except for purposes of localization. status: type: integer description: HTTP status code for this occurrence of the problem, set by the origin server. detail: type: string description: Human-readable description specific to this occurrence of the problem. instance: type: string description: Absolute URI that identifies the specific occurrence of the problem. It may or may not provide additional information if dereferenced. o:errorCode: type: string description: Application error code, which is different from HTTP error code. o:errorPath: type: string description: Path to the problem at the resource or property level. o:errorDetails: description: Details of the error message, consisting of a hierarchical tree structure. type: array items: $ref: '#/components/schemas/errorInstance' links: $ref: '#/components/schemas/links' stayRevenuesType: type: object properties: revenueAmount: description: Specifies the amount of revenue. type: number revenueBucketCode: description: Specifies the bucket code to which the revenue belongs. type: string transactionDate: description: Date on which the transaction was done. type: string format: date required: - revenueBucketCode - transactionDate stayRecords: type: object description: Complex type that contains list of stay record types properties: stayRecords: type: array description: Array list of stay records items: $ref: '#/components/schemas/stayRecord' stayMembershipsType: type: object properties: membershipNumber: description: A unique value given to a membership. type: string membershipType: description: Specifies the type of membership. type: string stayRecord: type: object properties: resort: description: Specifies the property name type: string stayDailyRates: type: array maxItems: 4000 items: $ref: '#/components/schemas/stayDailyRatesType' stayMemberships: type: array maxItems: 4000 items: $ref: '#/components/schemas/stayMembershipsType' stayProfiles: type: array maxItems: 4000 items: $ref: '#/components/schemas/stayProfilesType' stayRecordsList: type: array maxItems: 4000 items: $ref: '#/components/schemas/stayRecordsType' stayRevenuesDetails: type: array maxItems: 4000 items: $ref: '#/components/schemas/stayRevenuesDetailsType' suspendedStayDeleteStatus: type: object description: Response for suspended stay records deleted. properties: warnings: description: List of warnings that occurred. $ref: '#/components/schemas/warningsType' links: $ref: '#/components/schemas/links' stayRevenuesDetailsType: type: object properties: folioView: description: '' type: string revenueAmount: description: Specifies the amount of revenue. type: number stayRevenues: type: array items: $ref: '#/components/schemas/stayRevenuesType' stayProfilesType: type: object properties: primary: description: Checks if the profile is primary. type: boolean nameId: description: Specifies the unique id that is assigned to a profile. type: number pmsNameId: description: Specifies the pms id that is assigned to a profile. type: string profileRole: description: Describes the role associated with the profile. type: string required: - profileRole warningsType: type: array description: Used in conjunction with the Success element to define a business error. maxItems: 4000 items: $ref: '#/components/schemas/warningType' links: type: array items: $ref: '#/components/schemas/instanceLink' stayRecordStatus: type: object description: Response for stay record uploaded status. properties: warnings: description: List of warnings that occurred. $ref: '#/components/schemas/warningsType' links: $ref: '#/components/schemas/links' externalDocs: description: Find out more about Oracle Hospitality url: https://docs.oracle.com/en/industries/hospitality/integration_platforms.html