Devices
List devices
Get a list of devices.
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-05-25T10:54:10.582786586-04:00",
    "data": [
        {
            "id": "21",
            "name": "Device Foo",
            "created": "2016-05-25T10:43:24.746428-04:00",
            "updated": "2016-05-25T10:45:22.926267-04:00",
            "locked": false,
            "user_id": "1",
            "picture_id": "21",
            "tags": [],
            "description": ""
        },
        {
            "id": "1",
            "name": "Device Bar",
            "created": "2016-05-24T12:35:21.917593-04:00",
            "updated": "2016-05-24T14:05:48.952095-04:00",
            "locked": false,
            "user_id": "1",
            "picture_id": "4",
            "tags": [],
            "description": ""
        },
        {
            "id": "12",
            "name": "Device Baz",
            "created": "2016-05-24T13:22:21.998464-04:00",
            "updated": "2016-05-25T10:25:52.055819-04:00",
            "locked": false,
            "user_id": "1",
            "picture_id": "19",
            "tags": [
                "one"
            ],
            "description": ""
        }
    ],
    "links": {
        "current": 1,
        "first": 1,
        "last": 1,
        "limit": 10,
        "total": 3
    }
}
Get a device
Get a device.
Response
200 OK
{
    "timestamp": "2016-05-25T10:56:49.279371686-04:00",
    "data": {
        "id": "12",
        "name": "Device Baz",
        "created": "2016-05-24T13:22:21.998464-04:00",
        "updated": "2016-05-25T10:25:52.055819-04:00",
        "locked": false,
        "user_id": "1",
        "attachments_dir": "/usr/cdrouter-data/attachments/12",
        "picture_id": "19",
        "tags": [
            "one"
        ],
        "default_ip": "192.168.178.1",
        "default_login": "qacafe",
        "default_password": "qacafe1234",
        "default_ssid": "qacafe",
        "location": "John's desk",
        "device_category": "wireless router",
        "manufacturer": "Foo Co",
        "manufacturer_oui": "",
        "model_name": "Foo-123",
        "model_number": "123",
        "description": "Foo Co Foo 123",
        "product_class": "",
        "serial_number": "0005678",
        "hardware_version": "1",
        "software_version": "",
        "provisioning_code": "",
        "note": "This is a wifi gateway with a DSL WAN port."
    }
}
Response
404 Not Found
{
    "error": "no such device"
}
Create a device
Create a new device.
Example
{
    "name": "Device Baz2",
    "user_id": "1",
    "tags": [
        "one",
        "three",
        "two"
    ],
    "default_ip": "192.168.1.1",
    "default_login": "admin",
    "default_password": "admin",
    "default_ssid": "qacafe",
    "location": "Rack 7",
    "description": "Baz2 router",
    "product_class": "",
    "serial_number": "",
    "hardware_version": "",
    "software_version": "",
    "provisioning_code": "",
    "note": ""
}
Response
200 OK
{
    "timestamp": "2016-05-25T10:58:39.816039365-04:00",
    "data": {
        "id": "22",
        "name": "Device Baz2",
        "created": "2016-05-25T10:58:39.792938857-04:00",
        "updated": "2016-05-25T10:58:39.793886912-04:00",
        "locked": false,
        "user_id": "1",
        "attachments_dir": "/usr/cdrouter-data/attachments/22",
        "picture_id": "0",
        "tags": [
            "one",
            "three",
            "two"
        ],
        "default_ip": "192.168.1.1",
        "default_login": "admin",
        "default_password": "admin",
        "default_ssid": "qacafe",
        "location": "Rack 7",
        "device_category": "",
        "manufacturer": "",
        "manufacturer_oui": "",
        "model_name": "",
        "model_number": "",
        "description": "Baz2 router",
        "product_class": "",
        "serial_number": "",
        "hardware_version": "",
        "software_version": "",
        "provisioning_code": "",
        "note": ""
    }
}
Edit a device
Edit a device.
Example
PATCH /api/v1/devices/123/
{
    "name": "Device Baz22",
    "user_id": "1",
    "tags": [
        "one",
        "three",
        "two"
    ],
    "default_ip": "192.168.1.1",
    "default_login": "admin",
    "default_password": "admin",
    "default_ssid": "qacafe",
    "location": "Rack 7",
    "description": "Baz2 router",
    "product_class": "",
    "serial_number": "",
    "hardware_version": "",
    "software_version": "",
    "provisioning_code": "",
    "note": ""
}
Response
200 OK
{
    "timestamp": "2016-05-25T10:58:39.816039365-04:00",
    "data": {
        "id": "22",
        "name": "Device Baz22",
        "created": "2016-05-25T10:58:39.792938857-04:00",
        "updated": "2016-05-25T10:58:39.793886912-04:00",
        "locked": false,
        "user_id": "1",
        "attachments_dir": "/usr/cdrouter-data/attachments/22",
        "picture_id": "0",
        "tags": [
            "one",
            "three",
            "two"
        ],
        "default_ip": "192.168.1.1",
        "default_login": "admin",
        "default_password": "admin",
        "default_ssid": "qacafe",
        "location": "Rack 7",
        "device_category": "",
        "manufacturer": "",
        "manufacturer_oui": "",
        "model_name": "",
        "model_number": "",
        "description": "Baz2 router",
        "product_class": "",
        "serial_number": "",
        "hardware_version": "",
        "software_version": "",
        "provisioning_code": "",
        "note": ""
    }
}
Delete a device
Delete a device.
Response
204 No Content
Lock a device
Lock a device. Locking a device prevents it from being modified or deleted until it is unlocked.
Response
200 OK
{
  "timestamp": "2023-03-29T15:42:10.757821652-04:00",
  "data": {
    "id": "1",
    "name": "Device Foo",
    "created": "2019-05-09T09:28:41.231124-04:00",
    "updated": "2023-03-29T15:42:10.753951602-04:00",
    "locked": true,
    "user_id": "1",
    "attachments_dir": "/usr/cdrouter-data/attachments/1",
    "picture_id": "5",
    "tags": [],
    "default_ip": "192.168.1.1",
    "default_login": "admin",
    "default_password": "qacafe123",
    "default_ssid": "",
    "location": "foo.lan",
    "device_category": "",
    "manufacturer": "",
    "manufacturer_oui": "",
    "model_name": "",
    "model_number": "",
    "description": "foo bar",
    "product_class": "",
    "serial_number": "",
    "hardware_version": "",
    "software_version": "",
    "provisioning_code": "",
    "note": "",
    "insecure_mgmt_url": false,
    "mgmt_url": "http://192.168.1.1",
    "add_mgmt_addr": true,
    "mgmt_interface": "wlo1",
    "mgmt_addr": "192.168.1.209/24",
    "power_on_cmd": "",
    "power_off_cmd": ""
  }
}
Unlock a device
Unlock a device. Unlocking a locked device allows it to be modified or deleted once again.
Response
200 OK
{
  "timestamp": "2023-03-29T15:42:10.757821652-04:00",
  "data": {
    "id": "1",
    "name": "Device Foo",
    "created": "2019-05-09T09:28:41.231124-04:00",
    "updated": "2023-03-29T15:42:10.753951602-04:00",
    "locked": false,
    "user_id": "1",
    "attachments_dir": "/usr/cdrouter-data/attachments/1",
    "picture_id": "5",
    "tags": [],
    "default_ip": "192.168.1.1",
    "default_login": "admin",
    "default_password": "qacafe123",
    "default_ssid": "",
    "location": "foo.lan",
    "device_category": "",
    "manufacturer": "",
    "manufacturer_oui": "",
    "model_name": "",
    "model_number": "",
    "description": "foo bar",
    "product_class": "",
    "serial_number": "",
    "hardware_version": "",
    "software_version": "",
    "provisioning_code": "",
    "note": "",
    "insecure_mgmt_url": false,
    "mgmt_url": "http://192.168.1.1",
    "add_mgmt_addr": true,
    "mgmt_interface": "wlo1",
    "mgmt_addr": "192.168.1.209/24",
    "power_on_cmd": "",
    "power_off_cmd": ""
  }
}
Get a device’s shares
Get shares for a device.
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 device’s shares
Edit shares for a device.
Example
PATCH /api/v1/devices/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 device
Export a device.
Response
200 OK
Content-Type: application/x-gzip
Content-Disposition: inline; filename="{name}.gz"
Get a device’s connection
Get information on proxy connection to device’s management interface.
Response
200 OK
{
    "timestamp": "2016-04-15T10:00:22.32676552-04:00",
    "data": {
        "proxy_port": 49870,
        "proxy_https": 49872
    }
}
Connect to a device
Open proxy connection to a device’s management interface.
Response
200 OK
{
    "timestamp": "2016-04-15T10:00:22.32676552-04:00",
    "data": {
        "proxy_port": 49870,
        "proxy_https": 49872
    }
}
Disconnect from a device
Close proxy connection to a device’s management interface.
Response
204 No Content
Power on a device
Power on a device using it’s power on command.
Response
200 OK
{
    "timestamp": "2016-04-15T10:00:22.32676552-04:00",
    "data": {
        "output": "<output-from-command...>"
    }
}
Power off a device
This endpoint was introduced in CDRouter 10.3 and is not available in previous releases of CDRouter.
Power off a device using it’s power off command.
Response
200 OK
{
    "timestamp": "2016-04-15T10:00:22.32676552-04:00",
    "data": {
        "output": "<output-from-command...>"
    }
}
Bulk export devices
Bulk export a set of devices.
URL Parameters
| Name | Description | 
|---|---|
| bulk | string(required) Must beexport | 
| ids | string(required) Comma-separated device IDs to export | 
Example
GET /api/v1/devices/?bulk=export&ids=123,456,789
Response
200 OK
Content-Type: application/x-gzip
Content-Disposition: inline; filename="devices-{timestamp}.gz"
Bulk copy devices
Bulk copy a set of devices.
Example
POST /api/v1/devices/?bulk=copy
{
    "devices": [
        {"id": "1"},
        {"id": "12"}
    ]
}
Response
200 OK
Returns devices array containing new devices copied from input IDs.
{
    "timestamp": "2016-05-25T11:01:56.470162552-04:00",
    "data": [
        {
            "id": "23",
            "name": "Device Foo (copy 1)",
            "created": "2016-05-24T12:35:21.917593-04:00",
            "updated": "2016-05-25T11:01:56.438313518-04:00",
            "locked": false,
            "user_id": "1",
            "attachments_dir": "/usr/cdrouter-data/attachments/23",
            "picture_id": "22",
            "tags": [],
            "default_ip": "192.168.1.1",
            "default_login": "admin",
            "default_password": "admin",
            "default_ssid": "qacafe",
            "location": "Rack 7",
            "device_category": "",
            "manufacturer": "",
            "manufacturer_oui": "",
            "model_name": "",
            "model_number": "",
            "description": "",
            "product_class": "",
            "serial_number": "",
            "hardware_version": "3.4",
            "software_version": "",
            "provisioning_code": "",
            "note": ""
        },
        {
            "id": "24",
            "name": "Device Bar (copy 1)",
            "created": "2016-05-24T13:22:21.998464-04:00",
            "updated": "2016-05-25T11:01:56.447127497-04:00",
            "locked": false,
            "user_id": "1",
            "attachments_dir": "/usr/cdrouter-data/attachments/24",
            "picture_id": "27",
            "tags": [
                "one"
            ],
            "default_ip": "192.168.178.1",
            "default_login": "qacafe",
            "default_password": "qacafe1234",
            "default_ssid": "qacafe",
            "location": "John's desk",
            "device_category": "wireless router",
            "manufacturer": "Bar Co",
            "manufacturer_oui": "",
            "model_name": "Bar",
            "model_number": "123",
            "description": "Bar Co 123",
            "product_class": "",
            "serial_number": "0005678",
            "hardware_version": "1",
            "software_version": "",
            "provisioning_code": "",
            "note": "This is a wifi gateway with a DSL WAN port."
        }
    ]
}
Bulk edit devices
Bulk edit a set of devices.
URL Parameters
| Name | Description | 
|---|---|
| bulk | string(required) Must beedit | 
| filter | string(optional) See Filtering | 
| all | boolean(optional) Iftrue, apply edits to all devices. | 
Example
Bulk edit devices 5 and 286, setting their user_id field to 3
and tags field to ["foo", "bar", "baz"].
POST /api/v1/devices/?bulk=edit
{
    "devices": [
        {"id": "5"},
        {"id": "286"}
    ],
    "fields": {
        "user_id": "3",
        "tags": [
            "foo",
            "bar",
            "baz"
        ]
    }
}
Bulk edit devices matching filters user_id=3 and software_version=1.2,
setting their tags field to ["1.2"].
POST /api/v1/devices/?bulk=edit&filter=user_id=3&filter=software_version=1.2
{
    "fields": {
        "tags": [
            "1.2"
        ]
    }
}
Bulk edit all devices, setting their user_id field to 3.
POST /api/v1/devices/?bulk=edit&all=true
{
    "fields": {
        "user_id": "3"
    }
}
Response
204 No Content
Bulk delete devices
Bulk delete a set of devices.
URL Parameters
| Name | Description | 
|---|---|
| bulk | string(required) Must bedelete | 
| filter | string(optional) See Filtering | 
| all | boolean(optional) Iftrue, delete all devices. | 
Example
Bulk delete devices 5 and 286.
POST /api/v1/devices/?bulk=delete
{
    "devices": [
        {"id": "5"},
        {"id": "286"}
    ]
}
Bulk delete devices matching filters user_id=3 and software_version=1.2.
POST /api/v1/devices/?bulk=delete&filter=user_id=3&filter=software_version=1.2
Bulk delete all devices.
POST /api/v1/devices/?bulk=delete&all=true
Response
204 No Content
List a device’s attachments
Get a list of a device’s attachments.
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-05-25T11:13:22.072227509-04:00",
    "data": [
        {
            "id": "16",
            "name": "32145084-2-440-back-4.gif",
            "created": "2016-05-25T09:39:39.801002-04:00",
            "updated": "2016-05-25T09:39:39.801002-04:00",
            "size": 76314,
            "device_id": "1"
        },
        {
            "id": "4",
            "name": "front20131010123406.png",
            "created": "2016-05-24T12:42:10.811008-04:00",
            "updated": "2016-05-24T12:42:10.811008-04:00",
            "size": 64852,
            "device_id": "1"
        },
        {
            "id": "17",
            "name": "error.log",
            "created": "2016-05-25T09:50:29.338772-04:00",
            "updated": "2016-05-25T09:50:29.338772-04:00",
            "size": 14,
            "device_id": "1"
        },
        {
            "id": "18",
            "name": "log_2.txt",
            "created": "2016-05-25T09:59:58.492047-04:00",
            "updated": "2016-05-25T09:59:58.492047-04:00",
            "size": 4845,
            "device_id": "1"
        }
    ],
    "links": {
        "current": 1,
        "first": 1,
        "last": 1,
        "limit": 13,
        "total": 13
    }
}
Get a device’s attachment
Get a device’s attachment.
Response
200 OK
{
    "timestamp": "2016-05-25T11:14:22.581326968-04:00",
    "data": {
        "id": "16",
        "name": "32145084-2-440-back-4.gif",
        "created": "2016-05-25T09:39:39.801002-04:00",
        "updated": "2016-05-25T09:39:39.801002-04:00",
        "size": 76314,
        "path": "/usr/cdrouter-data/attachments/1/32145084-2-440-back-4.gif",
        "device_id": "1"
    }
}
Response
404 Not Found
{
    "error": "no such attachment"
}
Create a device attachment
Add an attachment to a device.
Example
Request must have a Content-Type header of multipart/form-data.  The
request body must have a form key named file with a filename
parameter.  The contents of the form key must be the file attachment.
POST /api/v1/devices/1/attachments/
Content-Type: multipart/form-data; boundary=----CBacgHmUVPwTniJL
----CBacgHmUVPwTniJL
Content-Disposition: form-data; name="file"; filename="image.png"
Content-Type: image/png
<attachment contents...>
----CBacgHmUVPwTniJL--
Response
200 OK
{
    "timestamp": "2016-05-25T11:17:15.240904436-04:00",
    "data": {
        "id": "28",
        "name": "image.png",
        "created": "2016-05-25T11:17:15.220010745-04:00",
        "updated": "2016-05-25T11:17:15.220010745-04:00",
        "size": 734546,
        "path": "/usr/cdrouter-data/attachments/1/image.png",
        "device_id": "1"
    }
}
Download a device’s attachment
Download a device’s attachment.
Response
200 OK
Content-Disposition: inline; filename="{name}"
Response
404 Not Found
{
    "error": "no such attachment"
}
Download thumbnail of a device’s attachment
Download thumbnail of a device’s attachment. Attachment must be a GIF, JPEG or PNG image.
URL Parameters
| Name | Description | 
|---|---|
| format | string(required) Must bethumbnail | 
| size | integer(optional) Thumbnail height Default:25 | 
Response
200 OK
Content-Disposition: inline; filename="{name}-thumbnail-{size}px"
Response
404 Not Found
{
    "error": "no such attachment"
}
Edit a device’s attachment
Edit a device’s attachment.
Example
PATCH /api/v1/devices/22/attachments/16/
{
    "name": "front-image.png"
}
Response
200 OK
{
    "timestamp": "2016-05-25T11:14:22.581326968-04:00",
    "data": {
        "id": "16",
        "name": "front-image.png",
        "created": "2016-05-25T09:39:39.801002-04:00",
        "updated": "2016-05-25T09:39:39.801002-04:00",
        "size": 76314,
        "path": "/usr/cdrouter-data/attachments/1/32145084-2-440-back-4.gif",
        "device_id": "1"
    }
}
Delete a device’s attachment
Delete a device’s attachment.
Response
204 No Content