Anonymousprnt::Y
Click on images to see them in full screen

IBS/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 prod 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. So, your server…

  1. May be anywhere – on premise, on the cloud, hosted by you or others
  2. Run on any computer with any OS
  3. May run any other application

Using the IBS Simulator
The calls below 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 we expect to post thus providing us feedback that the calls the IBC is making to the IBS are acuate.

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 ISO 8601 format ("2015-05-23T18:25:43.511Z"). Date arguments, if any, 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

Complete example:
In this example we are asking for user information using "get":
https://www.door-tablet.com/ibssiml/action=get&passcode=MYSERVERCODE&id=eedd9bbd&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:
idNFC ID (or manual ID if enabled)
locthe location of the meeting space as defined in Door Tablet, for example: New+York
roomthe room name as defined in Door Tablet, for example: Central+Park
addressthe address of the room, if exists, for systems such as Exchange/Office 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:
nameThe name of the user. Required.
phonePhone number. Optional.
emailEmail address. Required.
nfcdisabletrue/false; Was NFC disabled after approval. Optional. If omitted assume false
nfcauthorisedtrue/false; NFC Authorised for use. Optional. If omitted assume true
noteNote to the user relating to this action. Optional. For example: you are not authorise to reserve this room
availminutesMinutes available for reservations. Optional. If you omit this field or the value is -1 no restrictions will apply
oktrue/false (true if no errors)
messagemessage 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
}


live - prods your server to see that it is responding
Action:
live
Variables:
-none-
Example:
https://www.door-tablet.com/ibssiml/action=live&passcode=MYSERVERCODE
Returns:
Returns JSON:
oktrue/false (true if no errors)
messagemessage relating to the call status. Optional if ok=true
Example Response from your server:

{
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:
idNFC ID (or manual ID if enabled)
locthe location of the room as defined in Door Tablet, for example: New+York
roomthe room name as defined in Door Tablet, for example: Central+Park
addressthe address of the room, if exists, for systems such as Exchange/Office 365 or Google G Suite, the room address: centralpark.newyork@office365.com
minutesduration in minutes the room was reserved for
meetingidmeeting 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:
oktrue/false (true if no errors)
messagemessage 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:
namename of the reserver if known
emailemail of the reserver if known (one must be known)
locthe location of the room as defined in Door Tablet, for example: New+York
roomthe room name as defined in Door Tablet, for example: Central+Park
addressthe address of the room, if exists, for systems such as Exchange/Office 365 or Google G Suite, the room address: centralpark.newyork@office365.com
gracenumber 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:
oktrue/false (true if no errors)
messagemessage 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"
}


quotaupdate - tells your server to adjust quota for the user, if required. The value may be positive, if a meeting is extended, or negative if terminated. Please note that if consumption is positive a "get" takes place first and only if there is enough credit, or minutes, the process continues, otherwise a message returned to the user. The booking system is updated first
Action:
quotaupdate
Variables:
idNFC ID (or manual ID if enabled)
minutesduration in minutes to update, positive or negative
Example:
https://www.door-tablet.com/ibssiml/action=quotaupdate&passcode=MYSERVERCODE&minutes=120&id=456dfgh65df
OR
https://www.door-tablet.com/ibssiml/action=quotaupdate&passcode=MYSERVERCODE&minutes=-45&id=456dfgh65df
Returns:
Returns JSON:
oktrue/false (true if no errors)
messagemessage relating to the call status. Optional if ok=true
Example Response from your server:

{
ver: "1.0, 30 May 2017",
message: "Quota updated",
ok: true,
time: "30/05/2017 21:18:46 GDT"
}