- All routes, with the exception of
/pin-config
require an API key be passed in the headerSYSTEM-API-KEY
- All routes, with the exception of
/pin-config
,/register
,/authenticate
require an auth token be passed in theAuthorization
header. The header value should be formattedBearer <token>
. A token can be obtained using the/register
or/authenticate
routes. - The
/pin-config
route requires special authentication using three headers.io-user-email
is the email address of a registered user.io-device-id
is the ID of a registered device and must also belong to the email inio-user-email
.io-user-key
is a secret key generated for a user on the/user/key
route.
POST: /register
Body:
{
"email": "[email protected]",
"password": "$ecR3tP@ssw0rd"
}
Response:
{
"token": "somesuperlongauthtokenstring"
}
Status Codes:
201
if successful400
if incorrect data provided409
if email already in use
POST: /authenticate
Body:
{
"email": "[email protected]",
"password": "$ecR3tP@ssw0rd"
}
Response:
{
"token": "somesuperlongauthtokenstring"
}
Status Codes:
200
if successful400
if incorrect data provided401
if incorrect credentials provided
GET: /user
Response:
{
"email": "[email protected]",
"subscription": {
"level": 1,
"end": "2015-03-13T03:07:26.204Z"
}
}
Status Codes:
200
if successful401
if not authenticated403
ifSYSTEM-API-KEY
is missing
DELETE: /user
Response: None
Status Codes:
204
if successful401
if not authenticated403
ifSYSTEM-API-KEY
is missing
POST: /user/key
Body: None
Response:
{
"key": "some-secret-user-key"
}
Status Codes:
201
if successful401
if not authenticated403
ifSYSTEM-API-KEY
is missing
POST: /user/device
Body: None
Response:
{
"_id": "device_id",
"userEmail": "[email protected]",
"pinConfig": []
}
Status Codes:
201
if successful401
if not authenticated403
ifSYSTEM-API-KEY
is missing or subscription is expired
GET: /user/device
Response:
[
{
"_id": "device_id",
"userEmail": "[email protected]",
"pinConfig": []
}
]
Status Codes:
200
if successful401
if not authenticated403
ifSYSTEM-API-KEY
is missing
GET: /user/device/:deviceId
Response:
{
"_id": "device_id",
"userEmail": "[email protected]",
"pinConfig": []
}
Status Codes:
200
if successful401
if not authenticated403
ifSYSTEM-API-KEY
is missing404
if deviceId does not exist
DELETE: /user/device/:deviceId
Response: None
Status Codes:
204
if successful401
if not authenticated403
ifSYSTEM-API-KEY
is missing404
if deviceId does not exist
POST: /user/device/:deviceId/pin
Body:
{
"pin": 18,
"name": "Red LED",
"mode": "OUT"
}
Response:
{
"pin": 18,
"name": "Red LED",
"mode": "OUT",
"initial": "LOW"
}
Required Body Properties:
pin
- Pin number (integer)name
- Custom text label for the pinmode
-IN
orOUT
Optional Body Properties:
resistor
-PUD_UP
orPUD_DOWN
initial
-HIGH
orLOW
pinEvent
-RISING
,FALLING
,BOTH
bounce
- Number of milliseconds (integer)
Status Codes:
201
if successful400
if invalid data401
if not authenticated403
ifSYSTEM-API-KEY
is missing or subscription is expired
GET: /user/device/:deviceId/pin
Response:
[
{
"pin": 18,
"name": "Red LED",
"mode": "OUT",
"initial": "LOW"
}
]
Status Codes:
200
if successful401
if not authenticated403
ifSYSTEM-API-KEY
is missing404
if deviceId does not exist
GET: /user/device/:deviceId/pin/:pinId
Response:
{
"pin": 18,
"name": "Red LED",
"mode": "OUT",
"initial": "LOW"
}
Status Codes:
200
if successful401
if not authenticated403
ifSYSTEM-API-KEY
is missing404
if deviceId or pinId does not exist
DELETE: /user/device/:deviceId/pin/:pinId
Response: None
Status Codes:
204
if successful401
if not authenticated403
ifSYSTEM-API-KEY
is missing404
if deviceId or pinId does not exist