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-ari-publication-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 email required.
A second provider on the same verified email joins the account you already have.
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.<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>
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). <p><strong>OperationId:</strong>postInventory</p>
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).<p><strong>OperationId:</strong>postRates</p>
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).<p><strong>OperationId:</strong>postRestrictions</p>
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. <p> Arrival -It is applicable based on arrival date of a booking. </p> <p> Departure - It is applicable based on arrival date of a booking. </p> <p> Master - This value indicates whether the room rate is available for booking on the date. Note: setting Master to Close is known as a <b>STOP SELL</b> </p> '
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. <p> MinLOS - Indicates Minimum length of stay restriction. Apply based on arrival date. </p> <p> MaxLOS - Indicates Maximum length of Stay restriction. Apply based on arrival date. </p> <p>RemoveMinLOS - Removes minimum lenth of stay restriction. </p> <p> RemoveMaxLOS - Removes maximum lenth of stay restriction. </p> <p> ForwardMinStay - Indicates a Minimum Stay Through restriction. </p> <p> ForwardMaxStay - Indicates a Maximum Stay Through restriction. </p> <p> RemoveForwardMinStay - Removes minimum foraward stay through restriction. </p> <p> RemoveForwardMaxStay - Removes minimum foraward stay through restriction. </p> <p> FullPatternLOS - Indicates Full Pattern Length of Stay restriction. </p>
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. <p>Note: This attribute must be set unless using MinMaxMessageType="FullPatternLOS".</p>'
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. <p> Note: This attribute must be set unless using MinMaxMessageType="FullPatternLOS".</p>'
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. <p> Delta - Add or update the existing per-occupancy rates for the room type, rate plan, and dates specified in rate notification message. </p> <p> New - Add new occupancy rates for the room type, rate plan, and dates specified in the rate notification message. </p> <p> Overlay - Delete all of the per-occupancy rates for the room type, rate plan, and dates specified and replace them with new rates. </p> <p> Remove - Delete all of the existing per-occupancy rates for the room type, rate plan, and dates.</p>
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. <p> Day - Represents if the restriction is per day.</p> <p> Hour - Represents if the restriction is hourly </p> <p>Note: This attribute must be set unless using MinMaxMessageType="FullPatternLOS".</p>'
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