http-api

:::info This is a mini-spec on a HTTP API which can be used by browser based clients to interact with Meshtastic devices. :::

Why protobufs

Request headers

Response headers

Endpoints

Two endpoints are specified:

/api/v1/toradio

Allows PUT and OPTION requests.

PUT

A PUT request to this endpoint will be expected to contain a series of ToRadio protobuf payloads.

The protobufs will be sent in binary as the body for the request.

Only one ToRadio message per request is supported.

OPTIONS

An OPTIONSrequest to this endpoint will return a response status code 204 and headers only.

/api/v1/fromradio

Allows GET requests.

GET

A GET request from this endpoint will return a series of FromRadio protobufs.

The protobufs will be sent in binary as the body for the request.

Parameters

/api/v1/fromradio?all
/api/v1/fromradio?chunked

Authentication

There isn't any user authentication. We assume access to the HTTP server is enough to establish trust.

Client

JavaScript

See: https://github.com/meshtastic/meshtastic.js

A reference client written in JavaScript will provide a JavaScript API for using this transport. That client will do HTTP connections, use the generated protobuf JavaScript code and provide an API that hides all of this REST plumbing. The two key methods will be sendToRadio(packet) and onFromRadio(callback).

Protoman

See: https://github.com/spluxx/Protoman

Protoman is able to interface with the Meshtastic REST API out of the box. This is useful for manual testing of the endpoints.

Security

HTTP and HTTPS are both supported on the ESP32 using self signed certificates on HTTPS.