Gateway Commands API
Gateway Commands API provides remote execution of operational and diagnostic commands on managed gateways.
It enables administrators to troubleshoot connectivity, retrieve diagnostic information, and perform maintenance operations remotely.
- Remote command execution on gateways
- Connectivity diagnostics
- Cellular modem troubleshooting
- System health verification
- Gateway troubleshooting
- Network connectivity testing
- Remote diagnostics and maintenance
To subscribe to new commands from the NS, GW should subscribe to following MQTT topic:
api/v1/gateway/commands
To execute ping command, set the number of packets to sent from the gateway and the destination IP address or hostname.
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"packetsCount": {count(e.g.5)},
"destination": "{destination}"
}'
Response body:
{
"packets_sent": 5,
"packets_recv": 5
}
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM{packetsCount}= number of packets should be sent{destination}= where packets should be sent{packets_sent}= number of packets that were sent{packets_recv}= number of packets that were received
Reboot command will reboot the gateway.
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Get Gateway’s antenna count
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getAntennasCount' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
{
"antennasCount": 1,
"status": "ok"
}
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM{antennasCount}= number of Gateway antennas
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getPublicKey' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
curl --location 'https://{host}/api/gateway/{GatewayId}/command/reverseSsh' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"options": "-f -N -T -R",
"sshRevPort": port,
"username": "username",
"password": "password",
"sshHost": "https://{host}/",
"sshPort": sshPort
}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
curl --location 'https://{host}/api/gateway/{GatewayId}/command/stopReverseSsh' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getGpsCoordinates' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
This endpoint provides Module Name, T-code, Module Revision, Serial number, Gateway ID, IP addresses of Eth0, wwan0, and Loopback.
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
{
"interfaces": {
"wwan0": "111.111.11.11",
"lo": "127.0.0.1",
"eth0": "111.111.11.11"
},
"moduleName": "Kona_Micro_Indoor",
"moduleProductCode": "T0001111",
"moduleRevision": "C",
"moduleSerialNumber": "1111A1111",
"custGatewayId": "647FDAFFFE111111"
}
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM{wwan0}= wan IP address{eth0}= ethernet IP address{moduleName}= Gateway Model name,{moduleProductCode}= T-Code,{moduleRevision}= Revision,{moduleSerialNumber}= Gateway Serial Number,{custGatewayId}= Gateway Id{lo}= Loopback
Check Gateway’s Radio Statistic
curl --location 'https://{host}/api/gateway/GatewayId/command/getRadioStatistics' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"index": 10
}'
Response body:
"numTxPackets": 0,
"numRxPackets": 1,
"rxFineTimestamp": 0,
"rxNoFineTimestamp": 0,
"rxCrcOkPackets": 0,
"rxCrcErrPackets": 1,
"noMatch": 0
}
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM{numTxPackets}= number of transmitted packets{numRxPackets}= number of received packets{rxCrcOkPackets}= number of successful CRC packets{rxCrcErrPackets}= number of failed CRC packets
Reset Radio Statistics Counters
curl --location --request POST 'https://{host}/api/gateway/{GatewayId}/command/resetRadioStatisticsCounters' \
--header 'x-Authorization: Bearer {token}' \
--data ''
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getSpectralScanParams' \
--header 'x-Authorization: {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
{
"antenna": 0,
"samplePeriod": 0,
"num125kChan": 34,
"startFreq125k": 863100,
"stepFreq125k": 200,
"num500kChan": 0,
"startFreq500k": 863000,
"stepFreq500k": 1600,
"minRx": 863099968,
"maxRx": 869900032
}
curl --location 'https://{host}/api/gateway/{GatewayId}}/command/getSpectralScanProgress' \
--header 'x-Authorization: {token}' \
--header 'Content-Type: application/json' \
--data '{}'
curl --location 'https://{host}/api/gateway/{gatewayId}}/command/getSpectralScanResults' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
This endpoint will provide existing backups
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getBackups' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
"status": "backup:ok\n",
"backups": [
{
"description": "dist-upgrade: before updating from {BSP_version_1} to {BSP_version_2}",
"date": "YYYY-MM-DDT00:00:00",
"index": 0
}
]
}
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Create new backup for Gateway:
curl --location 'https://{host}/api/gateway/{GatewayId}/command/createBackup' \
--header 'x-Authorization: {token} \
--header 'Content-Type: application/json' \
--data '{
"description": "backup_1"
}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM{description}= any name for the backup to identify it
Restore specified backup:
curl --location 'https://{host}/api/gateway/{GatewayId}/command/restoreBackup' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"index": 10
}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM{index}= index of desired backup.
Get Gateway’s Software version list
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getSoftwareVersions' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Get the Upgradable Software list:
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getUpgradableSoftware' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
{
"name": "filename",
"ver": "version",
"newVer": "version",
"special": 0
}
]
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM{name}= name of the file{ver}= file version
Get the list of Software ready to install
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getInstallableSoftware' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
[
{
"name": "filename",
"ver": "version"
}
]
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM{name}= name of the file{ver}= file version
Upgrade Gateway Software:
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"packageToUpgrade": "all"
}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM{packageToUpgrade}= packages that are selected for upgrading
Install selected Software:
curl --location 'https://{host}/api/gateway/{gatewayId}/command/installSoftware' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"packageToInstall": "file"
}'
---
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM{packageToInstall}= package to install from the list of Installable components
Get Installation status:
curl --location 'https://{host}/api/gateway/{gatewayId}/command/getLastInstallUpgradeStatus' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
{
"lastOperation": "upgrade",
"lastStatus": 90005
}
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM{name}= name of the file{ver}= file version
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getBspStatus' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Get Wireless Modem RF Information:
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getWmDeviceInformation' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Check the active profile parameters:
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getWmHomeNetworkBranch' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
{
"homeNetwork": "network_name",
"roamingStatus": "Off/on",
"dataCapabilities": "LTE",
"sessionState": "ATTACHED",
"dataBearer": "LTE",
"dormancyStatus": "CHANNEL ACTIVE",
"luRejectCause": "0"
}
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Get Wireless Modem RF Information:
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getWmRfInformation' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
{
"radioInterface": "LTE",
"activeBandClass": 0,
"activeChannel": 0,
"signalStrength": 0,
"ecio": 0,
"io": 0,
"sinr": 0,
"rsrq": 0
*"cellid": <value> ----> parameter available for newest BSP
}
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Get Wireless Modem Network Info:
PLEASE NOTE: available for the newest BSP
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getWmNetworkInfo' \
---header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
[
"availableNetworks":
{
"mnc": <unique id for a network>
"MCC": <unique id for a network>
"name": "network provider name",
"active": "Unknown/Current/Available"
}
]
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Set Wireless Modem Preferred Network:
PLEASE NOTE: available for the newest BSP
curl --location 'https://{host}/api/gateway/{GatewayId}/command/setWmPreferredNetwork' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"mcc": "0",
"mnc": "0"
}'
Response body:
{
"status": "CM response message",
}
Get Active Profile parameters
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getWmActiveProfileParameters' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
{
"pdpType": "0",
"authentication": "0",
"profileName": "name",
"apnName": "name",
"userName": "",
"ipAddress": "000.00.00.00",
"primaryDNS": "00.00.000.00",
"secondaryDNS": "00.00.000.00"
}
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getWmCallStatistics' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
"callStatus": "CONNECTED",
"bytesTransferred": 0,
"bytesReceived": 0,
"currentTxRate": 0,
"currentRxRate": 0,
"maxTxRate": 50000000,
"maxRxRate": 300000000
}
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM{callStatus}= “CONNECTED/NOT CONNECTED”,{bytesTransferred}= transferred data in bytes,{bytesReceived}= received data in bytes,{currentTxRate}= transmit rate,{currentRxRate}= Recieve rate,{maxTxRate}= max allowed transmit rate,{maxRxRate}= max allowed receive rate
Get all created APNs:
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getWmApns' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
{
"workingIdx": 2,
"apns": [
{
"name": "name",
"type": 0,
"idxModem": 1,
"idx": 1
}
]
}
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getWmPDP_Profiles' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
curl --location 'https://{host}/api/gateway/{GatewayId}/command/modifyWmPDP_Profiles' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Add new APN:
curl --location 'https://{host}/api/gateway/{GatewayId}/command/addWmApn' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "test_apn1"
}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Update selected APN:
curl --location 'https://{host}/api/gateway/{GatewayId}/command/updateWmApn' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "test_update",
"type": 0,
"idxModem": 1,
"idx": 1
}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Delete selected APN:
curl --location 'https://{host}/api/gateway/{GatewayId}/command/deleteWmApn' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '5'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Check the Gateway’s APN status:
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getWmStatusApn' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
{
"status": "Connected successfully with this APN",
"simStatus": "READY"
}
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Check preferred and fallback Connectivity Types (Ethernet and Cellular)
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getConnectivityTypes' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
[
{
"index": 1,
"type": "Ethernet",
"preferred": true,
"fallback": false
},
{
"index": 3,
"type": "Cellular",
"preferred": false,
"fallback": true
}
]
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM{type}= interface type(Ethernet/Cellular){preferred}= set as preferred interface{fallback}= set as secondary interface, that will work if the preferred one will disconnect
Set preferred and fallback Connectivity Type (Ethernet and Cellular):
curl --location 'https://{host}/api/gateway/{GatewayId}/command/setPreferredFallbackConnectivityType' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"preferredIdx": 1,
"fallbackIdx": 3
}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Set preferred Ping IP addresses:
curl --location 'https://{host}/api/gateway/{GatewayId}/command/setPreferredPingIpAddress' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"ipAddr": "8.8.8.8"
}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Get preferred Ping IP addresses:
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getPreferredPingIpAddress' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
Response body:
"ipAddr":"8.8.8.8
}
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Get preferred Firewall Configurations:
curl --location 'https://{host}/api/gateway/{GatewayId}/command/getFirewallConfiguration' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM
Set preferred Firewall Configurations:
curl --location 'https://{host}/api/gateway/{GatewayId}/command/setFirewallConfiguration' \
--header 'x-Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"enabled": false,
"doSPrevention": {
"enabled": false,
"perMinLimit": 30,
"burstLimit": 60
},
"ssh": {
"enabled": true
},
"ping": {
"enabled": false,
"limit": {
"enabled": false,
"pingPerMinLimit": 30,
"pingBurstLimit": 60
}
},
"filters": []
}'
{host}= Network Server or OAM host{gatewayId}= Gateway ID in the Network Server/OAM