architecture.md - adityasivaraj/mongoose-os-docs GitHub Wiki
Technical overview
A configured device connects to the dashboard over the secure Websocket,
sending a Authorization: Bearer GENERATED_TOKEN
handshake header.
After the successful handshake, all communication is done via the
JSON-RPC 2.0 protocol. Each RPC frame wrapped into the Websocket frame.
The RESTful API endpoints that the dashboard exports start with
/api/v2/
. The endpoints that for the individual device start with
/api/v2/devices/:id
, where :id
is the unique device ID, generated at
the device registration together with the access token.
The dashboard gives a RESTful access to all RPC services exported by the device.
Thus, the dashboard acts as a JSON-RPC / RESTful bridge. The device's
RPC methods are mapped to /api/v2/devices/:id/rpc/:method
endpoints.
If the RPC endpoint does not accept any parameters, you cat use GET
HTTP
method. If it does, POST
must be used. The parameters should be a JSON
string, and the Content-Type: application/json
header must be set, e.g.:
curl \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer API_KEY' \
-d '{"pin": 2}' \
http://dash.mongoose-os.com/api/v2/devices/DEVICE_ID/rpc/GPIO.Toggle
When a device comes online, the dash
library that is responsible for the
dashboard connection, sends a shadow update message with the information
about the device: architecture, firmware version, etc:
![](# Technical overview
A configured device connects to the dashboard over the secure Websocket,
sending a Authorization: Bearer GENERATED_TOKEN
handshake header.
After the successful handshake, all communication is done via the
JSON-RPC 2.0 protocol. Each RPC frame wrapped into the Websocket frame.
The RESTful API endpoints that the dashboard exports start with
/api/v2/
. The endpoints that for the individual device start with
/api/v2/devices/:id
, where :id
is the unique device ID, generated at
the device registration together with the access token.
The dashboard gives a RESTful access to all RPC services exported by the device.
Thus, the dashboard acts as a JSON-RPC / RESTful bridge. The device's
RPC methods are mapped to /api/v2/devices/:id/rpc/:method
endpoints.
If the RPC endpoint does not accept any parameters, you cat use GET
HTTP
method. If it does, POST
must be used. The parameters should be a JSON
string, and the Content-Type: application/json
header must be set, e.g.:
curl \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer API_KEY' \
-d '{"pin": 2}' \
http://dash.mongoose-os.com/api/v2/devices/DEVICE_ID/rpc/GPIO.Toggle
When a device comes online, the dash
library that is responsible for the
dashboard connection, sends a shadow update message with the information
about the device: architecture, firmware version, etc: