diff --git a/html/api_v0.php b/html/api_v0.php
index 883b4609d..3ca6dc0ad 100644
--- a/html/api_v0.php
+++ b/html/api_v0.php
@@ -48,6 +48,7 @@ $app->group(
$app->get('/:hostname/graphs', 'authToken', 'get_graphs')->name('get_graphs');
// api/v0/devices/$hostname/graphs
$app->get('/:hostname/ports', 'authToken', 'get_port_graphs')->name('get_port_graphs');
+ $app->get('/:hostname/port_stack', 'authToken', 'get_port_stack')->name('get_port_stack');
// api/v0/devices/$hostname/ports
$app->get('/:hostname/components', 'authToken', 'get_components')->name('get_components');
$app->post('/:hostname/components/:type', 'authToken', 'add_components')->name('add_components');
diff --git a/html/includes/api_functions.inc.php b/html/includes/api_functions.inc.php
index 834904fff..004138f16 100644
--- a/html/includes/api_functions.inc.php
+++ b/html/includes/api_functions.inc.php
@@ -721,6 +721,27 @@ function get_port_graphs() {
}
+function get_port_stack() {
+ global $config;
+ $app = \Slim\Slim::getInstance();
+ $router = $app->router()->getCurrentRoute()->getParams();
+ $hostname = $router['hostname'];
+
+ // use hostname as device_id if it's all digits
+ $device_id = ctype_digit($hostname) ? $hostname : getidbyname($hostname);
+ $mappings = dbFetchRows("SELECT * FROM `ports_stack` WHERE `device_id` = ? AND `ifStackStatus` = 'active' ORDER BY `port_id_high` ASC", array($device_id));
+ $total_mappings = count($mappings);
+ $output = array(
+ 'status' => 'ok',
+ 'err-msg' => '',
+ 'count' => $total_mappings,
+ 'mappings' => $mappings,
+ );
+ $app->response->setStatus('200');
+ $app->response->headers->set('Content-Type', 'application/json');
+ echo _json_encode($output);
+}
+
function list_alert_rules() {
global $config;
$app = \Slim\Slim::getInstance();