REST APIs

Monitor Node (imwww)

The following describe the API used by the monitor to process incoming requests.

Resource Name HTTP Verbs HTTP Methods Returns Direction Description
Pair CREATE Pair POST /pair/iot/<uuid> ACK From IoT Node Register an IoT node w/Monitor using UUID
Pair UPDATE Pair POST /ping ACK From IoT Node IoT device is verifying its stored pairing information
Pair CREATE Pair POST /pair/jarvis/<uuid> ACK From Jarvis Pair a Jarvis node with Monitor
Monitor GET Monitor ID GET /monitor Monitor ID From Jarvis Monitor Identity information
Device GET Devices POST /devices Device list From Jarvis Get list of device IDs and descriptors
Device UPDATE Device POST /set/device Device state From Jarvis Change device state with JSON
Monitor GET Query Devices GET /query/devices Updates states From monitor Causes monitor to update its device state information; only valid if received from localhost
Notes
  • Monitor identity includes location and possibly other descriptors that uniquely identify the monitor
  • POST is required for GET requests because the sender must identify themselves with a valid encryption key, which is sent in a JSON body that GET does not allow. This is because we are not using HTTPS but rather encrypting the requests and responses inside a JSON packet stored in the body of messages.

IoT Node (embedded in Arduino device code)

The following describe the API used by a sensor to process incoming requests.

Resource Name HTTP Verbs HTTP Methods Returns Direction Description
Device UPDATE Device POST /set Device config From Monitor Change device state with JSON
Device POST Query POST /query Device config From Monitor Get Device state as JSON
Device GET Register GET /register/<uuid> ACK From Monitor Provides UUID from monitor