Click on images to see them in full screen
E8C9C2D8B6AF63A70025812F006EA67EIBS/IBC Definitions
Note: This feature is part of the Door Tablet Enterprise server.
Configure Door Tablet to consume IBS
If the target system responds exactly as defined by this document, no further work will be required when deploying Door Tablet.
Test your connectivity
Once you have finished your implementation of the IBS you are ready to test it. Door Tablet will be asked to produce each of the listed actions below.
Technologies
Communication with your system is over HTTP/S. Requests are made using HTTP GET and responses are in JSON. Each call to the target system, the IBS, is made by the Door Tablet server that acts as a proxy for all the Door Tablet client applications, but for your system it is a client, the IBC. The Door Tablet client applications are not aware of your scheduling system and any server extensions, of which this is one.
About your Server
As Door Tablet communicates with your server over HTTP/S, it is important to clarify some points, as listed below. For the IT professionals that will be a given, but we think it is worth mentioning. Your server:
- May be anywhere – on premise, on the cloud, hosted by you or others
- Run on any computer with any OS
- May run any other application
Using the IBS Simulator
The calls below will hit our IBS Simulator. We use it to develop and test the IBC, the consumer. When using the simulator you will note that some JSON properties are returned while not listed here as "required". The returned values are echoes of parameters which we expect to post thus providing us feedback that the calls the IBC is making are accurate.
HTTP Calls
This interface refers to parameters, both when posting and receiving responses. In all cases parameters are written in lower case. Time arguments, if any, are in the
ISO 8601 format ("2015-05-23T18:25:43.511Z"). Date arguments, are in the truncated version of time ("2015-05-23"). All returned variables are strings unless explicitly defined otherwise. For example "minutes" is an Integer while "ok" is a Boolean.
Each call made to the target server is made out of two parts:
The fix part: |
Base HTTP: protocol, host, port, root |
| Example: https://myserver.com:81/ |
Variables: | |
| passcode |
Example: | |
| &passcode=MYSERVERCODE |
The variable part: |
| action: the name of the action you wish to perform |
Example: |
| &action=get |
Other variables: |
| the list of parameters depends on the action you wish to perform |
Example: | |
| &loc=london&room=blue&address=blue@myuni.com |
Responses from your server
Responses to calls made to the target system, the IBS, are expected to be in JSON, if the server returned HTTP 200 of course. Each action will elicit a different response from the target system. The response can be either a good one or a bad one. A bad response will be when the target system is not happy to communicate with the source system (Door Tablet). For example, if the credentials provided by the source system are not acceptable by the target, a bad response will be generated:
{
ok: false,
message: "Access Denied – please contact the administrator",
ver: "1.3a",
time: "2015-05-23T18:25:43.511Z"
}
As you can see the response is in JSON format. For readability, we are not showing the quotes surrounding parameter names, for example "version".
Each response has three fixed parameters: ok, version and time. The ok parameter is a Boolean with two values, true or false. If the value returned for ok is false, Door Tablet will consider it an error response and will refer to the message. The version is, well, the version. The time parameter should be the time the JSON was generated in ISO 8601 format or Epoch format.
Calls to your server and Responses from your server
Door Tablet makes specific calls to the target system.
get - get information about a user in relation to the current meeting space |
Action: | |
| get |
Variables: | |
|
id | NFC ID (or manual ID if enabled) |
loc | the location of the meeting space as defined in Door Tablet, for example: New+York |
room | the room name as defined in Door Tablet, for example: Central+Park |
address | the address of the room, if exists, for systems such as Exchange/Microsoft 365 or Google G Suite, the room address: centralpark.newyork@office365.com |
|
Example: | |
| https://www.door-tablet.com/ibssiml/action=get&passcode=MYSERVERCODE&id=eedd9bbd&loc=london&room=blue&address=blue@myuni.com |
Returns: | |
| Returns JSON:
name | The name of the user. Required. |
phone | Phone number. Optional. |
email | Email address. Required. |
nfcdisable | true/false; Was NFC disabled after approval. Optional. If omitted assume false |
nfcauthorised | true/false; NFC Authorised for use. Optional. If omitted assume true |
note | Note to the user relating to this action. Optional. For example: you are not authorise to reserve this room |
availminutes | Minutes available for reservations. Optional. If you omit this field or the value is -1 no restrictions will apply |
ok | true/false (true if no errors) |
message | message relating to the call status, for example if the user is not found the message could say: User not found. Optional if ok=true |
|
Example Response from your server: |
{
ver: "1.0, 30 May 2017",
message: "Got user information",
name: "Gabriel Joans",
time: "30/05/2017 21:09:01 GDT",
phone: "+31278977623",
availminutes: 20,
note: "You have 20 minutes for reservations",
id: "eedd9bbd",
email: "gabriel@door-tablet.com",
ok: true,
nfcdisable: false,
nfcauthorised: true
}
{
ver: "1.0, 30 May 2017",
message: "I am alive",
ok: true,
time: "30/05/2017 21:18:46 GDT"
}
reserved - post a record of a reservation made by a user with a given ID, for the current room with length in minutes. The booking system is reserved first, and a meeting id is obtained. Your system should deduct usage quota if required for that user. "Get" is always called before "reserved" |
Action: | |
| reserved |
Variables: | |
|
id | NFC ID (or manual ID if enabled) |
loc | the location of the room as defined in Door Tablet, for example: New+York |
room | the room name as defined in Door Tablet, for example: Central+Park |
address | the address of the room, if exists, for systems such as Exchange/Microsoft 365 or Google G Suite, the room address: centralpark.newyork@office365.com |
minutes | duration in minutes the room was reserved for |
meetingid | meeting id which was returned by the reservation system |
|
Example: | |
| https://www.door-tablet.com/ibssiml/action=reserved&passcode=MYSERVERCODE&id=eedd9bbd&loc=london&room=blue&address=blue@myuni.com&minutes=120&meetingid=sdfg854nbdsdf8546345ndfb3546y |
Returns: | |
| Returns JSON:
ok | true/false (true if no errors) |
message | message relating to the call status. Optional if ok=true |
|
Example Response from your server: |
{
ver: "1.0, 30 May 2017",
message: "Reservation recorded",
ok: true,
time: "30/05/2017 21:18:46 GDT"
}
noshow - tells your server that the reservation was declared "no-show" for the reserving user. The booking system is updated first. |
Action: | |
| noshow |
Variables: | |
|
name | name of the reserver if known |
email | email of the reserver if known (one must be known) |
loc | the location of the room as defined in Door Tablet, for example: New+York |
room | the room name as defined in Door Tablet, for example: Central+Park |
address | the address of the room, if exists, for systems such as Exchange/Microsoft 365 or Google G Suite, the room address: centralpark.newyork@office365.com |
grace | number of minutes from the beginning of the reservation (the grace period) |
minutes
meetingid | duration in minutes the room was reserved for
meeting id which was returned by the reservation system |
|
Example: | |
| https://www.door-tablet.com/ibssiml/action=noshow&passcode=MYSERVERCODE&loc=london&room=blue&address=blue@myuni.com&name=My+name&email=sales@door-tablet.com&minutes=45&grace=10 |
Returns: | |
| Returns JSON:
ok | true/false (true if no errors) |
message | message relating to the call status. Optional if ok=true |
|
Example Response from your server: |
{
ver: "1.0, 30 May 2017",
message: "No-show recorded",
ok: true,
time: "30/05/2017 21:18:46 GDT"
}
{
ver: "1.0, 30 May 2017",
message: "Quota updated",
ok: true,
time: "30/05/2017 21:18:46 GDT"
}