{ "swagger": "2.0", "info": { "title": "OPERA Cloud Back Office Operations API", "description": "APIs to cater for Back Office Operations functionality in OPERA Cloud.

A common BackOffice industry term is End of Day. This closes and balances each day's business activities. It reconciles guest folios and processes credit card transactions. The End of Day routine rolls the business date forward and prints final reports.

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" } }, "schemes": [ "https" ], "basePath": "/bof/v1", "produces": [ "application/json" ], "paths": { "/hotels/{hotelId}/businessDate": { "get": { "summary": "Fetch end of day business dates", "description": "Use this API to find out the current business date of a specified hotel.

OperationId:getBusinessDate

", "operationId": "getBusinessDate", "parameters": [ { "name": "hotelId", "in": "path", "required": true, "type": "string", "minLength": 1, "maxLength": 2000, "description": "Unique ID that identifies a single hotel property." }, { "$ref": "#/parameters/authKey" }, { "$ref": "#/parameters/externalData" }, { "$ref": "#/parameters/x-app-key" }, { "$ref": "#/parameters/x-request-id" }, { "$ref": "#/parameters/x-originating-application" }, { "$ref": "#/parameters/x-hotelid" }, { "$ref": "#/parameters/x-externalsystem" }, { "$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 for fetching active end of day status for multiple hotels.", "schema": { "$ref": "#/definitions/businessDate" }, "examples": { "application/json": { "hotels": [ { "hotelId": "HOTEL1", "businessDate": "2020-04-05" } ] } } }, "204": { "description": "BusinessDate 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": [ "BackOfficeOperations" ] } }, "/services/backOfficeOperations/status": { "get": { "summary": "Ping back office operations service", "description": "Use this API to Ping back office operations service.

OperationId:pingBackOfficeOperationsService

", "operationId": "pingBackOfficeOperationsService", "parameters": [ { "$ref": "#/parameters/authKey" }, { "$ref": "#/parameters/externalData" }, { "$ref": "#/parameters/x-app-key" }, { "$ref": "#/parameters/x-request-id" }, { "$ref": "#/parameters/x-originating-application" }, { "$ref": "#/parameters/x-hotelid" }, { "$ref": "#/parameters/x-externalsystem" }, { "$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 for Ping operation.", "schema": { "$ref": "#/definitions/operaVersion" } }, "204": { "description": "pingBackOfficeOperationsService 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": [ "BackOfficeOperations" ] } } }, "parameters": { "externalData": { "name": "externalData", "type": "string", "description": "Pass this header as true, if payload needs DVM", "in": "header" }, "authKey": { "name": "authorization", "description": "Bearer token that needs to be passed which is generated post user authentication", "type": "string", "in": "header", "required": true }, "x-app-key": { "name": "x-app-key", "description": "Client or Partner's Application Key", "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}$", "in": "header", "required": true }, "x-request-id": { "name": "x-request-id", "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}", "description": "Request Id of an incoming request", "in": "header" }, "x-originating-application": { "name": "x-originating-application", "type": "string", "description": "Customer's Integration Application Id", "in": "header" }, "x-hotelid": { "name": "x-hotelid", "type": "string", "description": "Mandatory parameter to identify the hotel code where the end user is logged in", "in": "header", "required": true }, "x-externalsystem": { "name": "x-externalsystem", "type": "string", "maxLength": 40, "description": "External system code.", "in": "header", "x-example": "EXTERNALSYSTEMCODE" }, "Accept-Language": { "name": "Accept-Language", "type": "string", "description": "Language code", "in": "header" }, "x-hubid": { "name": "x-hubid", "type": "string", "description": "x-hubid is a logical grouping of multiple properties that allows api consumers to manage data from a group of properties. This x-hubid is a valid list of hub codes configured in OPERA to which the user has access. Rest APIs without hotelId in the operation path can support hub level integration using x-hubid", "in": "header" } }, "responses": { "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/exceptionDetailType" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Resource not found", "schema": { "$ref": "#/definitions/exceptionDetailType" } }, "405": { "description": "Method not allowed" }, "406": { "description": "Not acceptable." }, "413": { "description": "Request Entity Too Large" }, "414": { "description": "Request URI Too Large" }, "415": { "description": "Unsupported Media Type" }, "500": { "description": "System Error", "schema": { "$ref": "#/definitions/exceptionDetailType" } }, "502": { "description": "Bad Gateway" }, "503": { "description": "Service Unavailable" } }, "definitions": { "businessDate": { "type": "object", "description": "Response for fetching active end of day status for multiple hotels.", "properties": { "hotels": { "description": "Collection of hotels and its active end of days.", "$ref": "#/definitions/hotelActiveEndOfDaysType" }, "links": { "$ref": "#/definitions/links" }, "warnings": { "$ref": "#/definitions/warningsType" } } }, "hotelActiveEndOfDaysType": { "type": "array", "description": "Collection of hotels and its active end of days.", "maxItems": 4000, "items": { "$ref": "#/definitions/hotelActiveEndOfDayType" } }, "hotelActiveEndOfDayType": { "type": "object", "description": "Defines hotel and its active end of days.", "properties": { "hotelId": { "description": "Hotel code of the active end of days.", "type": "string", "minLength": 0, "maxLength": 20 }, "businessDate": { "description": "Current open business date of hotel.", "type": "string", "format": "date", "maxLength": 8 } } }, "links": { "type": "array", "items": { "$ref": "#/definitions/instanceLink" } }, "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" } } }, "warningsType": { "type": "array", "description": "Used in conjunction with the Success element to define a business error.", "maxItems": 4000, "items": { "$ref": "#/definitions/warningType" } }, "warningType": { "type": "object", "description": "Used when a message has been successfully processed to report any warnings or business errors that occurred.", "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": "#/definitions/errorInstance" } }, "links": { "$ref": "#/definitions/links" } }, "required": [ "type", "title" ] }, "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." } }, "required": [ "type", "title" ] }, "operaVersionNumberType": { "type": "string", "description": "Current Opera Version Number", "minLength": 0, "maxLength": 40 }, "operaVersion": { "type": "object", "description": "Response for Ping operation.", "properties": { "operaVersion": { "description": "Opera version number.", "$ref": "#/definitions/operaVersionNumberType" }, "links": { "$ref": "#/definitions/links" }, "warnings": { "$ref": "#/definitions/warningsType" } } } }, "tags": [ { "name": "BackOfficeOperations", "description": "This module provides APIs to service Back Office operations for property, such as managing end-of-day, getting the properties current business date, and perform cashier closure." } ], "externalDocs": { "description": "Find out more about Oracle Hospitality", "url": "https://docs.oracle.com/en/industries/hospitality/integration_platforms.html" } }