# What this PR does
Makes it possible to acknowledge/unacknowledge and resolve/unresolve
alert groups via public API, and makes sure these actions are reflected
properly in the alert group timeline.
## Demo
```bash
curl --request POST \
--header "Authorization: TOKEN" \
http://localhost:8080/api/v1/alert_groups/IQMHLV8INB24N/resolve
```
<img width="651" alt="Screenshot 2023-10-04 at 16 05 27"
src="https://github.com/grafana/oncall/assets/20116910/d4e66868-0132-4b6b-95c7-8424fced7c0b">
## Which issue(s) this PR fixes
https://github.com/grafana/oncall/issues/3051
## Checklist
- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] `CHANGELOG.md` updated (or `pr:no changelog` PR label added if not
required)
3.8 KiB
3.8 KiB
| canonical | title | weight |
|---|---|---|
| https://grafana.com/docs/oncall/latest/oncall-api-reference/alertgroups/ | Alert groups HTTP API | 400 |
List alert groups
curl "{{API_URL}}/api/v1/alert_groups/" \
--request GET \
--header "Authorization: meowmeowmeow" \
--header "Content-Type: application/json"
The above command returns JSON structured in the following way:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": "I68T24C13IFW1",
"integration_id": "CFRPV98RPR1U8",
"route_id": "RIYGUJXCPFHXY",
"alerts_count": 3,
"state": "resolved",
"created_at": "2020-05-19T12:37:01.430444Z",
"resolved_at": "2020-05-19T13:37:01.429805Z",
"acknowledged_at": null,
"title": "Memory above 90% threshold",
"permalinks": {
"slack": "https://ghostbusters.slack.com/archives/C1H9RESGA/p135854651500008",
"telegram": "https://t.me/c/5354/1234?thread=1234"
}
}
],
"current_page_number": 1,
"page_size": 50,
"total_pages": 1
}
These available filter parameters should be provided as GET arguments:
idroute_idintegration_idstate
HTTP request
GET {{API_URL}}/api/v1/alert_groups/
Acknowledge alert groups
curl "{{API_URL}}/api/v1/alert_groups/I68T24C13IFW1/acknowledge" \
--request POST \
--header "Authorization: meowmeowmeow"
HTTP request
POST {{API_URL}}/api/v1/alert_groups/<ALERT_GROUP_ID>/acknowledge
Unacknowledge alert groups
curl "{{API_URL}}/api/v1/alert_groups/I68T24C13IFW1/unacknowledge" \
--request POST \
--header "Authorization: meowmeowmeow"
HTTP request
POST {{API_URL}}/api/v1/alert_groups/<ALERT_GROUP_ID>/unacknowledge
Resolve alert groups
curl "{{API_URL}}/api/v1/alert_groups/I68T24C13IFW1/resolve" \
--request POST \
--header "Authorization: meowmeowmeow"
HTTP request
POST {{API_URL}}/api/v1/alert_groups/<ALERT_GROUP_ID>/resolve
Unresolve alert groups
curl "{{API_URL}}/api/v1/alert_groups/I68T24C13IFW1/unresolve" \
--request POST \
--header "Authorization: meowmeowmeow"
HTTP request
POST {{API_URL}}/api/v1/alert_groups/<ALERT_GROUP_ID>/unresolve
Delete alert groups
curl "{{API_URL}}/api/v1/alert_groups/I68T24C13IFW1/" \
--request DELETE \
--header "Authorization: meowmeowmeow" \
--header "Content-Type: application/json" \
--data '{
"mode": "wipe"
}'
| Parameter | Required | Description |
|---|---|---|
mode |
No | Default setting is wipe. wipe will remove the payload of all Grafana OnCall group alerts. This is useful if you sent sensitive data to OnCall. All metadata will remain. DELETE will trigger the removal of alert groups, alerts, and all related metadata. It will also remove alert group notifications in Slack and other destinations. |
NOTE:
DELETEcan take a few moments to delete alert groups because Grafana OnCall interacts with 3rd party APIs such as Slack. Please check objects usingGETto be sure the data is removed.
HTTP request
DELETE {{API_URL}}/api/v1/alert_groups/<ALERT_GROUP_ID>