Configs
List configs
Get a list of configs.
URL Parameters
| Name | Description |
|---|---|
page |
integer (optional) See Paging |
limit |
integer (optional) See Paging |
detailed |
boolean (optional) See Summary / Detailed Representations |
filter |
string (optional) See Filtering |
sort |
string (optional) See Sorting |
Response
200 OK
{
"timestamp": "2016-04-15T10:19:06.600730366-04:00",
"data": [
{
"id": "162",
"name": "acs.conf",
"description": "",
"created": "2015-10-14T10:56:22.525869-04:00",
"updated": "2016-04-13T15:07:44.342508-04:00",
"locked": false,
"user_id": "1",
"tags": [],
"nta_platform": "NTA3000"
},
{
"id": "127",
"name": "default.conf",
"description": "default config",
"created": "2013-07-30T12:40:19-04:00",
"updated": "2016-04-13T15:07:44.300477-04:00",
"locked": false,
"user_id": "1",
"tags": [
"bar",
"baz"
],
"nta_platform": "NTA3000"
},
{
"id": "126",
"name": "all.conf",
"description": "all",
"created": "2013-07-30T12:40:55-04:00",
"updated": "2016-04-13T15:07:44.327596-04:00",
"locked": false,
"user_id": "1",
"tags": [
"bar",
"foo"
],
"nta_platform": "NTA3000"
}
],
"links": {
"current": 1,
"first": 1,
"last": 10,
"limit": 3,
"next": 2,
"total": 30
}
}
Get a new config
Get output of cdrouter-cli -new-config.
Response
200 OK
{
"timestamp": "2016-04-15T11:17:56.930163989-04:00",
"data": "SECTION \"About\" {\n\n # Cable/DSL Router Test Suite\n..."
}
Get a config
Get a config.
Response
200 OK
{
"timestamp": "2016-04-15T10:21:05.999909819-04:00",
"data": {
"id": "162",
"name": "acs.conf",
"description": "",
"created": "2015-10-14T10:56:22.525869-04:00",
"updated": "2016-04-13T15:07:44.342508-04:00",
"locked": false,
"contents": "testvar lanIp 192.168.1.2\ntestvar wanMode DHCP\n",
"user_id": "1",
"tags": [],
"note": "",
"interfaces": [
{
"name": "lan",
"value": "eth1",
"is_wireless": false,
"is_ics": false
},
{
"name": "wan",
"value": "eth2",
"is_wireless": false,
"is_ics": false
}
],
"nta_platform": "NTA3000"
}
}
Response
404 Not Found
{
"error": "no such config"
}
Get a config as plaintext
Get a config as plaintext.
Response
200 OK
Content-Type: text/plain
Content-Disposition: inline; filename="{name}.txt"
testvar lanIp 192.168.1.1
testvar wanMode PPPoE
Response
404 Not Found
{
"error": "no such config"
}
Create a config
Create a new config.
Example
{
"contents": "testvar lanIp 192.168.1.1\ntestvar wanMode PPPoE\n",
"name": "new config",
"description": "my new config",
"tags": [
"one",
"two",
"three"
]
}
Response
200 OK
{
"timestamp": "2016-04-15T10:22:57.215100915-04:00",
"data": {
"id": "1017",
"name": "new config",
"description": "my new config",
"created": "2016-04-15T10:22:57.17705281-04:00",
"updated": "2016-04-15T10:22:57.17705281-04:00",
"locked": false,
"contents": "testvar lanIp 192.168.1.1\ntestvar wanMode PPPoE\n",
"user_id": "1",
"tags": [
"one",
"three",
"two"
],
"note": "",
"interfaces": [
{
"name": "lan",
"value": "eth1",
"is_wireless": false,
"is_ics": false
},
{
"name": "wan",
"value": "eth2",
"is_wireless": false,
"is_ics": false
}
],
"nta_platform": "NTA3000"
}
}
Edit a config
Edit a config.
Example
PATCH /api/v1/configs/123/
{
"name": "new config",
"description": "my not so new config",
"contents": "testvar lanIp 192.168.1.1\ntestvar wanMode PPPoE\n",
"user_id": "1",
"tags": [
"one",
"three",
"two"
]
}
Response
200 OK
{
"timestamp": "2016-04-15T10:28:53.440760029-04:00",
"data": {
"id": "1017",
"name": "new config",
"description": "my not so new config",
"created": "2016-04-15T10:22:57.177053-04:00",
"updated": "2016-04-15T10:28:53.396094424-04:00",
"locked": false,
"contents": "testvar lanIp 192.168.1.1\ntestvar wanMode PPPoE\n",
"user_id": "1",
"tags": [
"one",
"three",
"two"
],
"note": "",
"interfaces": [
{
"name": "lan",
"value": "eth1",
"is_wireless": false,
"is_ics": false
},
{
"name": "wan",
"value": "eth2",
"is_wireless": false,
"is_ics": false
}
],
"nta_platform": "NTA3000"
}
}
Delete a config
Delete a config.
Response
204 No Content
Lock a config
Lock a config. Locking a config prevents it from being modified or deleted until it is unlocked.
Response
200 OK
{
"timestamp": "2023-03-29T15:38:27.983437345-04:00",
"data": {
"id": "3",
"name": "acs.conf",
"description": "foo bar",
"created": "2020-07-15T15:37:30.907349-04:00",
"updated": "2022-11-16T09:01:24.342727-05:00",
"locked": true,
"contents": "SECTION \"About\" {\n\n # Cable/DSL...",
"user_id": "1",
"tags": [
"lan-eth1",
"wan-eth2"
],
"note": ""
}
}
Unlock a config
Unlock a config. Unlocking a locked config allows it to be modified or deleted once again.
Response
200 OK
{
"timestamp": "2023-03-29T15:38:27.983437345-04:00",
"data": {
"id": "3",
"name": "acs.conf",
"description": "foo bar",
"created": "2020-07-15T15:37:30.907349-04:00",
"updated": "2022-11-16T09:01:24.342727-05:00",
"locked": false,
"contents": "SECTION \"About\" {\n\n # Cable/DSL...",
"user_id": "1",
"tags": [
"lan-eth1",
"wan-eth2"
],
"note": ""
}
}
Get a config’s shares
Get shares for a config.
Response
200 OK
{
"timestamp": "2016-04-15T10:00:22.32676552-04:00",
"data": [
{
"user_id": "307",
"read": true,
"write": false,
"execute": false
},
{
"user_id": "309",
"read": true,
"write": false,
"execute": false
}
]
}
Edit a config’s shares
Edit shares for a config.
Example
PATCH /api/v1/configs/123/shares
{
"user_ids": [
309,
307
]
}
Response
200 OK
{
"timestamp": "2016-04-15T10:00:22.32676552-04:00",
"data": [
{
"user_id": "309",
"read": true,
"write": false,
"execute": false
},
{
"user_id": "307",
"read": true,
"write": false,
"execute": false
}
]
}
Export a config
Export a config.
Response
200 OK
Content-Type: application/x-gzip
Content-Disposition: inline; filename="{name}.gz"
Check a config
Process config contents with cdrouter-cli -check-config.
Example
POST /api/v1/configs/?process=check
{
"contents": "testvar wanMode invalid\n"
}
Response
200 OK
{
"timestamp": "2016-04-15T10:50:35.855609092-04:00",
"data": {
"errors": [
{
"lines": [
"1"
],
"error": "testvar 'wanMode' with value 'invalid' is invalid:\nBad value 'invalid', must be 'static', 'DHCP', 'PPPoE', 'PPPoA', 'PPTP', 'L2TP', 'dslite', 'none'"
}
]
}
}
Upgrade a config
Process config contents with cdrouter-cli -upgrade-config.
URL Parameters
| Name | Description |
|---|---|
process |
string (required) Must be upgrade |
migrate |
boolean (optional) If true, also migrate config to current NTA platform. |
Example
Upgrade (and migrate) the a config. The nta_platform field in the
request body is only necessary when ?migrate=true. When
?migrate=true in the request, the response body’s
data.nta_platform field gives the config’s new NTA platform.
POST /api/v1/configs/?process=upgrade&migrate=true
{
"contents": "testvar wanMode DHCP\n",
"nta_platform": "NTA3000"
}
Response
200 OK
{
"timestamp": "2016-04-15T10:54:43.424425881-04:00",
"data": {
"success": true,
"output": "SECTION \"About\" {\n\n # Cable/DSL Router Test Suite\n # \n...",
"nta_platform": "NTA3000"
}
}
Get a config’s networks
Process config contents with cdrouter-cli -print-networks-json.
Example
POST /api/v1/configs/?process=networks
{
"contents": "testvar wanMode DHCP\n"
}
Response
200 OK
{
"timestamp": "2016-04-15T10:56:41.604750532-04:00",
"data": {
"name": "DUT",
"type": "root",
"side": "root",
"children": [
{
"name": "lan (enp6s5f0)",
"type": "ethernet-interface",
"side": "lan",
"title": "lanMode: DHCP"
},
{
"name": "wan (enp6s5f1)",
"type": "ethernet-interface",
"side": "wan",
"title": "wanMode: static | VLAN: 100 | TR-069, Multicast, RADIUS interface",
"children": [
{
"name": "RADIUS Server (3.3.3.44)",
"type": "address",
"side": "wan",
"title": "wanRadiusIp"
},
{
"name": "ISP's WAN IP Address/Netmask",
"type": "network",
"side": "wan",
"title": "wanIspIp/wanIspMask (202.254.1.1/24)",
"children": [
{
"name": "Free ISP Address (202.254.1.3)",
"type": "address",
"side": "wan",
"title": "wanIspNextIp"
},
{
"name": "ISP's WAN IP Address (202.254.1.1)",
"type": "address",
"side": "wan",
"title": "wanIspIp"
},
{
"name": "Assigned WAN IP Address (202.254.1.2)",
"type": "address",
"side": "wan",
"title": "wanIspAssignIp"
},
{
"name": "DHCP Pool-DHCP Pool End (202.254.1.11-202.254.1.20)",
"type": "address",
"side": "wan",
"title": "dhcpClientStart-dhcpClientEnd"
}
]
},
...
]
}
]
}
}
Get a config’s interfaces
Process config contents with cdrouter-cli -print-interfaces.
Example
POST /api/v1/configs/?process=interfaces
{
"contents": "testvar lanInterface eth1\ntestvar wanInterface wifi1-ax24\n"
}
Response
200 OK
{
"timestamp": "2022-02-14T10:37:07.88200925-05:00",
"data": [
{
"name": "lan",
"value": "eth1",
"is_wireless": false,
"is_ics": false
},
{
"name": "wan",
"value": "wifi1-ax24",
"is_wireless": true,
"is_ics": false
}
]
}
Bulk export configs
Bulk export a set of configs.
URL Parameters
| Name | Description |
|---|---|
bulk |
string (required) Must be export |
ids |
string (required) Comma-separated config IDs to export |
Example
GET /api/v1/configs/?bulk=export&ids=123,456,789
Response
200 OK
Content-Type: application/x-gzip
Content-Disposition: inline; filename="configs-{timestamp}.gz"
Bulk copy configs
Bulk copy a set of configs.
Example
POST /api/v1/configs/?bulk=copy
{
"configs": [
{"id": "162"},
{"id": "127"}
]
}
Response
200 OK
Returns configs array containing new configs copied from input IDs.
{
"timestamp": "2016-04-15T10:31:43.137280238-04:00",
"data": [
{
"id": "1018",
"name": "Config A (copy 1).conf",
"description": "",
"created": "2015-10-14T10:56:22.525869-04:00",
"updated": "2016-04-13T15:07:44.342508-04:00",
"locked": false,
"contents": "testvar lanIp 192.168.1.1\ntestvar wanMode PPPoE\n",
"user_id": "1",
"tags": []
},
{
"id": "1019",
"name": "Config B (copy 1).conf",
"description": "",
"created": "2013-07-30T12:40:19-04:00",
"updated": "2016-04-13T15:07:44.300477-04:00",
"locked": false,
"contents": "testvar lanIp 192.168.1.2\ntestvar wanMode DHCP\n",
"user_id": "1",
"tags": [
"foo"
]
}
]
}
Bulk edit configs
Bulk edit a set of configs.
URL Parameters
| Name | Description |
|---|---|
bulk |
string (required) Must be edit |
filter |
string (optional) See Filtering |
all |
boolean (optional) If true, apply edits to all configs. |
Example
Bulk edit configs 5 and 286, setting their user_id field to 3
and tags field to ["foo", "bar", "baz"]. Also, bulk set the
testvar ipv6FirewallUdpOpenPorts to 8080, delete the testvar
l2tpPassword from testvar group lan2, create the testvar group
wan2 and delete the testvar group lan3.
The action field for each object in the testvars array must be
set-testvar, delete-testvar, create-group or delete-group. If
not specified, action defaults to set-testvar.
POST /api/v1/configs/?bulk=edit
{
"configs": [
{
"id": "5"
},
{
"id": "286"
}
],
"fields": {
"user_id": "3",
"tags": [
"foo",
"bar",
"baz"
]
},
"testvars": [
{
"name": "ipv6FirewallUdpOpenPorts",
"value": "8080",
"action": "set-testvar"
},
{
"group": "lan2",
"name": "l2tpPassword",
"action": "delete-testvar"
},
{
"group": "wan2",
"action": "create-group"
},
{
"group": "lan3",
"action": "delete-group"
}
]
}
Bulk edit configs matching filters user_id=3 and tags@>{working},
setting their tags field to ["not working"].
POST /api/v1/configs/?bulk=edit&filter=user_id=3&filter=tags@>{working}
{
"fields": {
"tags": [
"not working"
]
}
}
Bulk edit configs matching filters tags@>{vlan,l2tp}, setting their
testvars l2tpPassword to 123456 and wanVlanId to 123.
POST /api/v1/configs/?bulk=edit&filter=tags@>{vlan,l2tp}
{
"testvars": [
{
"name": "l2tpPassword",
"value": "123456",
"action": "set-testvar"
},
{
"name": "wanVlanId",
"value": "123",
"action": "set-testvar"
}
]
}
Bulk edit all configs, setting their user_id field to 3.
POST /api/v1/configs/?bulk=edit&all=true
{
"fields": {
"user_id": "3"
}
}
Response
204 No Content
Bulk upgrade configs
Bulk upgrade a set of configs.
URL Parameters
| Name | Description |
|---|---|
bulk |
string (required) Must be upgrade |
filter |
string (optional) See Filtering |
all |
boolean (optional) If true, upgrade all configs. |
migrate |
boolean (optional) If true, also migrate configs to current NTA platform. |
Example
Bulk upgrade (and migrate) configs 5 and 286.
POST /api/v1/configs/?bulk=upgrade&migrate=true
{
"configs": [
{
"id": "5"
},
{
"id": "286"
}
]
}
Bulk upgrade configs matching filters user_id=3 and tags@>{working}.
POST /api/v1/configs/?bulk=upgrade&filter=user_id=3&filter=tags@>{working}
Bulk upgrade configs matching filters tags@>{vlan,l2tp}.
POST /api/v1/configs/?bulk=upgrade&filter=tags@>{vlan,l2tp}
Bulk upgrade all configs.
POST /api/v1/configs/?bulk=upgrade&all=true
Response
204 No Content
Bulk delete configs
Bulk delete a set of configs.
URL Parameters
| Name | Description |
|---|---|
bulk |
string (required) Must be delete |
filter |
string (optional) See Filtering |
all |
boolean (optional) If true, delete all configs. |
Example
Bulk delete configs 5 and 286.
POST /api/v1/configs/?bulk=delete
{
"configs": [
{"id": "5"},
{"id": "286"}
]
}
Bulk delete configs matching filters user_id=3 and tags@>{not working}.
POST /api/v1/configs/?bulk=delete&filter=user_id=3&filter=tags@>{not working}
Bulk delete all configs.
POST /api/v1/configs/?bulk=delete&all=true
Response
204 No Content
List a config’s testvars
Get a list of a config’s testvars.
Response
200 OK
{
"timestamp": "2016-04-15T11:00:48.368133838-04:00",
"data": [
{
"group": "main",
"name": "ipv6FirewallUdpOpenPorts",
"value": "",
"default": "",
"isdefault": true,
"line": 0
},
{
"group": "main",
"name": "l2tpPassword",
"value": "qacafe123",
"default": "qacafe123",
"isdefault": true,
"line": 0
},
{
"group": "main",
"name": "wanInnerVlanId",
"value": "",
"default": "",
"isdefault": true,
"line": 0
}
]
}
Get a config’s testvar
Get a testvar from a config.
URL Parameters
| Name | Description |
|---|---|
group |
string (optional) Testvar group to use. Default: main |
Example
GET /api/v1/configs/123/testvars/lanIp/?group=lan2
Response
200 OK
{
"timestamp": "2016-05-11T09:23:12.439841033-04:00",
"data": {
"group": "lan2",
"name": "lanIp",
"value": "192.168.2.1",
"default": "192.168.2.1",
"isdefault": true,
"line": 0
}
}
Edit a config’s testvar
Edit a testvar in a config.
URL Parameters
| Name | Description |
|---|---|
group |
string (optional) Testvar group to use. Default: main |
Example
PATCH /api/v1/configs/123/testvars/lanIp/?group=lan2
{
"value": "192.168.2.4"
}
Response
200 OK
{
"timestamp": "2016-05-11T09:23:12.439841033-04:00",
"data": {
"group": "lan2",
"name": "lanIp",
"value": "192.168.2.4",
"default": "192.168.2.1",
"isdefault": false,
"line": 1558
}
}
Delete a config’s testvar
Delete a testvar in a config. Deleting a testvar unsets any explicitly configured value for it in the config.
URL Parameters
| Name | Description |
|---|---|
group |
string (optional) Testvar group to use. Default: main |
Example
DELETE /api/v1/configs/123/testvars/lanIp/?group=lan2
Response
204 No Content
Create a testvar group within a config
Create a testvar group within in a config.
URL Parameters
| Name | Description |
|---|---|
group |
string Testvar group to use. Default: main |
Example
POST /api/v1/configs/123/testvars/?group=lan2
Response
204 No Content
Delete a testvar group within a config
Delete a testvar group within in a config.
URL Parameters
| Name | Description |
|---|---|
group |
string Testvar group to use. Default: main |
Example
DELETE /api/v1/configs/123/testvars/?group=lan2
Response
204 No Content
Bulk edit a config’s testvars
Bulk edit a config’s testvars.
URL Parameters
| Name | Description |
|---|---|
bulk |
string (required) Must be edit |
Example
The action field for each object in the request body must be
set-testvar, delete-testvar, create-group or delete-group. If
not specified, action defaults to set-testvar.
POST /api/v1/configs/123/testvars/?bulk=edit
[
{
"group": "main",
"name": "ipv6FirewallUdpOpenPorts",
"value": "8080",
"action": "set-testvar"
},
{
"group": "main",
"name": "l2tpPassword",
"value": "321efac",
"action": "set-testvar"
},
{
"group": "main",
"name": "wanInnerVlanId",
"value": "100",
"action": "set-testvar"
}
]
Response
200 OK
{
"timestamp": "2016-04-15T11:00:48.368133838-04:00",
"data": [
{
"group": "main",
"name": "ipv6FirewallUdpOpenPorts",
"value": "8080",
"default": "",
"isdefault": false,
"line": 123
},
{
"group": "main",
"name": "l2tpPassword",
"value": "efac321",
"default": "qacafe123",
"isdefault": false,
"line": 456
},
{
"group": "main",
"name": "wanInnerVlanId",
"value": "100",
"default": "",
"isdefault": false,
"line": 789
},
...
]
}