(Long-polling)
 
Line 2: Line 2:
  
 
Embedded web server provides several services such as:
 
Embedded web server provides several services such as:
* '''status''' - represent some method of [[Status API]]
+
* '''status''' - represent some method of [[Status API|API/Status]]
 
* '''service''' - implements several methods to send SMS and telemetry or make a call with AMBE file
 
* '''service''' - implements several methods to send SMS and telemetry or make a call with AMBE file
 
* '''health''' - monitoring of embedded components compatible with [https://www.consul.io/api/health.html Consul Health API]
 
* '''health''' - monitoring of embedded components compatible with [https://www.consul.io/api/health.html Consul Health API]

Revision as of 21:30, 15 April 2021

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

Embedded web server provides several services such as:

  • status - represent some method of API/Status
  • 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 provides a data of entry point of HTTP interface. Please check "remote" object, returned by system.php. 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 API/Status. 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

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

/service/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:
    • Success
    • Failure
    • Status: xxx - in case of simple numeric answer, such as SMS delivery report
    • Data: { 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

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

Embedded web server provides several services such as:

Detection of entry point[edit]

system.php provides a data of entry point of HTTP interface. Please check "remote" object, returned by system.php. Port parameter corresponds to TCP port and ‘'Secure'’ indicates using of HTTPS (or HTTP).

Status API[edit]

.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 API/Status. This API supports zlib compression requested by Accept-Encoding: deflate.

Service API[edit]

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[edit]

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

/service/message[edit]

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):

/service/telemetry - set state[edit]

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[edit]

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[edit]

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[edit]

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

Long-polling[edit]

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

Health API[edit]

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

/health/<object> or /health/<object>?action=check[edit]

Health check compatible with Consul:

/health/<object>?action=measure[edit]

Detailed metric information in JSON format

Example[edit]