diff --git a/html/api_v0.php b/html/api_v0.php index 2431adb3c..879e14ded 100644 --- a/html/api_v0.php +++ b/html/api_v0.php @@ -35,6 +35,9 @@ $app->group('/api', function() use ($app) { $app->get('/:hostname/ports/:ifname', 'authToken', 'get_port_stats_by_port_hostname');//api/v0/devices/$hostname/ports/$ifName $app->get('/:hostname/ports/:ifname/:type', 'authToken', 'get_graph_by_port_hostname');//api/v0/devices/$hostname/ports/$ifName/$type }); + $app->group('/vlans', function() use ($app) { + $app->get('/:hostname', 'authToken', 'get_vlans');//api/v0/vlans/$hostname + }); $app->get('/devices', 'authToken', 'list_devices');//api/v0/devices $app->post('/devices', 'authToken', 'add_device');//api/v0/devices (json data needs to be passed) $app->delete('/devices/:hostname', 'authToken', 'del_device');//api/v0/devices (json data needs to be passed) diff --git a/html/includes/api_functions.inc.php b/html/includes/api_functions.inc.php index c728a6dd5..1d8665bcd 100644 --- a/html/includes/api_functions.inc.php +++ b/html/includes/api_functions.inc.php @@ -447,3 +447,32 @@ function del_device() $app->response->headers->set('Content-Type', 'application/json'); echo _json_encode($output); } + +function get_vlans() { + // This will list all vlans for a given device + global $config; + $app = \Slim\Slim::getInstance(); + $router = $app->router()->getCurrentRoute()->getParams(); + $hostname = $router['hostname']; + $status = "error"; + $code = 500; + if(empty($hostname)) { + $output = $output = array("status" => "error", "message" => "No hostname has been provided"); + } else { + require_once("../includes/functions.php"); + $device_id = ctype_digit($hostname) ? $hostname : getidbyname($hostname); + $device = null; + if ($device_id) { + // save the current details for returning to the client on successful delete + $device = device_by_id_cache($device_id); + } + if ($device) { + $vlans = dbFetchRows("SELECT vlan_vlan,vlan_domain,vlan_name,vlan_type,vlan_mtu FROM vlans WHERE `device_id` = ?", array($device_id)); + $output = array("status" => "ok", "vlans" => array($vlans)); + } else { + $code = 404; + $output = array("status" => "error", "Device $hostname not found"); + } + } + echo _json_encode($output); +} diff --git a/html/pages/api-docs.inc.php b/html/pages/api-docs.inc.php index 96888b1ce..f374a99ff 100644 --- a/html/pages/api-docs.inc.php +++ b/html/pages/api-docs.inc.php @@ -231,6 +231,25 @@ if ($_SESSION['userlevel'] == '10')
curl -X DELETE -H "Content-Type: application/json" -H "X-Auth-Token: 91c60e737e342c205be5bba8e2954d27" \
"https://librenms.example.com/api/v0/devices/localhost"curl -X DELETE -H "Content-Type: application/json" -H "X-Auth-Token: 91c60e737e342c205be5bba8e2954d27" \
"https://librenms.example.com/api/v0/vlans/localhost"