Workflow: Delete Active Room Key(s)

A typical process to send a Delete room key request from out the OPERA Cloud UI for a reservation is as follows:

Sequence Diagram

This image shows the process for deleting an active room key.

Description of Steps:

  Description Sample Call
1

Request for deleting all keys or Pin code for a reservation is sent to the door lock system from the OPERA Cloud PMS UI.

The door lock system must respond within 20 seconds with a "201" status message that the room key(s) have been set inactive, or if an unsuccessful request, a "201" response containing message information on why the request could not be processed.

A PostRoomKeysOutbound request message containing the keyType "Remove" requests the connected Door Lock system to set all active room keys, Pin code, or mobile key inactive for a specific reservation/room.

After the Door lock system processed the request, it sends back a 201 http response message to OPERA Cloud containing the result of the request.

ORACLE Cloud PMS does NOT send another request command automatically should a negative response be received.

When the "Remove" request is sent during a reservation Check out and the Door Lock system sends back an unsuccessful response, OPERA Cloud will not attempt to repeat the request. In OPERA Cloud, the room key is marked as "deleted."

The request message contains the reservationId and the roomId.

It will be up to the Door Lock system to handle room keys based on the reservationId (recommended) or by the roomId.

A "Remove" key request is typically sent at reservation check-out and is meant to set all active room keys inactive.

When the Door Lock system supports it, a key might be valid for a defined time after the Valid Until Date/Time.

OPERA PMS has no control on a room key being invalid. The "Remove" keyType in the request call only indicates a "request" to set a room key inactive.

Remove Room Key Request

POST {{HostName}}/fof/v1/hotels/{{HotelId}}/roomKeysOutbound

{
  "keyType": "Remove",
  "encoderTerminal": "TERM1",
  "encoderId": "1",
  "roomKeyType": "HardKey",
  "keyUserType": "Guest",
  "keyRequestTime": "2024-02-26T16:16:10.295Z",
  "roomId": "101",
  "oldRoomId": "",
  "noOfKeys": 1,
  "reservationIdList": [
    {
      "id": "{{ReservationId}}",
      "type": "Reservation"
    },
    {
      "id": "2468024",
      "type": "Confirmation"
    }
  ],
  "guestShareFlag": "false",
  "OldGuestShareFlag": "",
  "keyValidityStart": "2024-02-26T11:16:16.000Z",
  "keyValidityEnd": "2024-02-27T12:00:00.000Z",
  "keyTrack": {
    "keyTrack1": "",
    "keyTrack2": "",
    "keyTrack3": ""
  },
  "additionalRooms": [
    "",
    ""
  ],
  "oldAdditionalRooms": [
    "",
    ""
  ],
  "userId": "PMSUser1",
  "keyOptions": [
    {
      "keyOptionsCode": "SAU",
      "keyOptionDescription": "Sauna"
    },
    {
      "keyOptionsCode": "GAR",
      "keyOptionDescription": "Garage"
    }
  ],
  "cardSerialNumber": "",
  "printData": {
    "printText": "",
    "printFile": "",
    "printPicture": ""
  }
}

Remove Room Key Response


{
  "roomId": "101",
  "responseCode": "OK",
  "encoderTerminal": "TERM1",
  "roomKeyType": "HardKey",
  "keyUserType": "Guest",
  "keyValidityStart": "2024-02-26T11:16:16.000Z",
  "keyValidityEnd": "2024-02-27T12:00:00.000Z",
  "keyCreationTime": "2024-02-26T11:16:16.138Z",
  "noOfKeys": "1",
  "encoderId": "1",
  "reservationIdList": [
    {
      "id": "{{ReservationId}}",
      "type": "Reservation"
    },
    {
      "id": "2468024",
      "type": "Confirmation"
    }
  ],
  "responseText": "Key successfully deleted/removed",
  "userId": "PMSUser1"
}

Remove Pincode Request

POST {{HostName}}/fof/v1/hotels/{{HotelId}}/roomKeysOutbound

{
  "keyType": "Remove",
  "encoderTerminal": "TERM1",
  "encoderId": "1",
  "roomKeyType": "PinCode",
  "keyUserType": "Guest",
  "keyRequestTime": "2024-02-26T16:16:10.295Z",
  "roomId": "101",
  "oldRoomId": "",
  "noOfKeys": 1,
  "reservationIdList": [
    {
      "id": "{{ReservationId}}",
      "type": "Reservation"
    },
    {
      "id": "2468024",
      "type": "Confirmation"
    }
  ],
  "guestShareFlag": "false",
  "OldGuestShareFlag": "",
  "keyValidityStart": "2024-02-26T11:16:16.000Z",
  "keyValidityEnd": "2024-02-27T12:00:00.000Z",
  "keyTrack": {
    "keyTrack1": "",
    "keyTrack2": "",
    "keyTrack3": ""
  },
  "additionalRooms": [
    "",
    ""
  ],
  "oldAdditionalRooms": [
    "",
    ""
  ],
  "userId": "PMSUser1",
  "keyOptions": [
    {
      "keyOptionsCode": "SAU",
      "keyOptionDescription": "Sauna"
    },
    {
      "keyOptionsCode": "GAR",
      "keyOptionDescription": "Garage"
    }
  ],
  "cardSerialNumber": "",
  "printData": {
    "printText": "",
    "printFile": "",
    "printPicture": ""
  }
}

Remove Pincode Response


{
  "roomId": "101",
  "responseCode": "OK",
  "encoderTerminal": "TERM1",
  "roomKeyType": "PinCode",
  "keyUserType": "Guest",
  "keyValidityStart": "2024-02-26T11:16:16.000Z",
  "keyValidityEnd": "2024-02-27T12:00:00.000Z",
  "keyCreationTime": "2024-02-26T11:16:16.138Z",
  "noOfKeys": "1",
  "encoderId": "1",
  "reservationIdList": [
    {
      "id": "{{ReservationId}}",
      "type": "Reservation"
    },
    {
      "id": "2468024",
      "type": "Confirmation"
    }
  ],
  "responseText": "Pincode successfully deleted/removed",
  "keyTrack": {
    "keyTrack3": "642086"
  },
  "keyOptions": [
    {
      "keyOptionsCode": "SAU",
      "keyOptionDescription": "Sauna",
      "isEnabled": "true",
      "default": "false"
    },
    {
      "keyOptionsCode": "GAR",
      "keyOptionDescription": "Garage",
      "isEnabled": "true",
      "default": "false"
    },
    {
      "keyOptionsCode": "MAIN",
      "keyOptionDescription": "MainEntrance",
      "isEnabled": "true",
      "default": "true"
    }
  ],
  "userId": "PMSUser1"
}