Request and Response Data
- Request Data
- A request message is a JSON object containing the following fields:Request Example:
Parameter Type Required Description id string Yes Identifier of the request. This is a random value. method string Yes Operation method. Supported values depend on the API. url string Yes API resource path. body object No Request payload. Include it when the operation requires additional input data, typically for POST and PUT operations. { "id": "1", "method": "POST", "url": "/ns/device/add", "body": { "name": "EM300", "description": "em300", "devEUI": "24E124136A456465", "classMode": "Class A", "netAccess": "OTAA", "appKey": "5572404c696e6b4c6f52613230313823", "fPort": 1, "skipFCntCheck": false } }
- Response Data
- A response message is a JSON object returned by the gateway after processing a request.
It contains the following fields:Response Example:
Parameter Type Description id string Identifier of the response. This value is the same as in the corresponding request. method string Method of the corresponding request. url string API resource path of the corresponding request. body object Response payload. The structure depends on the request. { "id": "1", "method": "POST", "url": "/ns/device/add", "body": { "code": 200, "error": "" } }
Add Device
Adds a LoRaWAN® end device to the gateway embedded network server.
Method: POST
URL: /ns/device/add
Request Data
| Parameter | Type / Range | Required | Default | Description |
|---|---|---|---|---|
| name | string, max. 192 chars | Yes | devEUI | Device name. Allows Chinese characters, English letters, numbers, underscores, and hyphens. Must be unique in the device list. |
| description | string, max. 384 chars | Yes | - | Device description. |
| applicationIds | string array | No | - | ID of existing applications. |
| devEUI | string, 16 HEX chars | Yes | - | Unique Device EUI. |
| classMode | string | Yes | Class A | Device class. Supported values: Class
A, Class C. |
| netAccess | string | Yes | - | Network activation mode. Supported values:
OTAA, ABP. |
| appKey | string, 32 HEX chars | Conditional | - | Required when netAccess is
OTAA. |
| devAddr | string, 8 HEX chars | Conditional | - | Required when netAccess is
ABP. |
| nwkSKey | string, 32 HEX chars | Conditional | - | Required when netAccess is
ABP. |
| appSKey | string, 32 HEX chars | Conditional | - | Required when netAccess is
ABP. |
| fCntUp | uint32 | No | 0 | Initial uplink frame counter for ABP devices. Range: 0-4294967295. |
| fCntDown | uint32 | No | 0 | Initial downlink frame counter for ABP devices. Range: 0-4294967295. |
| fPort | integer | Yes | 1 | Device application port. Range: 1-233. |
| skipFCntCheck | boolean | Yes | false | Specifies whether disable frame counter validation. |
| rxDROffset1 | string | No | 0 | RX1 datarate offset. Range: 0-7. |
| rxDataRate2 | integer | No | Depend on Channel Plan | RX2 datarate. See options on Reference Table. |
| rxFreq2 | unsigned integer | No | Depend on Channel Plan | RX2 frequency. See options on Reference Table. |
| enableUplinkChannelStr | string | No | All | This parameter only works with CN470/US915/AU915
channel plans.
Examples: 1,40: Enable Channel 1 and 40 |
| classCTimeout | integer | No | 0 | The time to wait for a downlink response from class C devices. Unit: s. |
Request Example - OTAA
{
"id": "1",
"method": "POST",
"url": "/ns/device/add",
"body": {
"name": "EM300",
"description": "Warehouse temperature sensor",
"applicationIds": ["1","2"],
"devEUI": "24E124136A456465",
"classMode": "Class A",
"netAccess": "OTAA",
"appKey": "5572404c696e6b4c6f52613230313823",
"fPort": 85,
"skipFCntCheck": false
}
}
Request Example - ABP
{
"id": "2",
"method": "POST",
"url": "/ns/device/add",
"body": {
"name": "EM300-ABP",
"description": "Warehouse temperature sensor",
"applicationIds": ["3"],
"devEUI": "24E124136A456466",
"classMode": "Class A",
"netAccess": "ABP",
"devAddr": "06B18CCF",
"nwkSKey": "5572404c696e6b4c6f52613230313823",
"appSKey": "5572404c696e6b4c6f52613230313823",
"fCntUp": 0,
"fCntDown": 0,
"fPort": 85,
"skipFCntCheck": false
}
}
Response Data
The response message body contains the following fields:
| Parameter | Type | Description |
|---|---|---|
| code | integer | Result code. 200 indicates
success. See the Return Code List for failure codes. |
| error | string | Error message. Empty when the operation succeeds. |
Response Example
{
"id": "1",
"method": "POST",
"url": "/ns/device/add",
"body": {
"code": 200,
"error": ""
}
}
Delete Device
Deletes one or more LoRaWAN® end devices from the gateway embedded network server.
Method: DELETE
URL: /ns/device
Request Data
The request message body contains the following fields:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| ids | array of strings | Yes | - | Device EUIs to delete. |
Request Example
{
"id": "1",
"method": "DELETE",
"url": "/ns/device",
"body": {
"ids": [
"24E124136A456465",
"24E124136A456069"
]
}
}
Response Data
| Parameter | Type | Description |
|---|---|---|
| code | integer | Result code. 200 indicates
success. See the Return Code List for failure codes. |
| error | string | Error message. Empty when the operation succeeds. |
Response Example
{
"id": "1",
"method": "DELETE",
"url": "/ns/device",
"body": {
"code": 200,
"error": ""
}
}
Enquire Device
Queries devices added on the gateway embedded network server.
Method: GET
URL:
/ns/device?search=&limit=10&offset=0&applicationId=0
Request Data
The request URL supports the following query parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| search | string | No | - | The devEUI or device name to search. Leave it blank to enquire all devices. |
| limit | integer | No | 20 | Maximum number of devices to enquire. Range: 0-20 (UG63) or 0-100 (SG50). |
| offset | integer | No | 0 | Specifies the device from which the enquiry starts. |
| applicationId | integer | No | - | Enquires devices under the specified application. Leave it blank to enquire all devices. |
Request Example - Enquire All Devices
{
"id": "1",
"method": "GET",
"url": "/ns/device?search=&limit=100&offset=0"
}
Request Example - Enquire Devices Under One Application
{
"id": "2",
"method": "GET",
"url": "/ns/device?search=&limit=10&offset=0&applicationId=1"
}
Request Example - Enquire One Device
{
"id": "3",
"method": "GET",
"url": "/ns/device?search=24E124136A456465&limit=10&offset=0"
}
Response Data
The response message body contains the following fields:
| Parameter | Type | Description |
|---|---|---|
| total | string | The device amount of enquiry. |
| result | array | The enquiry result. |
| result[].name | string | Device name. |
| result[].description | string | Device description. |
| result[].devEUI | string | Device EUI. |
| result[].appEUI | string | Device App EUI. |
| result[].classMode | string | Device class mode. |
| result[].netAccess | string | Device join type. |
| result[].fPort | integer | Device application port. |
| result[].skipFCntCheck | boolean | Whether disable frame count validation. |
| result[].devAddr | string | Device Address. Required when
netAccess is ABP. |
| result[].appKey | string | Application Key. Required when
netAccess is OTAA. |
| result[].nwkSKey | string | Network Session Key. Required when
netAccess is ABP. |
| result[].appSKey | string | Application Session Key. Required when
netAccess is ABP. |
| result[].fCntUp | integer | Uplink frame counter. |
| result[].fCntDown | integer | Downlink frame counter. |
| result[].active | integer | 1: activate; 0:
de-activate. |
| result[].applicationId | string | Application ID. |
| result[].applicationName | string | Application name. |
| result[].createTime | string | The time to create the device. |
| result[].lastTime | string | The last update time. |
| deviceMax | integer | The maximum supported device number. |
Response Example
{
"id": "1",
"method": "GET",
"url": "/ns/device?search=&limit=100&offset=0",
"body": {
"total": 2,
"result": [
{
"name": "EM300",
"description": "em300",
"devEUI": "24E124136A456465",
"appEUI": "",
"classMode": "Class A",
"netAccess": "OTAA",
"fPort": 1,
"skipFCntCheck": false,
"devAddr": "",
"appKey": "5572404c696e6b4c6f52613230313823",
"nwkSKey": "",
"appSKey": "",
"fCntUp": 0,
"fCntDown": 0,
"active": 0,
"applicationId": "3",
"applicationName": "test",
"createTime": "2025-04-12 13:22:06+0800",
"lastTime": "",
"channelsConfiguredFlag": 0,
"rx2ConfiguredFlag": 0,
"newChannelsConfiguredFlag": 0
},
{
"name": "AM300",
"description": "",
"devEUI": "24e124707E094237",
"appEUI": "24e124c0002a0001",
"classMode": "Class A",
"netAccess": "OTAA",
"fPort": 85,
"skipFCntCheck": false,
"devAddr": "06b18ccf",
"appKey": "5572404c696e6b4c6f52613230313822",
"nwkSKey": "cb6125fde2cc1894e5984db1016b1cda",
"appSKey": "eda3215c1a9c34ca6bc8ec76373e9da4",
"fCntUp": 32,
"fCntDown": 32,
"active": 1,
"applicationId": "3",
"applicationName": "test",
"createTime": "2025-04-10 13:29:42+0800",
"lastTime": "59 seconds ago",
"channelsConfiguredFlag": 1,
"rx2ConfiguredFlag": 0,
"newChannelsConfiguredFlag": 0
}
],
"deviceMax": 20
}
}
Modify Device
Modifies the settings of an existing device. Before modifying a device, it is suggested to enquire this device first.
Method: PUT
URL: /ns/device/{devEUI}
Request Data
| Parameter | Type / Range | Required | Default | Description |
|---|---|---|---|---|
| name | string, max. 192 chars | Yes | devEUI | Device name. Allows Chinese characters, English letters, numbers, underscores, and hyphens. Must be unique in the device list. |
| description | string, max. 384 chars | Yes | - | Device description. |
| applicationIds | string array | No | - | ID of existing applications. |
| devEUI | string, 16 HEX chars | Yes | - | Unique Device EUI. |
| classMode | string | Yes | Class A | Device class. Supported values: Class
A, Class C. |
| netAccess | string | Yes | - | Network activation mode. Supported values:
OTAA, ABP. |
| appKey | string, 32 HEX chars | Conditional | - | Required when netAccess is
OTAA. |
| devAddr | string, 8 HEX chars | Conditional | - | Required when netAccess is
ABP. |
| nwkSKey | string, 32 HEX chars | Conditional | - | Required when netAccess is
ABP. |
| appSKey | string, 32 HEX chars | Conditional | - | Required when netAccess is
ABP. |
| fCntUp | uint32 | No | 0 | Initial uplink frame counter for ABP devices. Range: 0-4294967295. |
| fCntDown | uint32 | No | 0 | Initial downlink frame counter for ABP devices. Range: 0-4294967295. |
| fPort | integer | Yes | 1 | Device application port. Range: 1-233. |
| skipFCntCheck | boolean | Yes | false | Specifies whether disable frame counter validation. |
| rxDROffset1 | string | No | 0 | RX1 datarate offset. Range: 0-7. |
| rxDataRate2 | integer | No | Depend on Channel Plan | RX2 datarate. See options on Reference Table. |
| rxFreq2 | unsigned integer | No | Depend on Channel Plan | RX2 frequency. See options on Reference Table. |
| enableUplinkChannelStr | string | No | All | This parameter only works with CN470/US915/AU915
channel plans.
Examples: 1,40: Enable Channel 1 and 40 |
| classCTimeout | integer | No | 0 | The time to wait for a downlink response from class C devices. Unit: s. |
Request Example
{{
"id": "123",
"method": "PUT",
"url": "/ns/device/24E124FFFEF97276",
"body": {
"devEUI": "24E124FFFEF97276",
"name": "Device Updated",
"description": "Updated description",
"classMode": "Class A",
"netAccess": "OTAA",
"fPort": 1,
"skipFCntCheck": false,
"appKey": "5572404c696e6b4c6f52613230313823"
}
}
Response Data
| Parameter | Type | Description |
|---|---|---|
| code | integer | Result code. 200 indicates
success. See the Return Code List for failure codes. |
| error | string | Error message. Empty when the operation succeeds. |
Response Example
{
"id": "1",
"method": "PUT",
"url": "/ns/device/24E124FFFEF97276",
"body": {
"code": 200,
"error": ""
}
}
Enquire Gateway Info
Queries information about the gateway.
Method: GET
URL: /gatewayinfo
Request Data
This request does not contain a request body.
Request Example
{
"id": "1",
"method": "GET",
"url": "/gatewayinfo"
}
Response Data
The response message body contains the gateway information fields described in the Gateway Info.
Response Example
{
"id": "1",
"method": "GET",
"url": "/gatewayinfo",
"body": {
"tunnel_support": true,
"device_info": {
"model": "UG63-L08GL-868M",
"region": "EU868",
"eui": "24E124FFFEF9A1E2",
"gateway_id": "24E124FFFEF9A1E2",
"firmware_version": "64.0.0.3-r1",
"hardware_version": "V1.1",
"cpu_tempeture": "53.3°",
"profile_version": "v1.1",
"tsl_version": "v1.0"
},
"network_info": {
"modem_version": "EG912UGLAAR03A09M08_01.200.01.200",
"cellular_ip": "-",
"imei": "869487060869384",
"iccid": "-",
"link": 1,
"cellular_status": 0,
"modem_status": 0,
"wan_type": 1,
"wan_status": 1,
"wan_ip": "192.168.45.196",
"wan_mac": "24:e1:24:f9:a1:e2"
}
}
}
Return Code List
| Code | Description |
|---|---|
| 200 | Success |
| 20101001 | Parameter Error |
| 20101002 | devEUI exist |
| 20101003 | Device number max |
| 20101004 | URI is null |