{ "swagger": "2.0", "info": { "title": "OPERA Cloud Front Desk Operations Outbound API", "description": "APIs to cater for Front Desk related external (outbound) functionality with OPERA Cloud. These APIs facilitate various operations related to getting data from an external system, and inserting it into OPERA Cloud.

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": "/fof/v1", "produces": [ "application/json" ], "paths": { "/hotels/{hotelId}/externalRoomKeys": { "post": { "summary": "Requests room key(s)", "description": "API that manages requests for Door Lock Room Keys. This operation is used by OPERA Cloud connected to external Door Lock Systems systems via Outbound Systems configuration: \n\nOPERA Cloud utilizes this operation \n\n- to request new or additional room keys - e.g. when guest checks in, or additional keys post check in.\n\n- to request to activate new keys after check on e.g. when a room key has been lost for a room.\n\n- to request a room key which is not related to a guest reservation but valid for a defined time - (for show rooms, repair) - One Shot Key.\n\n- to request to re-encode a key whereby other keys for this room remain active.\n\n- to request to read a key data from a room key and display it to the user in the PMS.\n\n- to request to modify existing key data - upon room move or change of departure date. (online key systems only!!)\n\n- to request to remove / delete a room key from a room on. Usually sent with check out of a reservation.\n\nUse this API to post a room key action to the active Door Lock System.\n\nNotes on keyType values:\n\nkeyType = New\n\nkeyType = Lost \n\nIt is expected that all previous active keys for the room will become invalid.\n\nIt is expected that partner system handles multiple keys being active in case numberOfKeys is >1.\n\nkeyType = Duplicate\n\nkeyType = ReEncode\n\nIt is expected that existing active keys for this room remain active.\n\nkeyType = OneShot\n\nIt is expected that the room key is only valid for a room for specific time (for maintenance or Show room).\n\nIt is never related to a reservation.\n\nkeyType = Read A request to the Key Card system to read Key Card information from requested Key Encoder/reader.\n\nThe Key Read functionality is of pure informational purpose. None of the received information is stored or processed in the PMS, and it is only for display to the user.\n\nkeyType = Remove\n\nIt is expected that with this request all active keys for a room or reservation will become inactive or invalid so they will not be able to open the room after defined validityEnd time.\n\nAdditional KeyType actions used by Online Door Lock Systems:\n\nOnline Key card Systems are systems which do not write guest data to the room key directly but do store guest data internally and send the information to the related door lock.\n\nkeyType = ModifyStay\n\nFor Online Door Lock Systems - Request to adjust Room key data when guest changes length of stay (validityEnd)\n\nkeyType = RoomMove\n\nFor Online Door Lock Systems - adjust Room key data when guest performs room move. \n\n

OperationId: postExternalRoomKeys

", "operationId": "postExternalRoomKeys", "deprecated": true, "parameters": [ { "name": "hotelId", "in": "path", "required": true, "type": "string", "minLength": 1, "maxLength": 2000, "description": "Unique ID of the hotel" }, { "name": "roomKey", "in": "body", "required": true, "description": "Request for generation of room key.", "schema": { "allOf": [ { "$ref": "#/definitions/roomKeyExternal" } ] } }, { "$ref": "#/parameters/authKey" }, { "$ref": "#/parameters/externalData" }, { "$ref": "#/parameters/x-app-key" }, { "$ref": "#/parameters/x-request-id" }, { "$ref": "#/parameters/x-originating-application" } ], "responses": { "201": { "headers": { "Content-Language": { "type": "string", "description": "Audience language", "pattern": "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*", "x-example": "en-GB" } }, "description": "Response from the active Door Locking System Property Interface to the post request.

Note on Response messages:\n\nIt is necessary to specify both the PMS 'encoderTerminal' and the Key Service system's coder (encoderId) in cases where more than one PMS workstation may be addressing one key coder. ORACLE PMS will NOT send another Request command automatically should a negative response be received. The user sees the response and decides if another try should be made.

", "schema": { "$ref": "#/definitions/roomKeyExternalDetails" } }, "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": [ "FrontOfficeExternal" ] } }, "/hotels/{hotelId}/roomKeysOutbound": { "post": { "summary": "Requests room key(s)", "description": "API that manages requests for Door Lock Room Keys. This operation is used by OPERA Cloud connected to external Door Lock Systems systems via Outbound Systems configuration: \n\nOPERA Cloud utilizes this operation \n\n- to request new or additional room keys - e.g. when guest checks in, or additional keys post check in.\n\n- to request to activate new keys after check on e.g. when a room key has been lost for a room.\n\n- to request a room key which is not related to a guest reservation but valid for a defined time - (for show rooms, repair) - One Shot Key.\n\n- to request to re-encode a key whereby other keys for this room remain active.\n\n- to request to read a key data from a room key and display it to the user in the PMS.\n\n- to request to modify existing key data - upon room move or change of departure date. (online key systems only!!)\n\n- to request to remove / delete a room key from a room on. Usually sent with check out of a reservation.\n\nUse this API to post a room key action to the active Door Lock System.\n\nNotes on keyType values:\n\nkeyType = New\n\nkeyType = Lost \n\nIt is expected that all previous active keys for the room will become invalid.\n\nIt is expected that partner system handles multiple keys being active in case numberOfKeys is >1.\n\nkeyType = Duplicate\n\nkeyType = ReEncode\n\nIt is expected that existing active keys for this room remain active.\n\nkeyType = OneShot\n\nIt is expected that the room key is only valid for a room for specific time (for maintenance or Show room).\n\nIt is never related to a reservation.\n\nkeyType = Read A request to the Key Card system to read Key Card information from requested Key Encoder/reader.\n\nThe Key Read functionality is of pure informational purpose. None of the received information is stored or processed in the PMS, and it is only for display to the user.\n\nkeyType = Remove\n\nIt is expected that with this request all active keys for a room or reservation will become inactive or invalid so they will not be able to open the room after defined validityEnd time.\n\nAdditional KeyType actions used by Online Door Lock Systems:\n\nOnline Key card Systems are systems which do not write guest data to the room key directly but do store guest data internally and send the information to the related door lock.\n\nkeyType = ModifyStay\n\nFor Online Door Lock Systems - Request to adjust Room key data when guest changes length of stay (validityEnd)\n\nkeyType = RoomMove\n\nFor Online Door Lock Systems - adjust Room key data when guest performs room move. \n\n

OperationId: postRoomKeysOutbound

", "operationId": "postRoomKeysOutbound", "parameters": [ { "name": "hotelId", "in": "path", "required": true, "type": "string", "minLength": 1, "maxLength": 2000, "description": "Unique ID of the hotel" }, { "name": "roomKey", "in": "body", "required": true, "description": "Request for generation of room key.", "schema": { "allOf": [ { "$ref": "#/definitions/roomKeysOutbound" } ] } }, { "$ref": "#/parameters/authKey" }, { "$ref": "#/parameters/externalData" }, { "$ref": "#/parameters/x-app-key" }, { "$ref": "#/parameters/x-request-id" }, { "$ref": "#/parameters/x-originating-application" } ], "responses": { "201": { "headers": { "Content-Language": { "type": "string", "description": "Audience language", "pattern": "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*", "x-example": "en-GB" } }, "description": "Response from the active Door Locking System Property Interface to the post request.

Note on Response messages:\n\nIt is necessary to specify both the PMS 'encoderTerminal' and the Key Service system's coder (encoderId) in cases where more than one PMS workstation may be addressing one key coder. ORACLE PMS will NOT send another Request command automatically should a negative response be received. The user sees the response and decides if another try should be made.

", "schema": { "$ref": "#/definitions/roomKeysOutboundDetails" } }, "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": [ "FrontOfficeExternal" ] } } }, "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": false }, "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" } }, "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": { "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" } } }, "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." } } }, "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" } } }, "links": { "type": "array", "items": { "$ref": "#/definitions/instanceLink" } }, "uniqueIDListType": { "type": "array", "description": "Unique Id that references an object uniquely in the system.", "maxItems": 4000, "items": { "$ref": "#/definitions/uniqueID_Type" } }, "uniqueID_Type": { "type": "object", "description": "An identifier used to uniquely reference an object in a system (e.g. an airline reservation reference, customer profile reference, booking confirmation number, or a reference to a previous availability quote).", "properties": { "id": { "description": "A unique identifying value assigned by the creating system. The ID attribute may be used to reference a primary-key value within a database or in a particular implementation.", "type": "string", "minLength": 0, "maxLength": 80 }, "type": { "description": "A reference to the type of object defined by the UniqueID element.", "type": "string", "minLength": 0, "maxLength": 40 } } }, "keyTrackType": { "type": "object", "properties": { "keyTrack1": { "type": "string", "minLength": 0, "maxLength": 80, "description": "specific data if configured" }, "keyTrack2": { "type": "string", "minLength": 0, "maxLength": 2000, "description": "Track2 data string sent by PMS if defined or string (e.g. RFID ID) sent by DLS system in response" }, "keyTrack3": { "type": "string", "minLength": 0, "maxLength": 2000, "description": "Includes the Key Pincode or a digital key string for use (in 201 response only)" } } }, "roomKeyOutBoundType": { "type": "string", "description": "Simple type for representing room key type.", "enum": [ "New", "Duplicate", "Lost", "OneShot", "RoomMove", "ReEncode", "Remove", "ModifyStay", "Read" ] }, "requestType": { "type": "string", "description": "Simple type for representing request type. Request specific data in response message. 'R1' = request for regular room Key; 'R2' = request for UDID or Track2 of room key; 'R3' = request for PinCode; 'R4' = request for mobile key (no physical key)", "enum": [ "R1", "R2", "R3", "R4" ] }, "roomKeyResponseCodeType": { "type": "string", "description": "Response Codes supported: OK - Successful; BY - Encoder Busy; UR - Unprocessable Request; RY - Retry", "enum": [ "OK", "BY", "UR", "RY" ] }, "keyOptionsType": { "type": "object", "description": "This contains code and description information for key options.", "properties": { "keyOptionsCode": { "description": "key options code.", "type": "string", "minLength": 0, "maxLength": 40 }, "keyOptionDescription": { "description": "key options description.", "type": "string", "minLength": 0, "maxLength": 40 } } }, "keyOptionsResponseType": { "type": "object", "description": "This contains code and description information for key options.", "properties": { "keyOptionsCode": { "description": "key options code.", "type": "string", "minLength": 0, "maxLength": 40 }, "keyOptionDescription": { "description": "key options description.", "type": "string", "minLength": 0, "maxLength": 40 }, "isEnabled": { "description": "Indicates that the keyOption is enabled for this key.", "type": "boolean" }, "default": { "description": "Indicates that this keyOption is a default access.", "type": "boolean" } } }, "externalRoomKeyType": { "type": "string", "description": "Simple type for representing room key request type. 'HardKey' = request for physical key card with RFID; 'MobileKey' = request for mobile key (no physical key); 'PinCode' = request for PinCode; 'KeyPayload' = request Key image from DLS System", "enum": [ "HardKey", "MobileKey", "PinCode", "KeyPayload" ] }, "keyUserType": { "type": "string", "description": "Simple type for representing key user type. 'Guest' = request Opera Guest room key", "enum": [ "Guest" ] }, "printDataType": { "type": "object", "description": "Lists the text, file or picture to print onto a Guest room key (only for roomKeyType is HardKey).", "properties": { "printText": { "description": "key options code.", "type": "string", "minLength": 0, "maxLength": 200 }, "printFile": { "description": "Base64 format of file representing data to print.", "type": "string", "format": "byte" }, "printPicture": { "description": "Base64 format of picture representing data to print.", "type": "string", "format": "byte" } } }, "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 } } }, "roomKeyExternal": { "type": "object", "description": "Request for generation of room key used for OutBound.", "properties": { "encoderId": { "type": "string", "description": "Unique Id as defined by Door Lock System.", "minLength": 1, "maxLength": 2000 }, "encoderTerminal": { "type": "string", "description": "The Unique PMS encoder name linked with the encoderId", "minLength": 1, "maxLength": 2000 }, "roomId": { "description": "The PMS room number to generate a key for.", "type": "string", "maxLength": 2000 }, "oldRoomId": { "description": "Old Room Number is used when a room move (keyType RoomMove) is performed.", "type": "string", "maxLength": 2000 }, "noOfKeys": { "type": "integer", "description": "Number of keys to be created.The value is always 1", "minimum": 1, "maximum": 1, "default": 1 }, "reservationIdList": { "description": "Collection of unique reservation identifiers for the reservation we are trying to make a room key for.", "$ref": "#/definitions/uniqueIDListType" }, "guestShareFlag": { "type": "boolean", "description": "Indicates if Guest is a sharer or not" }, "OldGuestShareFlag": { "type": "boolean", "description": "Indicates if old Guest room is a sharer or not when a room move (keyType RoomMove) is performed." }, "keyOptions": { "type": "string", "maxLength": 2000, "description": "Lists the access areas defined in PMS valid for the room key." }, "keyValidityStart": { "type": "string", "description": "The date/time the room key is valid from.", "format": "date-time" }, "keyValidityEnd": { "type": "string", "description": "The date/time the room key is valid to.", "format": "date-time" }, "keyType": { "$ref": "#/definitions/roomKeyOutBoundType" }, "keyTrack": { "description": "KeyTrack Data.", "$ref": "#/definitions/keyTrackType" }, "additionalRooms": { "description": "Collection of additional rooms to be included in key creation of reservation room.", "type": "array", "maxItems": 999, "items": { "type": "string", "minLength": 0, "maxLength": 20 } }, "oldAdditionalRooms": { "description": "Collection of old additional rooms in key creation of reservation room when a room move (keyType RoomMove) is performed.", "type": "array", "maxItems": 999, "items": { "type": "string", "minLength": 0, "maxLength": 20 } }, "userId": { "type": "string", "description": "Unique identifier for the PMS user.", "maxLength": 2000 }, "requestType": { "$ref": "#/definitions/requestType" } }, "required": [ "keyType", "encoderTerminal", "encoderId" ] }, "roomKeysOutbound": { "type": "object", "description": "Request for generation of room key used for OutBound.", "properties": { "encoderId": { "type": "string", "description": "Unique Id as defined by Door Lock System.", "minLength": 1, "maxLength": 2000 }, "encoderTerminal": { "type": "string", "description": "The Unique PMS encoder name linked with the encoderId", "minLength": 1, "maxLength": 2000 }, "roomId": { "description": "The PMS room number to generate a key for.", "type": "string", "maxLength": 2000 }, "oldRoomId": { "description": "Old Room Number is used when a room move (keyType RoomMove) is performed.", "type": "string", "maxLength": 2000 }, "noOfKeys": { "type": "integer", "description": "Number of keys to be created.", "minimum": 1, "maximum": 1 }, "reservationIdList": { "description": "Collection of unique reservation identifiers for the reservation we are trying to make a room key for.", "$ref": "#/definitions/uniqueIDListType" }, "guestShareFlag": { "type": "boolean", "description": "Indicates if Guest is a sharer or not" }, "OldGuestShareFlag": { "type": "boolean", "description": "Indicates if old Guest room is a sharer or not when a room move (keyType RoomMove) is performed." }, "keyValidityStart": { "type": "string", "description": "The date/time the room key is valid from.", "format": "date-time" }, "keyValidityEnd": { "type": "string", "description": "The date/time the room key is valid to.", "format": "date-time" }, "keyType": { "$ref": "#/definitions/roomKeyOutBoundType" }, "keyTrack": { "description": "KeyTrack Data.", "$ref": "#/definitions/keyTrackType" }, "additionalRooms": { "description": "Collection of additional rooms to be included in key creation of reservation room.", "type": "array", "maxItems": 999, "items": { "type": "string", "minLength": 0, "maxLength": 20 } }, "oldAdditionalRooms": { "description": "Collection of old additional rooms in key creation of reservation room when a room move (keyType RoomMove) is performed.", "type": "array", "maxItems": 999, "items": { "type": "string", "minLength": 0, "maxLength": 20 } }, "userId": { "type": "string", "description": "Unique identifier for the PMS user.", "maxLength": 2000 }, "keyOptions": { "description": "Lists the access areas defined in PMS valid for the room key.", "type": "array", "maxItems": 1000, "items": { "$ref": "#/definitions/keyOptionsType" } }, "keyRequestTime": { "type": "string", "description": "The date/time the room key is requested.", "format": "date-time" }, "roomKeyType": { "$ref": "#/definitions/externalRoomKeyType" }, "keyUserType": { "$ref": "#/definitions/keyUserType" }, "cardSerialNumber": { "description": "Unique identifier of RFID card used for KeyPayload generation. Required when roomKeyType is KeyPayload.", "type": "string", "maxLength": 80 }, "printData": { "description": "Lists the text, file or picture to print onto a Guest room key (only for roomKeyType is HardKey).", "type": "object", "$ref": "#/definitions/printDataType" } }, "required": [ "keyType", "encoderTerminal", "encoderId", "roomKeyType", "keyUserType", "keyRequestTime" ] }, "roomKeyExternalDetails": { "type": "object", "description": "Response for the key request made to DLS from OPERA Cloud.", "properties": { "encoderId": { "type": "string", "description": "Unique Id as defined by Door Lock System.", "maxLength": 2000 }, "encoderTerminal": { "type": "string", "description": "The Unique PMS encoder name linked with the encoderId", "minLength": 1, "maxLength": 2000 }, "reservationIdList": { "description": "Collection of unique reservation identifiers for the reservation we are trying to make a room key for.", "$ref": "#/definitions/uniqueIDListType" }, "roomId": { "description": "The PMS room number to generate a key for.", "type": "string", "maxLength": 2000 }, "keyTrack": { "description": "KeyTrack Data.", "type": "array", "items": { "$ref": "#/definitions/keyTrackType" } }, "keyOptions": { "type": "string", "maxLength": 200, "description": "Lists all PMS access areas - only send in response for keyType: 'Read' request" }, "keyValidityStart": { "type": "string", "description": "Date/Time Key is valid from - only send in response for keyType: 'Read' request", "format": "date-time" }, "keyValidityEnd": { "type": "string", "description": "Date/Time Key is valid to - only send in response for keyType: 'Read' request", "format": "date-time" }, "responseText": { "type": "string", "description": "A user-friendly text with information on why a request is not successful", "maxLength": 2000 }, "responseCode": { "$ref": "#/definitions/roomKeyResponseCodeType" }, "additionalRooms": { "description": "Collection of additional rooms to be included in key creation of reservation room.", "type": "array", "maxItems": 999, "items": { "type": "string", "minLength": 0, "maxLength": 20 } } }, "required": [ "roomId", "responseCode", "encoderTerminal" ] }, "roomKeysOutboundDetails": { "type": "object", "description": "Response for the key request made to DLS from OPERA Cloud.", "properties": { "encoderId": { "type": "string", "description": "Unique Id as defined by Door Lock System.", "maxLength": 2000 }, "encoderTerminal": { "type": "string", "description": "The Unique PMS encoder name linked with the encoderId", "minLength": 1, "maxLength": 2000 }, "reservationIdList": { "description": "Collection of unique reservation identifiers for the reservation we are trying to make a room key for.", "$ref": "#/definitions/uniqueIDListType" }, "roomId": { "description": "The PMS room number to generate a key for.", "type": "string", "maxLength": 2000 }, "keyTrack": { "description": "KeyTrack Data.", "type": "array", "items": { "$ref": "#/definitions/keyTrackType" } }, "keyValidityStart": { "type": "string", "description": "Date/Time Key is valid from - only send in response for keyType: 'Read' request. Uses the hotel's time zone.", "format": "date-time" }, "keyValidityEnd": { "type": "string", "description": "Date/Time Key is valid to - only send in response for keyType: 'Read' request. Uses the hotel's time zone.", "format": "date-time" }, "noOfKeys": { "type": "integer", "description": "Number of keys to be created.The value is always 1" }, "responseText": { "type": "string", "description": "A user-friendly text with information on why a request is not successful", "maxLength": 2000 }, "responseCode": { "$ref": "#/definitions/roomKeyResponseCodeType" }, "additionalRooms": { "description": "Collection of additional rooms to be included in key creation of reservation room.", "type": "array", "maxItems": 999, "items": { "type": "string", "minLength": 0, "maxLength": 20 } }, "keyOptions": { "description": "Lists all PMS access areas.", "type": "array", "maxItems": 1000, "items": { "$ref": "#/definitions/keyOptionsResponseType" } }, "userId": { "type": "string", "description": "Unique identifier for the PMS user.", "maxLength": 2000 }, "digitalKeyData": { "description": "Base64 format of Mobile Key data provided by DLS System which the external system requested - only send in response for roomKeyType: 'MobileKey'", "type": "string", "format": "byte" }, "keyImage": { "description": "Image of the created key - only send in response for roomKeyType: 'KeyPayload'", "type": "string", "format": "byte" }, "cardSerialNumber": { "description": "Unique identifier of RFID card used for KeyPayload generation - only send in response for roomKeyType: 'KeyPayload'.", "type": "string", "maxLength": 80 }, "keyCreationTime": { "type": "string", "description": "Date/Time the key has been generated by Door Locking system. Uses the hotel's time zone.", "format": "date-time" }, "roomKeyType": { "$ref": "#/definitions/externalRoomKeyType" }, "keyUserType": { "$ref": "#/definitions/keyUserType" } }, "required": [ "roomId", "responseCode", "encoderTerminal", "roomKeyType", "keyUserType", "keyValidityStart", "keyValidityEnd", "keyCreationTime" ] } }, "tags": [ { "name": "FrontOfficeExternal", "description": "The FrontOffice External module provides operations for OPERA Cloud to access FrontOffice operations from external interfaces." } ], "externalDocs": { "description": "Find out more about Oracle Hospitality", "url": "https://docs.oracle.com/en/industries/hospitality/integration_platforms.html" } }