2026-02-01 14:25:21 -05:00
|
|
|
# JS8Call API Documentation v2.6.0
|
2026-01-21 08:19:42 -05:00
|
|
|
|
2026-02-01 14:25:21 -05:00
|
|
|
This document provides documention of the API to control JS8Call.
|
2026-01-21 08:19:42 -05:00
|
|
|
|
|
|
|
|
# Methods
|
|
|
|
|
The API is normally located on localhost port 2242, but can be changed at ``Settings -> Reporting Tab -> API``
|
|
|
|
|
If you have access to ``telnet`` you can connect to the API with
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
telnet 127.0.0.1 2242
|
|
|
|
|
```
|
|
|
|
|
If you do nothing, the API will print information as it has it available, or you can submit one of the ``End Points`` below.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# API Format
|
|
|
|
|
All API calls are via JSON. JS8Call spits out a JSON packet of the form (for a heartbeat in this case):
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
{"params":{"PTT":true,"UTC":1768760160665,"_ID":-1},"type":"RIG.PTT","value":"on"}
|
|
|
|
|
{"params":{"TONES":[4,2,5,6,1,3,0,7,1,5,7,6,0,2,2,3,7,4,2,7,6,4,5,1,7,1,7,3,6,6,4,1,0,4,1,7,4,2,5,6,1,3,0,0,2,4,2,1,1,4,1,6,3,4,4,4,6,2,0,7,0,5,6,2,3,1,0,3,7,4,6,4,4,2,5,6,1,3,0],"_ID":-1},"type":"TX.FRAME","value":""}
|
|
|
|
|
{"params":{"TONES":[4,2,5,6,1,3,0,7,1,5,7,6,0,2,2,3,7,4,2,7,6,4,5,1,7,1,7,3,6,6,4,1,0,4,1,7,4,2,5,6,1,3,0,0,2,4,2,1,1,4,1,6,3,4,4,4,6,2,0,7,0,5,6,2,3,1,0,3,7,4,6,4,4,2,5,6,1,3,0],"_ID":-1},"type":"TX.FRAME","value":""}
|
|
|
|
|
{"params":{"PTT":false,"UTC":1768760173403,"_ID":-1},"type":"RIG.PTT","value":"off"}
|
|
|
|
|
```
|
|
|
|
|
The steps above are
|
|
|
|
|
1) PTT on
|
|
|
|
|
2) Send HB MSG as TONES (2 transmission frames)
|
|
|
|
|
3) PTT off
|
|
|
|
|
|
|
|
|
|
``{"params":xxx}`` is **required** in both directions and forms the overall packet
|
|
|
|
|
|
|
|
|
|
|
2026-01-29 17:38:59 -05:00
|
|
|
| Commands | Version |
|
|
|
|
|
|------------------------------------------|---------|
|
2026-01-24 13:17:25 -05:00
|
|
|
| [PING ](#ping) | 2.5 |
|
|
|
|
|
| [RIG.GET_FREQ](#rigget_freq) | 2.5 |
|
|
|
|
|
| [RIG.SET_FREQ](#rigset_freq) | 2.5 |
|
2026-01-29 13:35:25 -05:00
|
|
|
| [RIG.GET_PTT](#rigget_ptt) | 2.6 |
|
2026-01-29 17:38:59 -05:00
|
|
|
| [RIG.SET_TUNE](#rigset_tune) | 2.6 |
|
|
|
|
|
| [RIG.TX_HALT](#rigtx_halt) | 2.6 |
|
2026-01-24 13:17:25 -05:00
|
|
|
| [STATION.GET_CALLSIGN](#stationget_callsign) | 2.5 |
|
|
|
|
|
| [STATION.GET_GRID](#stationget_grid) | 2.5 |
|
|
|
|
|
| [STATION.SET_GRID](#stationset_grid) | 2.5 |
|
|
|
|
|
| [STATION.GET_INFO](#stationget_info) | 2.5 |
|
|
|
|
|
| [STATION.SET_INFO](#stationset_info) | 2.5 |
|
|
|
|
|
| [STATION.GET_STATUS](#stationget_status) | 2.5 |
|
|
|
|
|
| [STATION.SET_STATUS](#stationset_status) | 2.5 |
|
|
|
|
|
| [STATION.VERSION](#stationversion) | 2.6 |
|
|
|
|
|
| [STATION.GET_OS](#stationget_os) | 2.6 |
|
|
|
|
|
| [STATION.SET_STATUS](#stationset_status) | 2.5 |
|
|
|
|
|
| [STATION.GET_SPOT](#stationget_spot) | 2.6 |
|
|
|
|
|
| [STATION.SET_SPOT](#stationset_spot) | 2.6 |
|
|
|
|
|
| [RX.GET_CALL_ACTIVITY](#rxget_call_activity) | 2.5 |
|
|
|
|
|
| [RX.GET_CALL_SELECTED](#rxget_call_selected) | 2.5 |
|
|
|
|
|
| [RX.GET_BAND_ACTIVITY](#rxget_band_activity) | 2.5 |
|
|
|
|
|
| [RX.GET_TEXT](#rxget_text) | 2.5 |
|
RX.GET_FREE_OFFSETS API addition (#213)
* RX.GET_FREE_OFFSETS API addition
- Reads optional `SPEED`, `LOW`, `HIGH` params (defaults: current mode, 500 Hz, 2500 Hz)
- For each active offset in `m_bandActivity` (within 30 seconds), computes the blocked zone as `occ ± (requestedBW/2 + signalBW/2)` — accounting for both the occupying signal's actual bandwidth and your intended TX bandwidth
- Sorts and merges overlapping blocked zones, then returns the gaps as `FREE` segments
- Omits gaps narrower than your TX bandwidth (they can't fit anyway)
- Example response: {"params":{"FREE":[{"HIGH":860,"LOW":500,"WIDTH":360},{"HIGH":2500,"LOW":1120,"WIDTH":1380}],"BANDWIDTH":160,"HIGH":2500,"LOW":500,"SPEED":2,"_ID":...},"type":"RX.FREE_OFFSETS","value":""}
2026-03-10 12:44:02 -04:00
|
|
|
| [RX.GET_FREE_OFFSETS](#rxget_free_offsets) | 2.6 |
|
2026-01-24 13:17:25 -05:00
|
|
|
| [TX.GET_TEXT](#txget_text) | 2.5 |
|
|
|
|
|
| [TX.SET_TEXT](#txset_text) | 2.5 |
|
|
|
|
|
| [TX.SEND_MESSAGE](#txsend_message) | 2.5 |
|
2026-01-29 21:40:37 -05:00
|
|
|
| [TX.GET_QUEUE_DEPTH](#txget_queue_depth) | 2.6 |
|
2026-01-24 13:17:25 -05:00
|
|
|
| [MODE.GET_SPEED](#modeget_speed) | 2.5 |
|
|
|
|
|
| [MODE.SET_SPEED](#modeset_speed) | 2.5 |
|
|
|
|
|
| [INBOX.GET_MESSAGES](#inboxget_messages) | 2.5 |
|
|
|
|
|
| [INBOX.STORE_MESSAGE](#inboxstore_message) | 2.5 |
|
|
|
|
|
| [WINDOW.RAISE](#windowraise) | 2.5 |
|
2026-01-21 08:19:42 -05:00
|
|
|
|
|
|
|
|
## _ID Number
|
|
|
|
|
The ID number is the epoch time of 1499299200000 (July 6, 2017) plus current epoch time.
|
|
|
|
|
|
|
|
|
|
## Error messages
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"_ID":"269558031750"},"type":"API.ERROR","value":"unterminated object: json parsing error"}|
|
2026-01-21 11:05:48 -05:00
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
``value`` contains the error
|
|
|
|
|
|
|
|
|
|
|
2026-02-01 13:16:28 -05:00
|
|
|
# STATION Message
|
|
|
|
|
[!note] API >= 2.6
|
|
|
|
|
|
|
|
|
|
The following message is generated by JS8Call when it is closing down.
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"REASON":"User closed application","_ID":-1},"type":"STATION.CLOSING","value":""}|
|
|
|
|
|
|
|
|
|
|
# RX Messages
|
|
|
|
|
The following messages are generated by JS8Call and emitted out from the API as they come in.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## RX.ACTIVITY
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"DIAL":7078000,"FREQ":7080420,"OFFSET":2420,"SNR":-22,"SPEED":1,"TDRIFT":0.26499998569488525,"UTC":1769740328005,"_ID":-1},"type":"RX.ACTIVITY","value":"HC5PH: "}|
|
|
|
|
|
|{"params":{"CMD":" MSG","DIAL":7078000,"EXTRA":"","FREQ":7080420,"FROM":"HC5PH","GRID":" FI06","OFFSET":2420,"SNR":-24,"SPEED":1,"TDRIFT":0.23999999463558197,"TEXT":"F!104 2EE ST[EC] GR[FI06JS] #AUVO","TO":"@SITREP","UTC":1769740328005,"_ID":-1},"type":"RX.DIRECTED","value":"HC5PH: @SITREP MSG F!104 2EE ST[EC] GR[FI06JS] #AUVO ♢ "}|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## RX.DIRECTED
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"CMD":" HEARTBEAT","DIAL":7078000,"EXTRA":"","FREQ":7078816,"FROM":"KE2DMC","GRID":"FN32","OFFSET":816,"SNR":1,"SPEED":0,"TDRIFT":0.5399999618530273,"TEXT":"","TO":"@HB","UTC":1769740226361,"_ID":-1},"type":"RX.DIRECTED","value":"KE2DMC: @HB HEARTBEAT ♢ "}|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## RX.SPOT
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"CALL":"KF7MIX","DIAL":7078000,"FREQ":7078870,"GRID":"EM48","OFFSET":870,"SNR":-5,"_ID":-1},"type":"RX.SPOT","value":""}|
|
|
|
|
|
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
# PING
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Wakes up the API if need be.
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"PING","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
| None |
|
|
|
|
|
|
|
|
|
|
# RIG.GET_FREQ
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Gets radio dial and offset frequencies
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"RIG.GET_FREQ","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"DIAL":7078000,"FREQ":7079950,"OFFSET":1950,"_ID":269554125481},"type":"RIG.FREQ","value":""}|
|
|
|
|
|
``FREQ`` is the ``DIAL`` frequency plus ``OFFSET``
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# RIG.SET_FREQ
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Sets radio dial and offset frequencies
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{"DIAL":dial,"OFFSET":offset},"type":"RIG.SET_FREQ","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| dial | Frequency in Hz |
|
|
|
|
|
| offset | Offset in Hz |
|
2026-01-21 11:05:48 -05:00
|
|
|
| value | empty string |
|
2026-01-21 08:19:42 -05:00
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
| {"params":{"DIAL":7078000,"FREQ":7079950,"OFFSET":1950,"SELECTED":"","SPEED":0,"_ID":"269554221645"},"type":"STATION.STATUS","value":""} |
|
2026-01-21 11:05:48 -05:00
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
``FREQ`` is the ``DIAL`` frequency plus ``OFFSET``
|
|
|
|
|
``SPEED`` is one of the ``MODE`` speeds
|
|
|
|
|
|
|
|
|
|
|
2026-01-29 13:35:25 -05:00
|
|
|
# RIG.GET_PTT
|
2026-01-29 17:38:59 -05:00
|
|
|
[!note] API >= 2.6
|
|
|
|
|
|
2026-01-29 13:35:25 -05:00
|
|
|
Gets rig PTT status
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"RIG.GET_PTT","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"MESSAGE":"","PTT":false,"_ID":269908447335},"type":"RIG.PTT_STATUS","value":""}|
|
|
|
|
|
|{"params":{"MESSAGE":"SLbuEVAt7YC0","PTT":true,"_ID":269908640060},"type":"RIG.PTT_STATUS","value":""}|
|
|
|
|
|
|
|
|
|
|
`MESSAGE` will be empty string or a message if more is being transmitted.
|
|
|
|
|
|
|
|
|
|
`PTT` will be true if transmitting.
|
|
|
|
|
|
|
|
|
|
|
2026-01-29 17:38:59 -05:00
|
|
|
# RIG.SET_TUNE
|
|
|
|
|
[!note] API >= 2.6
|
|
|
|
|
|
|
|
|
|
Sets TUNE setting on or off
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"RIG.SET_TUNE","value":"false"}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | true/false |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"_ID":270422213693,"value":true},"type":"RIG.SET_TUNE","value":""}|
|
|
|
|
|
|{"params":{"PTT":true,"UTC":1769721024401,"_ID":-1},"type":"RIG.PTT","value":"on"}|
|
|
|
|
|
| |
|
|
|
|
|
|{"params":{"_ID":270421833952,"value":false},"type":"RIG.SET_TUNE","value":""}|
|
|
|
|
|
|{"params":{"PTT":false,"UTC":1769721034501,"_ID":-1},"type":"RIG.PTT","value":"off"}|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
NOTE: Both the SET_TUNE *and* PTT response messages are triggered. As there is a built-in max time on the tuning, no GET call exists.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# RIG.TX_HALT
|
|
|
|
|
[!note] API >= 2.6
|
|
|
|
|
|
|
|
|
|
Halts the transmitter immediately
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"RIG.TX_HALT","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"_ID":270426906894,"value":true},"type":"RIG.TX_HALT","value":""}|
|
|
|
|
|
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
# STATION.GET_CALLSIGN
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Gets station callsign
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"STATION.GET_CALLSIGN","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"_ID":269553944755},"type":"STATION.CALLSIGN","value":"callsign"}|
|
|
|
|
|
Callsign is returned in `value`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# STATION.GET_GRID
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Gets station grid square
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"STATION.GET_GRID","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"_ID":269558175403},"type":"STATION.GRID","value":"EM85"}|
|
|
|
|
|
Grid square is returned in `value`
|
|
|
|
|
|
|
|
|
|
# STATION.SET_GRID
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Sets station grid square
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"STATION.SET_GRID","value":grid}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| grid | 4 or 6 character grid square enclosed in ""|
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"_ID":269558371794},"type":"STATION.GRID","value":"EM85"}|
|
2026-01-21 11:05:48 -05:00
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Grid square is returned in `value`
|
|
|
|
|
|
|
|
|
|
# STATION.GET_INFO
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Gets station info
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"STATION.GET_INFO","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"_ID":269559398161},"type":"STATION.INFO","value":"JS8-IMPROVED VER <MYVERSION>"}|
|
2026-01-21 11:05:48 -05:00
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Station info is returned in `value`
|
|
|
|
|
|
|
|
|
|
# STATION.SET_INFO
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Sets station info
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"STATION.SET_INFO","value":info}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | Station info enclosed in "" |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"_ID":269559620289},"type":"STATION.INFO","value":"JS8-IMPROVED VER <MYVERSION>"}|
|
2026-01-21 11:05:48 -05:00
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Station info is returned in `value`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# STATION.GET_STATUS
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Gets station status message
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"STATION.GET_STATUS","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"_ID":269559773383},"type":"STATION.STATUS","value":"IDLE <MYIDLE> JS8CALL-IMPORVED VERSION <MYVERSION>"}|
|
2026-01-21 11:05:48 -05:00
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Station status is returned in `value`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# STATION.SET_STATUS
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Sets station status message
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"STATION.SET_STATUS","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | Station status enclosed in "" |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"_ID":269559773383},"type":"STATION.STATUS","value":"IDLE <MYIDLE> JS8CALL-IMPORVED VERSION <MYVERSION>"}|
|
2026-01-21 11:05:48 -05:00
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Station status is returned in `value`
|
|
|
|
|
|
|
|
|
|
|
2026-01-23 17:41:29 -05:00
|
|
|
# STATION.VERSION
|
2026-01-29 17:38:59 -05:00
|
|
|
[!note] API >= 2.6
|
|
|
|
|
|
2026-01-23 17:41:29 -05:00
|
|
|
Gets JS8Call version. Use to check for API changes or compatiblity.
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"STATION.VERSION","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"VERSION":"2.6.0-NOT_FOR_RELEASE","_ID":269908381596},"type":"STATION.VERSION","value":""}|
|
|
|
|
|
|
2026-01-24 13:17:25 -05:00
|
|
|
# STATION.GET_OS
|
2026-01-29 17:38:59 -05:00
|
|
|
[!note] API >= 2.6
|
|
|
|
|
|
2026-01-24 13:17:25 -05:00
|
|
|
Gets OS info including name, kernel version, and type
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"STATION.GET_OS","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"OS_KERNEL":"linux","OS_KERNEL_VERSION":"6.14.0-37-generic","OS_NAME":"Ubuntu 24.04.3 LTS","_ID":269977840701},"type":"STATION.GET_OS","value":""}|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# STATION.GET_SPOT
|
2026-01-29 17:38:59 -05:00
|
|
|
[!note] API >= 2.6
|
|
|
|
|
|
2026-01-24 13:17:25 -05:00
|
|
|
Gets status of SPOT setting
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"STATION.GET_SPOT","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
2026-01-29 13:06:03 -05:00
|
|
|
|{"params":{"_ID":270409823907,"value":true},"type":"STATION.SPOT","value":""}|
|
2026-01-24 13:17:25 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
# STATION.SET_SPOT
|
2026-01-29 17:38:59 -05:00
|
|
|
[!note] API >= 2.6
|
|
|
|
|
|
2026-01-24 13:17:25 -05:00
|
|
|
Sets status of SPOT setting
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
2026-01-29 13:06:03 -05:00
|
|
|
|{"params":{},"type":"STATION.SET_SPOT","value":"true"}|
|
2026-01-24 13:17:25 -05:00
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | true/false |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
2026-01-29 13:06:03 -05:00
|
|
|
|{"params":{"_ID":270409737648,"value":true},"type":"STATION.SPOT","value":""}|
|
|
|
|
|
|
2026-01-23 17:41:29 -05:00
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
# RX.GET_CALL_ACTIVITY
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Returns the recent call activity
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"RX.GET_CALL_ACTIVITY","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
2026-01-21 11:05:48 -05:00
|
|
|
|{"params":{"":{"GRID":"","SNR":0,"UTC":0},"AB4WV":{"GRID":"","SNR":-18,"UTC":1768858992167},"K4EXA":{"GRID":"EM63","SNR":-18,"UTC":1768858242147},"type":"RX.CALL_ACTIVITY","value":""}|
|
2026-01-21 08:19:42 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
# RX.GET_CALL_SELECTED
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Returns the callsign of a station that has been selected in the UI.
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"RX.GET_CALL_SELECTED","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"_ID":269560590229},"type":"RX.CALL_SELECTED","value":""}|
|
|
|
|
|
|{"params":{"_ID":269560649847},"type":"RX.CALL_SELECTED","value":"KM4PVB"}|
|
2026-01-21 11:05:48 -05:00
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
1) First form is if no callsign is currently selected in the UI.
|
2026-01-24 13:17:25 -05:00
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
2) Second form is the selected callsign in the UI.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# RX.GET_BAND_ACTIVITY
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Gets current band activity
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"RX.GET_BAND_ACTIVITY","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"1067":{"DIAL":7078000,"FREQ":7079067,"OFFSET":1067,"SNR":-7,"TEXT":"W6OEM: VE3SOY HEARTBEAT SNR -20 ","UTC":1768860611907},"616":{"DIAL":7078000,"FREQ":7078616,"OFFSET":616,"SNR":-18,"TEXT":"KM4BOF: VE3SOY HEARTBEAT SNR -09 ","UTC":1768860611918},"type":"RX.BAND_ACTIVITY","value":""}|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# RX.GET_TEXT
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Gets the contents of the directed message window
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"RX.GET_TEXT","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"_ID":269562514193},"type":"RX.TEXT","value":"\n22:06:10 - (1950) - KJ4CTD: W4CAT SNR? ♢ \n\n22:06:52 - (1950) - KJ4CTD: KB4DSF SNR? ♢ \n\n22:14:29 - (800) - KJ4CTD: N0AAS HEARTBEAT SNR -18 ♢ \n\n22:25:31 - (1950) - KJ4CTD: @SITREP MSG F!104 100 ST[SC] GR[EM85] #ASRM KWC ♢ "}|
|
|
|
|
|
|
|
|
|
|
|
RX.GET_FREE_OFFSETS API addition (#213)
* RX.GET_FREE_OFFSETS API addition
- Reads optional `SPEED`, `LOW`, `HIGH` params (defaults: current mode, 500 Hz, 2500 Hz)
- For each active offset in `m_bandActivity` (within 30 seconds), computes the blocked zone as `occ ± (requestedBW/2 + signalBW/2)` — accounting for both the occupying signal's actual bandwidth and your intended TX bandwidth
- Sorts and merges overlapping blocked zones, then returns the gaps as `FREE` segments
- Omits gaps narrower than your TX bandwidth (they can't fit anyway)
- Example response: {"params":{"FREE":[{"HIGH":860,"LOW":500,"WIDTH":360},{"HIGH":2500,"LOW":1120,"WIDTH":1380}],"BANDWIDTH":160,"HIGH":2500,"LOW":500,"SPEED":2,"_ID":...},"type":"RX.FREE_OFFSETS","value":""}
2026-03-10 12:44:02 -04:00
|
|
|
# RX.GET_FREE_OFFSETS
|
|
|
|
|
[!note] API >= 2.6
|
|
|
|
|
|
|
|
|
|
Returns contiguous free offset segments in the passband not occupied by recently
|
|
|
|
|
heard stations. Accounts for the bandwidth of each active signal's submode so the
|
|
|
|
|
returned segments are guaranteed wide enough for your intended transmission without
|
|
|
|
|
overlapping other stations.
|
|
|
|
|
|
|
|
|
|
Entries older than 30 seconds are considered stale and treated as clear.
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"RX.GET_FREE_OFFSETS","value":""}|
|
|
|
|
|
|{"params":{"SPEED":2,"LOW":500,"HIGH":2500},"type":"RX.GET_FREE_OFFSETS","value":""}|
|
|
|
|
|
|
|
|
|
|
| Optional params | |
|
|
|
|
|
|-----------------|-|
|
|
|
|
|
| SPEED | Submode int (0=Normal, 1=Fast, 2=Turbo, 4=Slow, 8=Ultra). Defaults to current mode. |
|
|
|
|
|
| LOW | Low passband bound in Hz. Default: 500 |
|
|
|
|
|
| HIGH | High passband bound in Hz. Default: 2500 |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"FREE":[{"HIGH":860,"LOW":500,"WIDTH":360},{"HIGH":2500,"LOW":1120,"WIDTH":1380}],"BANDWIDTH":160,"HIGH":2500,"LOW":500,"SPEED":2,"_ID":269562514193},"type":"RX.FREE_OFFSETS","value":""}|
|
|
|
|
|
|
|
|
|
|
`FREE` is a list of free segments, each with `LOW`, `HIGH`, and `WIDTH` in Hz.
|
|
|
|
|
`BANDWIDTH` is the signal bandwidth (Hz) for the requested `SPEED`.
|
|
|
|
|
Segments narrower than `BANDWIDTH` are omitted — they cannot fit the intended transmission.
|
|
|
|
|
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
# TX.GET_TEXT
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Gets the text to be transmitted
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"TX.GET_TEXT","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"_ID":269562593590},"type":"TX.TEXT","value":""}|
|
|
|
|
|
|{"params":{"_ID":269562644567},"type":"TX.TEXT","value":"KJ4CTD: KJ4YQK SOME RANDOM TEXT"}|
|
2026-01-21 11:05:48 -05:00
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
1) If text box is empty
|
|
|
|
|
2) If text box has something in it
|
|
|
|
|
|
|
|
|
|
# TX.SET_TEXT
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Sets the text to be transmitted
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"TX.SET_TEXT","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | text to be transmitted |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"_ID":269563119535},"type":"TX.TEXT","value":"TEST"}|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# TX.SEND_MESSAGE
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Sends the value in the next transmit cycle
|
|
|
|
|
|
|
|
|
|
[NOTE] If the message window already has text displayed, this will **NOT** transmit your new message!
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"TX.SEND_MESSAGE","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | text to be transmitted |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"PTT":true,"UTC":1768862879801,"_ID":-1},"type":"RIG.PTT","value":"on"}|
|
|
|
|
|
|{"params":{"TONES":[4,2,5,6,1,3,0,1,0,2,6,6,3,1,6,6,4,0,1,7,0,7,2,6,2,6,0,4,3,4,5,2,3,5,2,0,4,2,5,6,1,3,0,3,4,2,5,4,5,7,0,1,6,3,6,7,0,2,3,5,6,4,5,7,4,0,0,1,7,3,6,4,4,2,5,6,1,3,0],"_ID":-1},"type":"TX.FRAME","value":""}|
|
|
|
|
|
|{"params":{"PTT":false,"UTC":1768862893402,"_ID":-1},"type":"RIG.PTT","value":"off"}|
|
|
|
|
|
|{"params":{"PTT":true,"UTC":1768862894801,"_ID":-1},"type":"RIG.PTT","value":"on"}|
|
|
|
|
|
|{"params":{"TONES":[4,2,5,6,1,3,0,2,3,7,1,3,7,7,5,2,2,4,1,1,2,2,1,1,5,3,5,4,0,7,0,5,2,1,6,5,4,2,5,6,1,3,0,7,1,6,4,4,3,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,2,6,7,1,2,4,2,5,6,1,3,0],"_ID":-1},"type":"TX.FRAME","value":""}|
|
|
|
|
|
|{"params":{"PTT":false,"UTC":1768862908402,"_ID":-1},"type":"RIG.PTT","value":"off"}|
|
2026-01-21 11:05:48 -05:00
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
1) Trigger PTT on
|
|
|
|
|
2) Send the message tones
|
|
|
|
|
3) Trigger PTT off
|
|
|
|
|
4) Trigger PTT on
|
|
|
|
|
5) Send the message tones
|
|
|
|
|
6) Trigger PTT off
|
|
|
|
|
|
|
|
|
|
|
2026-01-29 21:40:37 -05:00
|
|
|
# TX.GET_QUEUE_DEPTH
|
|
|
|
|
[!note] API >= 2.6
|
|
|
|
|
|
|
|
|
|
Gets the number of messages left in the transmit queue.
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"TX.GET_QUEUE_DEPTH","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"DEPTH":2,"_ID":270440267253},"type":"TX.QUEUE_DEPTH","value":""}|
|
|
|
|
|
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
# MODE.GET_SPEED
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Gets the currently set transmit mode speed
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"MODE.GET_SPEED","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"SPEED":0,"_ID":269564224294},"type":"MODE.SPEED","value":""}|
|
|
|
|
|
|{"params":{"SPEED":1,"_ID":269564372867},"type":"MODE.SPEED","value":""}|
|
|
|
|
|
|{"params":{"SPEED":2,"_ID":269564383363},"type":"MODE.SPEED","value":""}|
|
|
|
|
|
|{"params":{"SPEED":4,"_ID":269564510080},"type":"MODE.SPEED","value":""}|
|
|
|
|
|
|{"params":{"SPEED":8,"_ID":269564511182},"type":"MODE.SPEED","value":""}|
|
|
|
|
|
|
|
|
|
|
# MODE.SET_SPEED
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Sets the currently set transmit mode speed
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{"SPEED":speed},"type":"MODE.SET_SPEED","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| speed | mode speed [number](#mode-speeds) |
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"DIAL":7078000,"FREQ":7079950,"OFFSET":1950,"SELECTED":"","SPEED":0,"_ID":"269564663038"},"type":"STATION.STATUS","value":""}|
|
2026-01-29 13:35:25 -05:00
|
|
|
|{"params":{"SPEED":0,"_ID":270412242558},"type":"MODE.SET_SPEED","value":""}|
|
|
|
|
|
|
|
|
|
|
* Sometimes it comes back with the first form.
|
2026-01-21 08:19:42 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
## MODE Speeds
|
2026-03-05 08:17:59 -06:00
|
|
|
| Mode | Number |
|
|
|
|
|
|-----------|--------|
|
|
|
|
|
| Normal | 0 |
|
|
|
|
|
| Fast | 1 |
|
2026-03-07 09:29:27 -06:00
|
|
|
| JS8 40 | 2 |
|
2026-03-05 08:17:59 -06:00
|
|
|
| Slow | 4 |
|
2026-03-07 09:29:27 -06:00
|
|
|
| JS8 60 | 8 |
|
|
|
|
|
Please note, JS8 60 is an *experimental* and unreliable mode.
|
2026-01-21 08:19:42 -05:00
|
|
|
|
|
|
|
|
# INBOX.GET_MESSAGES
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Fetches all Inbox messages, warning, this could be very large
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"INBOX.GET_MESSAGES","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
|{"params":{"MESSAGES":[{"params":{"CMD":" MSG ","DIAL":7078000,"FREQ":7080318,"FROM":"KJ5MIW","GRID":" EM15","OFFSET":2318,"PATH":"KJ5MIW","SNR":-15,"SUBMODE":0,"TDRIFT":0.13999998569488525,"TEXT":"F!104 100 ST[OK] GR[EM15] #ATTV","TO":"@SITREP","UTC":"2026-01-21 01:44:26","_ID":"269660742003"},"type":"READ","value":""}],"_ID":269699597005},"type":"INBOX.MESSAGES","value":""}|
|
|
|
|
|
|
|
|
|
|
``MESSAGES`` is a comma seperated list of message records, each record is contained within brackets.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# INBOX.STORE_MESSAGE
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
Stores a message in YOUR Inbox
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{"CALLSIGN":callsign,"TEXT":text},"type":"INBOX.STORE_MESSAGE","value":""}}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| callsign | "TO" callsign in ""|
|
|
|
|
|
| text | Text to store in ""|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
| {"params":{"ID":228,"_ID":269569847892},"type":"INBOX.MESSAGE","value":""} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# WINDOW.RAISE
|
2026-01-29 17:38:59 -05:00
|
|
|
API <= 2.6
|
|
|
|
|
|
2026-01-21 08:19:42 -05:00
|
|
|
If allowed by OS. brings the program to the front
|
|
|
|
|
|
|
|
|
|
| End Point |
|
|
|
|
|
|-----------|
|
|
|
|
|
|{"params":{},"type":"WINDOW.RAISE","value":""}|
|
|
|
|
|
|
|
|
|
|
| Requirements | |
|
|
|
|
|
|--------------|-|
|
|
|
|
|
| value | empty string |
|
|
|
|
|
|
|
|
|
|
| Response |
|
|
|
|
|
|----------|
|
|
|
|
|
| None |
|
2026-01-29 21:40:37 -05:00
|
|
|
|
|
|
|
|
|