Since version BrandMeister 20190421-185653 has built-in web server.

Embedded web server provides several services such as:

  • status - represent some method of Status API
  • service - implements several methods to send SMS and telemetry or make a call with AMBE file
  • health - monitoring of embedded components compatible with Consul Health API

Detection of entry point

system.php and remote.php at Status API provide a data of entry point for HTTP API. Please check "remote" object. Port parameter corresponds to TCP port and ‘'Secure'’ indicates using of HTTPS (or HTTP).

Status API

  • /status/system.json
  • /status/status.json
  • /status/list.json
  • /status/terminal.json
  • /status/status.msgpack
  • /status/list.msgpack
  • /status/terminal.msgpack

.json methods implement fully the same structure of data as .php version. .msgpack methods have MeasagePack-encoded data in the same order as .json version. Please check info about General Status API (.php) at Status API. This API supports zlib compression requested by Accept-Encoding: deflate.

Service API

This service API requires to use HTTP Digest Authentication, where username is an registered application ID. All requests should be sent as HTTP POST method having type application/x-www-form-urlencoded or application/form-data In case of success server returns HTTP code 200 or 500 in case of failure.

/service/call - play voice call

source - ID to be used as a source
destination - ID of destination station or group
type - private or announce (for a group call)
data - attached file in plain format of AMBE mode 33 (.ambe) or DSD (.amb)

/service/message - send text message

source - ID to be used as a source
destination - ID of destination station or group
type - private or announce (for group message)
text - message text in UTF-8
interval - long-poll timeout in milliseconds (optional)

Long-polling mode responds to get a status of message delivery (check section Long-polling):

  • { "status": 8 } - Success
  • { "status": 64 } and greater - some kind of delivery error

/service/telemetry - set state

source - ID to be used as a source
destination - ID of destination station or group
output1 ... output8 - command for each output (same as MQTT API): 0 = None, 20 = Clear, 21 = Set, 22 = Toggle, 23 = Pulse

/service/telemetry - query state

source - ID to be used as a source
destination - ID of destination station or group
interval - long-poll timeout in milliseconds

/service/presence - query state

source - ID to be used as a source
destination - ID of destination station or group
interval - long-poll timeout in milliseconds

/service/location - query location

source - ID to be used as a source
destination - ID of destination station or group
interval - long-poll timeout in milliseconds

Long-polling

In case of long-polling mode, the API will always answer with HTTP code 200, and then slowly transmit response:

  • Keep-alive chunks - space character
  • Final message (JSON):
    • { "result": "success" }
    • { "result": "failure" }
    • { "status": xxx } - in case of simple numeric answer, such as SMS delivery report
    • { xxx } - in case of complex content

Health API

Objects list is available via system.php and D-BUS API.

/health/<object> or /health/<object>?action=check

Health check compatible with Consul:

  • Code 200 - OK
  • Code 429 - Temporary unavailable (too many connections, overflow, not active, etc.)
  • Code 404 - Not available

/health/<object>?action=measure

Detailed metric information in JSON format

Example

  • /health/APRSGate?action=measure
  • /health/PushStick?action=measure
  • /health/SpiderStore?action=measure