openapi: 3.2.0
info:
title: OPERA Cloud Distribution ARI Publication API
version: 26.2.0.0
description: Oracle Hospitality Distribution ARI publication message specification for distribution partners to receive in real time property restrictions/availability, rate, and inventory schedules updates, also known as ARI. Partner receives this message will respond with success or error/warning so that property/CRS user can see the status of message delivery in OPERA. A channel code identifier is required in Oracle Hospitality Distribution to receive those messages.
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.
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 servers: - url: /aripublication/v1 tags: - name: ARI Publication description: ' The ARI Publication service provides ability to send distribution partners with hotel property inventory level, room rates, and restrictions.' paths: /inventory: post: responses: '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})*' Location: description: Location of process status resource schema: type: string description: Response for publishing inventory '400': description: Request data provided is invalid content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '405': description: Not Allowed content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '406': description: Not Acceptable content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '413': description: Payload Too Large content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '414': description: URI Too Long content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '415': description: Unsupported Media Type content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '502': description: Bad Gateway content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '503': description: Service Unavailable content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' summary: Publish Inventory operationId: postInventory description: This message will provide property room type inventory (rooms to sell) by date to the distribution (full synchronization or delta updates).OperationId:postInventory
tags: - ARI Publication parameters: - name: authorization description: Bearer token that needs to be passed which is generated post user authentication in: header required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/OTA_HotelInvCountNotifRQ' required: true /rates: post: responses: '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})*' Location: description: Location of process status resource schema: type: string description: Response for publishing rates '400': description: Request data provided is invalid content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '405': description: Not Allowed content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '406': description: Not Acceptable content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '413': description: Payload Too Large content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '414': description: URI Too Long content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '415': description: Unsupported Media Type content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '502': description: Bad Gateway content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '503': description: Service Unavailable content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' summary: Publish Rates operationId: postRates description: This message will provide property rate plans rate schedules by date and room type to the distribution (full synchronization or delta updates).OperationId:postRates
tags: - ARI Publication parameters: - name: authorization description: Bearer token that needs to be passed which is generated post user authentication in: header required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/OTA_HotelRateAmountNotifRQ' required: true /restrictions: post: responses: '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})*' Location: description: Location of process status resource schema: type: string description: Response for publishing restrictions '400': description: Request data provided is invalid content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '405': description: Not Allowed content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '406': description: Not Acceptable content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '413': description: Payload Too Large content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '414': description: URI Too Long content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '415': description: Unsupported Media Type content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '502': description: Bad Gateway content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' '503': description: Service Unavailable content: application/json: schema: $ref: '#/components/schemas/ExceptionDetail' summary: Publish Restrictions operationId: postRestrictions description: This message will provide property rate plan-room type restrictions by date to the distribution (full synchronization or delta updates).OperationId:postRestrictions
tags: - ARI Publication parameters: - name: authorization description: Bearer token that needs to be passed which is generated post user authentication in: header required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/OTA_HotelRestrictionsNotifRQ' required: true components: schemas: Timestamp: type: string format: DATE_TIME description: Indicates the creation date and time of the message in UTC using the following format specified by ISO 8601; YYYY-MM-DDThh:mm:ss.zzz with time values using the 24 hour clock (e.g. 20 November 2003, 1:59:38 pm UTC becomes 2003-11-20T13:59:38.000). example: '2021-11-20T13:59:38.000' RestrictionStatus: type: object description: Availability status assigned to the room rate combination. properties: status: $ref: '#/components/schemas/statusEnum' restriction: $ref: '#/components/schemas/restrictionEnum' minAdvancedBookingOffset: type: string description: Minimum days before the arrival date for which this rate plan may be booked. example: '0' maxAdvancedBookingOffset: type: string description: Maximum days before the arrival date for which this rate plan may be booked. example: '0' UniqueId: type: string description: The unique identifier element allows the trading partners to uniquely identify each request of the same message, (i.e. the entire message) for transaction traceability example: 234512-3432-234234234 HotelRestriction: description: A list of property rate plan-room type restrictions by date to the distribution. type: object properties: hotelCode: type: string description: A unique identifier value for the property/hotel associated with channel example: HOTELCODE channelCode: type: string description: Code for the channel which is receiving published data. example: CHANNELCODE chainCode: type: string description: If the property/hotel is part of the chain, the associated chain code. example: CHAINCODE brandCode: type: string description: A value of the brand code associated with channel example: BRANDCODE uniqueId: $ref: '#/components/schemas/UniqueId' timeStamp: $ref: '#/components/schemas/Timestamp' availStatusMessages: type: array description: The availStatusMessage indicates whether the inventory is opened, closed, closed on request, etc. items: $ref: '#/components/schemas/RestrictionAvailStatusMessage' restrictionEnum: type: string description: 'The restriction type.Arrival -It is applicable based on arrival date of a booking.
Departure - It is applicable based on arrival date of a booking.
Master - This value indicates whether the room rate is available for booking on the date. Note: setting Master to Close is known as a STOP SELL
' enum: - Arrival - Departure - Master HotelRatePlan: type: object properties: uniqueId: $ref: '#/components/schemas/UniqueId' timeStamp: $ref: '#/components/schemas/Timestamp' hotelCode: type: string description: A unique identifier value for the property/hotel associated with channel example: HOTELCODE channelCode: type: string description: Code for the channel which is receiving published data. example: CHANNELCODE chainCode: type: string description: If the property/hotel is part of the chain, the associated chain code. example: CHAINCODE brandCode: type: string description: A value of the brand code associated with channel example: BRANDCODE ratePlans: type: array items: $ref: '#/components/schemas/RatePlan' RestrictionAvailStatusMessage: type: object required: - statusApplicationControl properties: statusApplicationControl: $ref: '#/components/schemas/restrStatusApplicationControl' lengthsOfStay: type: object $ref: '#/components/schemas/lengthsOfStay' restrictionStatus: $ref: '#/components/schemas/RestrictionStatus' OTA_HotelRestrictionsNotifRQ: description: The object provides property rate plan-room type restrictions by date to the distribution. type: object properties: hotelRestrictions: $ref: '#/components/schemas/HotelRestriction' ExceptionObj: type: object properties: logId: type: integer example: 884366976 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. example: 400 o.errorCode: type: string description: HDP error code, which is different from HTTP error code. example: DARI00001 type: type: string description: Absolute URI [RFC3986] that identifies the problem type. When dereferenced, it SHOULD provide a human-readable summary of the problem. example: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.x timestamp: type: string example: '2021-09-17T08:17:18.321Z' format: date-time required: - logId - title - status BaseByGuestAmt: type: object properties: ageQualifyingCode: type: string description: 'The Age category of the guest(s). This field is mapped to OTA Code List Age Qualifying Code (AQC). Only the following codes are supported for AgeQualifyingCode: (10 - Adult, 8 - Child).' example: '8' numberOfGuests: type: string description: Number of guests example: '1' amountBeforeTax: type: string description: Room Rate excluding all known taxes, fees and surcharges. example: '80' amountAfterTax: type: string description: Room Rate including all known taxes, fees and surcharges. example: '100' statusEnum: type: string description: Identifies the availability status of an item. enum: - Open - Close Inventory: type: object properties: statusApplicationControl: $ref: '#/components/schemas/invStatusApplicationControl' ratePlan: type: object properties: ratePlanCode: type: string description: The code for the rate plan. example: EX_DAILY invCounts: type: object description: A container for defining a single inventory count. properties: countType: type: string description: The type of inventory count being specified. example: DefinitiveAvailability count: type: string description: The number of rooms example: '8' OTA_HotelRateAmountNotifRQ: type: object properties: hotelRatePlans: type: object $ref: '#/components/schemas/HotelRatePlan' RatePlan: type: object properties: ratePlanNotifType: type: string $ref: '#/components/schemas/ratePlanNotifTypeEnum' description: Indicates the notification type example: Delta ratePlanCode: type: string description: The code for the rate plan. example: EX_DAILY rateCategory: type: string description: Rate Category for the rate plan. example: ABC commissionable: type: boolean description: Indicates if the rate code is commissionable or not. example: true currencyCode: type: string description: The code used for the rate plan code. ISO 4217 currency code example: USD startSellDate: type: string description: Start sell date of the rate code. example: '2015-07-11' endSellDate: type: string description: End sell date of the rate code. example: '2015-07-11' shortDescription: type: string description: The short description of the rate plan code. example: Best available rate rates: type: array items: $ref: '#/components/schemas/RateObject' LOSEnum: type: string description: An enumerated type that represents various type of length of stay restrictions. It is used to define how the minimum and maximum LOS is applied.MinLOS - Indicates Minimum length of stay restriction. Apply based on arrival date.
MaxLOS - Indicates Maximum length of Stay restriction. Apply based on arrival date.
RemoveMinLOS - Removes minimum lenth of stay restriction.
RemoveMaxLOS - Removes maximum lenth of stay restriction.
ForwardMinStay - Indicates a Minimum Stay Through restriction.
ForwardMaxStay - Indicates a Maximum Stay Through restriction.
RemoveForwardMinStay - Removes minimum foraward stay through restriction.
RemoveForwardMaxStay - Removes minimum foraward stay through restriction.
FullPatternLOS - Indicates Full Pattern Length of Stay restriction.
externalDocs: description: Find out more about Oracle Hospitality Restriction url: https://docs.oracle.com/en/industries/hospitality/opera-cloud/23.4/ocsuh/c_availability_restrictions.htm#Restrictions-300570AD enum: - MinLOS - MaxLOS - RemoveMinLOS - RemoveMaxLOS - ForwardMinStay - ForwardMaxStay - RemoveForwardMinStay - RemoveForwardMaxStay - FullPatternLOS RateObject: type: object properties: invTypeCode: type: string description: Channelized room type code example: EX_A1K maxGuestApplicable: type: string description: Indicates maximum occupancy for the room type. example: '' start: type: string format: date description: The starting value of the date range in the ISO 8601 Date Format. example: '2015-07-11' end: type: string format: date description: The ending value of the date range in the ISO 8601 Date Format. example: '2015-07-11' sun: type: boolean description: Sunday, day of week value example: true mon: type: boolean description: Monday, day of week value example: true tue: type: boolean description: Tueday, day of week value example: true weds: type: boolean description: Wednesday, day of week value example: true thur: type: boolean description: Thursday, day of week value example: true fri: type: boolean description: Friday, day of week value example: true sat: type: boolean description: Saturday, day of week value example: true ratesAmounts: type: array description: Rate amounts for the channelized room rate items: $ref: '#/components/schemas/RatesAmount' AdditionalGuestAmount: type: object properties: ageQualifyingCode: type: string description: 'The Age category of the guest(s). This field is mapped to OTA Code List Age Qualifying Code (AQC). Only the following codes are supported for AgeQualifyingCode: (10 - Adult, 8 - Child).' example: '10' minAge: type: string description: Indicates minimum age of a person for the charges to be applicable. example: '2' maxAge: type: string description: Indicates maximum age of a person for the charges to be applicable. example: '8' amount: type: string description: Amount to be charged example: '50' lengthsOfStay: type: array description: Collection of Length of Stay (LOS) elements. These LOS elements indicate what LOS restrictions are to be added or removed. items: $ref: '#/components/schemas/lengthOfStay' lengthOfStay: type: object properties: minMaxMessageType: $ref: '#/components/schemas/LOSEnum' time: type: string description: 'Used in conjunction with the minMaxMessageType and the time Unit to define the length of stay requirements. A value of zero is treated as no restriction.Note: This attribute must be set unless using MinMaxMessageType="FullPatternLOS".
' example: '0' timeUnit: $ref: '#/components/schemas/TimeUnitEnum' description: 'A time unit used to apply this status message to other inventory, and with more granularity than daily.Note: This attribute must be set unless using MinMaxMessageType="FullPatternLOS".
' losFixedPatternLength: type: integer description: The number of elements in the length of stay pattern. This attribute must be set when using MinMaxMessageType="FullPatternLOS" and absent otherwise. example: 7 losPattern: type: string description: Defines the length of stay restriction pattern. This attribute must be set when using MinMaxMessageType="FullPatternLOS" and absent otherwise. A sequence of Y and N characters indicating whether each length of stay is allowed, from one night to the value in FixedPatternLength. Any length of stay greater than FixedPatternLength inherits the value at the final position. For example, with FixedPatternLength="4" and FullPatternLOS="YNYN", only lengths of stay 1 and 3 are allowed. example: NYNNYYN ratePlanNotifTypeEnum: type: string description: The type of notification to apply to every rate notification message.Delta - Add or update the existing per-occupancy rates for the room type, rate plan, and dates specified in rate notification message.
New - Add new occupancy rates for the room type, rate plan, and dates specified in the rate notification message.
Overlay - Delete all of the per-occupancy rates for the room type, rate plan, and dates specified and replace them with new rates.
Remove - Delete all of the existing per-occupancy rates for the room type, rate plan, and dates.
enum: - Delta - New - Overlay - Remove invStatusApplicationControl: type: object required: - start - end - invTypeCode properties: start: type: string format: date description: The starting value of the date range in the ISO 8601 Date Format. example: '2021-12-01' end: type: string format: date description: The ending value of the date range in the ISO 8601 Date Format. example: '2021-12-15' invTypeCode: type: string description: room type code. example: EX_A1K OTA_HotelInvCountNotifRQ: type: object properties: hotelInventories: type: object description: The object to support a hotels inventory data per room type and date $ref: '#/components/schemas/HotelInventoryCount' TimeUnitEnum: type: string description: 'A time unit used to apply this status message to other inventory, and with more granularity than daily.Day - Represents if the restriction is per day.
Hour - Represents if the restriction is hourly
Note: This attribute must be set unless using MinMaxMessageType="FullPatternLOS".
' enum: - Day - Hour RatesAmount: type: object properties: baseByGuestAmts: type: array description: Container for a collection of base charges. items: $ref: '#/components/schemas/BaseByGuestAmt' example: - ageQualifyingCode: '10' numberOfGuests: '1' amountBeforeTax: '80' amountAfterTax: '100' - ageQualifyingCode: '10' numberOfGuests: '2' amountBeforeTax: '80' amountAfterTax: '100' - ageQualifyingCode: '10' numberOfGuests: '3' amountBeforeTax: '80' amountAfterTax: '100' - ageQualifyingCode: '10' numberOfGuests: '4' amountBeforeTax: '80' amountAfterTax: '100' - ageQualifyingCode: '10' numberOfGuests: '5' amountBeforeTax: '80' amountAfterTax: '100' additionalGuestAmounts: type: array description: Container for a collection of charges for additional guests. items: $ref: '#/components/schemas/AdditionalGuestAmount' example: - ageQualifyingCode: '10' amount: '50' - ageQualifyingCode: '8' minAge: '2' maxAge: '8' amount: '50' restrStatusApplicationControl: type: object required: - start - end - mon - tue - weds - thur - fri - sat - sun - invTypeCode - ratePlanCode properties: start: type: string format: date description: The starting value of the date range in the ISO 8601 Date Format. example: '2021-11-20' end: type: string format: date description: The ending value of the date range in the ISO 8601 Date Format. example: '2021-11-20' mon: type: boolean description: Monday, day of week value example: true tue: type: boolean description: Tuesday, day of week value example: true weds: type: boolean description: Wednesday, day of week value example: true thur: type: boolean description: Thursday, day of week value example: true fri: type: boolean description: Friday, day of week value example: true sat: type: boolean description: Saturday, day of week value example: true sun: type: boolean description: Sunday, day of week value example: true invTypeCode: type: string description: room type code. example: EX_A1K ratePlanCode: type: string description: The code for the rate plan. example: EX_DAILY ExceptionDetail: type: object allOf: - $ref: '#/components/schemas/ExceptionObj' - type: object properties: o.errorDetails: type: array items: $ref: '#/components/schemas/ExceptionObj' HotelInventoryCount: type: object properties: uniqueId: type: object $ref: '#/components/schemas/UniqueId' timeStamp: $ref: '#/components/schemas/Timestamp' hotelCode: type: string description: A unique identifier value for the property/hotel associated with channel example: HOTELCODE channelCode: type: string description: Code for the channel which is receiving published data. example: CHANNELCODE chainCode: type: string description: If the property/hotel is part of the chain, the associated chain code. example: CHAINCODE brandCode: type: string description: A value of the brand code associated with channel example: BRANDCODE inventories: type: array description: The object to support room type inventory per start and end date items: $ref: '#/components/schemas/Inventory' externalDocs: description: Find out more about Oracle Hospitality url: https://docs.oracle.com/en/industries/hospitality/integration_platforms.html