diff --git a/doc/API/API-Docs.md b/doc/API/API-Docs.md index 39bb0bcd8..17b34e753 100644 --- a/doc/API/API-Docs.md +++ b/doc/API/API-Docs.md @@ -25,6 +25,7 @@ - [`alerts`](#api-alerts) - [`get_alert`](#api-route-12) - [`ack_alert`](#api-route-13) + - [`unmute_alert`](#api-route-24) - [`list_alerts`](#api-route-14) - [`rules`](#api-rules) - [`get_alert_rule`](#api-route-15) @@ -591,6 +592,33 @@ Output: } ``` +### Function: `unmute_alert` [`top`](#top) + +Unmute an alert + +Route: /api/v0/alerts/unmute/:id + +- id is the alert id, you can obtain a list of alert ids from [`list_alerts`](#api-route-14). + +Input: + + - + +Example: +```curl +curl -X PUT -H 'X-Auth-Token: YOURAPITOKENHERE' https://librenms.org/api/v0/alerts/unmute/1 +``` + +Output: +```text +{ + "status": "ok", + "err-msg": "", + "message": "Alert has been unmuted" +} +``` + + ### Function: `list_alerts` [`top`](#top) List all alerts diff --git a/html/api_v0.php b/html/api_v0.php index 412680e43..a64bab30d 100644 --- a/html/api_v0.php +++ b/html/api_v0.php @@ -84,6 +84,8 @@ $app->group( // api/v0/alerts $app->put('/:id', 'authToken', 'ack_alert')->name('ack_alert'); // api/v0/alerts/$id (PUT) + $app->put('/unmute/:id', 'authToken', 'unmute_alert')->name('unmute_alert'); + // api/v0/alerts/unmute/$id (PUT) } ); $app->get('/alerts', 'authToken', 'list_alerts')->name('list_alerts'); diff --git a/html/includes/api_functions.inc.php b/html/includes/api_functions.inc.php index 7141e7bbc..37bf96d98 100644 --- a/html/includes/api_functions.inc.php +++ b/html/includes/api_functions.inc.php @@ -795,7 +795,39 @@ function ack_alert() { $app->response->setStatus($code); $app->response->headers->set('Content-Type', 'application/json'); echo _json_encode($output); +} +function unmute_alert() { + global $config; + $app = \Slim\Slim::getInstance(); + $router = $app->router()->getCurrentRoute()->getParams(); + $alert_id = mres($router['id']); + $status = 'error'; + $err_msg = ''; + $message = ''; + $code = 500; + if (is_numeric($alert_id)) { + $status = 'ok'; + $code = 200; + if (dbUpdate(array('state' => 1), 'alerts', '`id` = ? LIMIT 1', array($alert_id))) { + $message = 'Alert has been unmuted'; + } + else { + $message = 'No alert by that ID'; + } + } + else { + $err_msg = 'Invalid alert has been provided'; + } + + $output = array( + 'status' => $status, + 'err-msg' => $err_msg, + 'message' => $message, + ); + $app->response->setStatus($code); + $app->response->headers->set('Content-Type', 'application/json'); + echo _json_encode($output); }