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);
}