Przejdź do głównej zawartości

Dokumentacja Alert API

Kompletna dokumentacja wszystkich endpointów API związanych z alertami, w tym zarządzanie alertami, integracje webhook i reguły filtrowania.

Uwierzytelnianie

Wszystkie endpointy Alert API wymagają uwierzytelnienia za pomocą jednej z następujących metod:

MetodaNagłówekPrzykład
Bearer TokenAuthorization: Bearer <token>Authorization: Bearer eyJ...
API KeyX-API-Key: <api_key>X-API-Key: noti_abc123...

Szczegóły dotyczące uzyskiwania tokenów i kluczy API znajdziesz w Przewodniku uwierzytelniania.

Bazowy URL

https://app.notifer.io

Alerty

Lista alertów

Pobierz paginowaną listę alertów z opcjonalnym filtrowaniem.

GET /api/alerts

Parametry zapytania:

ParametrTypDomyślnieOpis
statusstring--Filtruj według statusu: open, acknowledged, resolved
topicstring--Filtruj według nazwy tematu
priority_mininteger--Minimalny priorytet (1-5)
sourcestring--Filtruj według źródła alertu (np. alertmanager, grafana)
searchstring--Wyszukiwanie pełnotekstowe w tytule i treści alertu
limitinteger50Wyników na stronę (maks.: 100)
offsetinteger0Liczba wyników do pominięcia
sortstringlast_received_atPole sortowania: last_received_at, priority, status, count
orderstringdescKierunek sortowania: asc, desc

Przykład:

curl "https://app.notifer.io/api/alerts?status=open&priority_min=1&limit=20" \
-H "Authorization: Bearer $TOKEN"

Odpowiedź: 200 OK

{
"alerts": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"topic_id": "660e8400-e29b-41d4-a716-446655440001",
"topic_name": "server-alerts",
"alert_key": "HighCPU_web-01",
"title": "HighCPU",
"message": "CPU usage above 95% on web-01 for 5 minutes",
"priority": 1,
"status": "open",
"source": "alertmanager",
"tags": ["critical", "production", "cpu"],
"labels": {
"severity": "critical",
"env": "production",
"instance": "web-01"
},
"count": 3,
"first_received_at": "2026-02-14T08:00:00Z",
"last_received_at": "2026-02-14T08:15:00Z",
"acknowledged_at": null,
"acknowledged_by": null,
"resolved_at": null,
"resolved_by": null,
"resolve_reason": null
}
],
"total": 42
}

Szczegóły alertu

Pobierz pełne szczegóły pojedynczego alertu.

GET /api/alerts/{topic_name}/{alert_key}

Parametry ścieżki:

ParametrOpis
topic_nameNazwa tematu
alert_keyUnikalny klucz alertu w ramach tematu

Przykład:

curl "https://app.notifer.io/api/alerts/server-alerts/HighCPU_web-01" \
-H "Authorization: Bearer $TOKEN"

Odpowiedź: 200 OK

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"topic_id": "660e8400-e29b-41d4-a716-446655440001",
"topic_name": "server-alerts",
"alert_key": "HighCPU_web-01",
"title": "HighCPU",
"message": "CPU usage above 95% on web-01 for 5 minutes",
"priority": 1,
"status": "open",
"source": "alertmanager",
"tags": ["critical", "production", "cpu"],
"labels": {
"severity": "critical",
"env": "production",
"instance": "web-01"
},
"count": 3,
"first_received_at": "2026-02-14T08:00:00Z",
"last_received_at": "2026-02-14T08:15:00Z",
"acknowledged_at": null,
"acknowledged_by": null,
"resolved_at": null,
"resolved_by": null,
"resolve_reason": null
}

Potwierdzenie alertu

Oznacz alert jako potwierdzony. Sygnalizuje to, że ktoś zajmuje się problemem.

POST /api/alerts/{topic_name}/{alert_key}/ack

Przykład:

curl -X POST "https://app.notifer.io/api/alerts/server-alerts/HighCPU_web-01/ack" \
-H "Authorization: Bearer $TOKEN"

Odpowiedź: 200 OK

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"topic_name": "server-alerts",
"alert_key": "HighCPU_web-01",
"status": "acknowledged",
"acknowledged_at": "2026-02-14T08:20:00Z",
"acknowledged_by": "john"
}

Rozwiązanie alertu

Oznacz alert jako rozwiązany. Opcjonalnie możesz podać powód wyjaśniający rozwiązanie.

POST /api/alerts/{topic_name}/{alert_key}/resolve

Treść żądania (opcjonalna):

{
"reason": "Fixed in deploy v2.1 - increased CPU allocation"
}

Przykład:

curl -X POST "https://app.notifer.io/api/alerts/server-alerts/HighCPU_web-01/resolve" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"reason": "Fixed in deploy v2.1 - increased CPU allocation"}'

Odpowiedź: 200 OK

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"topic_name": "server-alerts",
"alert_key": "HighCPU_web-01",
"status": "resolved",
"resolved_at": "2026-02-14T09:00:00Z",
"resolved_by": "john",
"resolve_reason": "Fixed in deploy v2.1 - increased CPU allocation"
}

Historia wiadomości alertu

Pobierz historię wiadomości dla konkretnego alertu. Za każdym razem, gdy alert zostaje wyzwolony, rejestrowana jest nowa wiadomość. Ten endpoint zwraca wszystkie wiadomości powiązane z danym kluczem alertu.

GET /api/alerts/{topic_name}/{alert_key}/messages

Parametry zapytania:

ParametrTypDomyślnieOpis
limitinteger50Wyników na stronę (maks.: 100)
offsetinteger0Liczba wyników do pominięcia

Przykład:

curl "https://app.notifer.io/api/alerts/server-alerts/HighCPU_web-01/messages?limit=10" \
-H "Authorization: Bearer $TOKEN"

Odpowiedź: 200 OK

{
"messages": [
{
"id": "770e8400-e29b-41d4-a716-446655440010",
"alert_id": "550e8400-e29b-41d4-a716-446655440000",
"message": "CPU usage above 95% on web-01 for 5 minutes",
"title": "HighCPU",
"priority": 1,
"tags": ["critical", "production", "cpu"],
"source": "alertmanager",
"raw_payload": {
"alertname": "HighCPU",
"severity": "critical",
"instance": "web-01"
},
"created_at": "2026-02-14T08:15:00Z"
},
{
"id": "770e8400-e29b-41d4-a716-446655440009",
"alert_id": "550e8400-e29b-41d4-a716-446655440000",
"message": "CPU usage above 95% on web-01 for 5 minutes",
"title": "HighCPU",
"priority": 1,
"tags": ["critical", "production", "cpu"],
"source": "alertmanager",
"raw_payload": {
"alertname": "HighCPU",
"severity": "critical",
"instance": "web-01"
},
"created_at": "2026-02-14T08:10:00Z"
}
],
"total": 3,
"alert_id": "550e8400-e29b-41d4-a716-446655440000"
}

Wysyłanie alertów

Wysyłanie alertu przez HTTP

Opublikuj wiadomość, która jest śledzona jako alert, dołączając nagłówek X-Alert-Key. Jeśli otwarty alert z tym samym kluczem już istnieje w temacie, wiadomość jest do niego dołączana, a licznik count alertu jest zwiększany. W przeciwnym razie tworzony jest nowy alert.

POST /{topic_name}

Nagłówki:

NagłówekWymaganyOpis
X-Alert-KeyTakUnikalny identyfikator alertu w ramach tematu (np. HighCPU_web-01)
X-Alert-StatusNieStatus alertu: firing (domyślnie) lub resolved
X-Alert-SourceNieIdentyfikator źródła (np. prometheus, custom-script)
X-PriorityNiePriorytet 1-5 (domyślnie: 3)
X-TagsNieTagi rozdzielone przecinkami
X-TitleNieTytuł alertu
AuthorizationNieWymagany dla prywatnych tematów

Przykład -- Wyzwolenie alertu:

curl -X POST https://app.notifer.io/server-alerts \
-H "Authorization: Bearer $TOKEN" \
-H "X-Alert-Key: HighCPU_web-01" \
-H "X-Alert-Status: firing" \
-H "X-Alert-Source: custom-script" \
-H "X-Priority: 1" \
-H "X-Tags: critical,cpu,production" \
-H "X-Title: High CPU on web-01" \
-d "CPU usage at 98% for the last 10 minutes on web-01"

Przykład -- Rozwiązanie alertu:

curl -X POST https://app.notifer.io/server-alerts \
-H "Authorization: Bearer $TOKEN" \
-H "X-Alert-Key: HighCPU_web-01" \
-H "X-Alert-Status: resolved" \
-d "CPU usage returned to normal (45%)"

Odpowiedź: 200 OK

{
"id": "880e8400-e29b-41d4-a716-446655440020",
"topic": "server-alerts",
"message": "CPU usage at 98% for the last 10 minutes on web-01",
"title": "High CPU on web-01",
"priority": 1,
"tags": ["critical", "cpu", "production"],
"alert_key": "HighCPU_web-01",
"alert_status": "firing",
"timestamp": "2026-02-14T10:30:00Z"
}
Najlepsze praktyki dotyczące kluczy alertów

Wybieraj klucze alertów, które są stabilne i opisowe. Dobry wzorzec to {NazwaAlertu}_{Instancja}, na przykład HighCPU_web-01 lub DiskFull_db-primary. Zapewnia to, że powtarzające się wyzwolenia tego samego alertu są grupowane razem, zamiast tworzyć duplikaty alertów.


Przyjmowanie webhooków

Otrzymuj alerty z zewnętrznych narzędzi monitorujących za pośrednictwem wstępnie skonfigurowanych endpointów webhook. Każdy typ webhooka ma parser, który rozumie natywny format payloadu narzędzia.

POST /api/topics/{topic}/webhooks/ingest/{type}/{token}

Parametry ścieżki:

ParametrOpis
topicNazwa tematu docelowego
typeTyp webhooka (zobacz obsługiwane typy poniżej)
tokenUnikalny token uwierzytelniający webhook

Obsługiwane typy webhooków:

TypŹródłoOpis
alertmanagerPrometheus AlertmanagerParsuje payloady webhook Alertmanagera v2
grafanaGrafana AlertingParsuje webhooki ujednoliconego alertowania Grafany
datadogDatadogParsuje powiadomienia webhook Datadoga
dynatraceDynatraceParsuje powiadomienia o problemach Dynatrace
zabbixZabbixParsuje webhooki media type Zabbixa
uptime_kumaUptime KumaParsuje powiadomienia webhook Uptime Kuma
genericDowolne źródłoAkceptuje prosty format JSON (zobacz poniżej)
Nagłówek uwierzytelniania nie jest wymagany

Endpointy przyjmowania webhooków uwierzytelniają się za pomocą {token} w ścieżce URL, a nie za pomocą nagłówków. Dzięki temu są kompatybilne z narzędziami monitorującymi, które nie obsługują niestandardowych nagłówków.

Przykład -- URL webhooka Alertmanagera:

https://app.notifer.io/api/topics/server-alerts/webhooks/ingest/alertmanager/whk_a1b2c3d4e5f6

Skonfiguruj ten URL w pliku alertmanager.yml Alertmanagera:

receivers:
- name: notifer
webhook_configs:
- url: "https://app.notifer.io/api/topics/server-alerts/webhooks/ingest/alertmanager/whk_a1b2c3d4e5f6"
send_resolved: true

Przykład -- Payload generycznego webhooka:

curl -X POST "https://app.notifer.io/api/topics/server-alerts/webhooks/ingest/generic/whk_a1b2c3d4e5f6" \
-H "Content-Type: application/json" \
-d '{
"alert_key": "HighMemory_app-01",
"title": "High Memory Usage",
"message": "Memory usage at 92% on app-01",
"severity": "warning",
"status": "firing",
"labels": {
"env": "production",
"instance": "app-01"
}
}'

Odpowiedź: 200 OK

{
"status": "accepted",
"alerts_processed": 1,
"topic": "server-alerts"
}

Zarządzanie webhookami

Lista webhooków

Pobierz wszystkie integracje webhook dla tematu.

GET /api/topics/{topic}/webhooks

Przykład:

curl "https://app.notifer.io/api/topics/server-alerts/webhooks" \
-H "Authorization: Bearer $TOKEN"

Odpowiedź: 200 OK

[
{
"id": "990e8400-e29b-41d4-a716-446655440030",
"topic_id": "660e8400-e29b-41d4-a716-446655440001",
"topic_name": "server-alerts",
"name": "Production Alertmanager",
"type": "alertmanager",
"token": "whk_a1b2c3d4e5f6",
"is_active": true,
"events_received": 156,
"events_dropped": 23,
"last_event_at": "2026-02-14T08:15:00Z",
"created_at": "2026-01-15T10:00:00Z",
"updated_at": "2026-02-14T08:15:00Z"
}
]

Tworzenie webhooka

Utwórz nową integrację webhook dla tematu.

POST /api/topics/{topic}/webhooks

Treść żądania:

{
"name": "Production Alertmanager",
"type": "alertmanager"
}
PoleTypWymaganeOpis
namestringTakOpisowa nazwa integracji
typestringTakTyp webhooka: alertmanager, grafana, datadog, dynatrace, zabbix, uptime_kuma, generic

Przykład:

curl -X POST "https://app.notifer.io/api/topics/server-alerts/webhooks" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Production Alertmanager", "type": "alertmanager"}'

Odpowiedź: 201 Created

{
"id": "990e8400-e29b-41d4-a716-446655440030",
"topic_id": "660e8400-e29b-41d4-a716-446655440001",
"topic_name": "server-alerts",
"name": "Production Alertmanager",
"type": "alertmanager",
"token": "whk_a1b2c3d4e5f6",
"ingest_url": "https://app.notifer.io/api/topics/server-alerts/webhooks/ingest/alertmanager/whk_a1b2c3d4e5f6",
"is_active": true,
"events_received": 0,
"events_dropped": 0,
"last_event_at": null,
"created_at": "2026-02-14T10:30:00Z",
"updated_at": "2026-02-14T10:30:00Z"
}
Skopiuj URL do przyjmowania zdarzeń

ingest_url w odpowiedzi to pełny URL, który musisz skonfigurować w swoim narzędziu monitorującym. Skopiuj go bezpośrednio do konfiguracji webhooka w Alertmanagerze, Grafanie lub innym narzędziu.


Aktualizacja webhooka

Zaktualizuj ustawienia integracji webhook.

PUT /api/topics/{topic}/webhooks/{id}

Treść żądania:

{
"name": "Production Alertmanager (v2)",
"is_active": true
}

Przykład:

curl -X PUT "https://app.notifer.io/api/topics/server-alerts/webhooks/990e8400-e29b-41d4-a716-446655440030" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Production Alertmanager (v2)", "is_active": true}'

Odpowiedź: 200 OK (zaktualizowany obiekt webhooka)


Usuwanie webhooka

Usuń integrację webhook. Wszystkie powiązane reguły filtrowania również zostaną usunięte.

DELETE /api/topics/{topic}/webhooks/{id}

Przykład:

curl -X DELETE "https://app.notifer.io/api/topics/server-alerts/webhooks/990e8400-e29b-41d4-a716-446655440030" \
-H "Authorization: Bearer $TOKEN"

Odpowiedź: 204 No Content

Usuwanie webhooka

Usunięcie webhooka natychmiast unieważnia jego URL do przyjmowania zdarzeń. Każde narzędzie monitorujące nadal wysyłające zdarzenia na stary URL otrzyma odpowiedź 404 Not Found. Upewnij się, że zaktualizujesz konfigurację monitorowania przed usunięciem.


Rotacja tokena webhooka

Wygeneruj nowy token uwierzytelniający dla webhooka. Stary token zostaje natychmiast unieważniony.

POST /api/topics/{topic}/webhooks/{id}/rotate

Przykład:

curl -X POST "https://app.notifer.io/api/topics/server-alerts/webhooks/990e8400-e29b-41d4-a716-446655440030/rotate" \
-H "Authorization: Bearer $TOKEN"

Odpowiedź: 200 OK

{
"id": "990e8400-e29b-41d4-a716-446655440030",
"token": "whk_x9y8z7w6v5u4",
"ingest_url": "https://app.notifer.io/api/topics/server-alerts/webhooks/ingest/alertmanager/whk_x9y8z7w6v5u4",
"previous_token_invalidated": true
}
Zaktualizuj swoje narzędzia monitorujące

Po rotacji tokena musisz zaktualizować URL webhooka we wszystkich narzędziach monitorujących, które wysyłają zdarzenia do tej integracji. Stary URL natychmiast przestanie działać.


Reguły filtrowania

Zarządzaj regułami filtrowania dla integracji webhook. Zobacz Przewodnik po regułach filtrowania, aby uzyskać szczegółowe wyjaśnienie działania reguł.

Lista reguł filtrowania

Pobierz wszystkie reguły filtrowania dla integracji webhook, w kolejności ewaluacji.

GET /api/topics/{topic}/webhooks/{id}/rules

Przykład:

curl "https://app.notifer.io/api/topics/server-alerts/webhooks/990e8400-e29b-41d4-a716-446655440030/rules" \
-H "Authorization: Bearer $TOKEN"

Odpowiedź: 200 OK

[
{
"id": "aa0e8400-e29b-41d4-a716-446655440040",
"webhook_id": "990e8400-e29b-41d4-a716-446655440030",
"name": "Drop info-level alerts",
"order": 1,
"conditions": [
{
"field": "severity",
"operator": "equals",
"value": "info"
}
],
"action": "drop",
"modifications": null,
"match_count": 47,
"created_at": "2026-01-20T10:00:00Z",
"updated_at": "2026-01-20T10:00:00Z"
},
{
"id": "bb0e8400-e29b-41d4-a716-446655440041",
"webhook_id": "990e8400-e29b-41d4-a716-446655440030",
"name": "Escalate critical to P1",
"order": 2,
"conditions": [
{
"field": "severity",
"operator": "equals",
"value": "critical"
}
],
"action": "modify",
"modifications": {
"priority": 1,
"add_tags": ["escalated"]
},
"match_count": 12,
"created_at": "2026-01-20T10:05:00Z",
"updated_at": "2026-01-20T10:05:00Z"
}
]

Tworzenie reguły filtrowania

Dodaj nową regułę filtrowania do integracji webhook. Reguła jest dołączana na końcu kolejności ewaluacji.

POST /api/topics/{topic}/webhooks/{id}/rules

Treść żądania:

{
"name": "Drop test alerts",
"conditions": [
{
"field": "alertname",
"operator": "contains",
"value": "test"
}
],
"action": "drop"
}
PoleTypWymaganeOpis
namestringTakOpisowa nazwa reguły
conditionsarrayTakTablica obiektów warunków
conditions[].fieldstringTakŚcieżka pola (obsługuje notację kropkową)
conditions[].operatorstringTakOperator: equals, not_equals, contains, not_contains, regex, exists, not_exists
conditions[].valuestringNieWartość do porównania (nie wymagana dla exists/not_exists)
actionstringTakAkcja: accept, drop, modify
modificationsobjectNieWymagane gdy akcja to modify
modifications.priorityintegerNieUstaw priorytet (1-5)
modifications.add_tagsarrayNieTagi do dodania

Przykład:

curl -X POST "https://app.notifer.io/api/topics/server-alerts/webhooks/990e8400-e29b-41d4-a716-446655440030/rules" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Escalate production critical",
"conditions": [
{"field": "labels.env", "operator": "equals", "value": "production"},
{"field": "severity", "operator": "equals", "value": "critical"}
],
"action": "modify",
"modifications": {
"priority": 1,
"add_tags": ["production", "critical"]
}
}'

Odpowiedź: 201 Created

{
"id": "cc0e8400-e29b-41d4-a716-446655440042",
"webhook_id": "990e8400-e29b-41d4-a716-446655440030",
"name": "Escalate production critical",
"order": 3,
"conditions": [
{"field": "labels.env", "operator": "equals", "value": "production"},
{"field": "severity", "operator": "equals", "value": "critical"}
],
"action": "modify",
"modifications": {
"priority": 1,
"add_tags": ["production", "critical"]
},
"match_count": 0,
"created_at": "2026-02-14T10:30:00Z",
"updated_at": "2026-02-14T10:30:00Z"
}

Aktualizacja reguły filtrowania

Zaktualizuj warunki, akcję lub nazwę istniejącej reguły filtrowania.

PUT /api/topics/{topic}/webhooks/{id}/rules/{rule_id}

Treść żądania:

{
"name": "Escalate all critical (updated)",
"conditions": [
{"field": "severity", "operator": "equals", "value": "critical"}
],
"action": "modify",
"modifications": {
"priority": 1,
"add_tags": ["critical", "escalated"]
}
}

Przykład:

curl -X PUT "https://app.notifer.io/api/topics/server-alerts/webhooks/990e8400-e29b-41d4-a716-446655440030/rules/cc0e8400-e29b-41d4-a716-446655440042" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Escalate all critical (updated)",
"conditions": [
{"field": "severity", "operator": "equals", "value": "critical"}
],
"action": "modify",
"modifications": {"priority": 1, "add_tags": ["critical", "escalated"]}
}'

Odpowiedź: 200 OK (zaktualizowany obiekt reguły)


Usuwanie reguły filtrowania

Usuń regułę filtrowania. Pozostałe reguły zachowują swoją względną kolejność.

DELETE /api/topics/{topic}/webhooks/{id}/rules/{rule_id}

Przykład:

curl -X DELETE "https://app.notifer.io/api/topics/server-alerts/webhooks/990e8400-e29b-41d4-a716-446655440030/rules/cc0e8400-e29b-41d4-a716-446655440042" \
-H "Authorization: Bearer $TOKEN"

Odpowiedź: 204 No Content


Zmiana kolejności reguł filtrowania

Ustaw kolejność ewaluacji dla wszystkich reguł filtrowania webhooka. Podaj pełną listę identyfikatorów reguł w żądanej kolejności.

PUT /api/topics/{topic}/webhooks/{id}/rules/reorder

Treść żądania:

{
"rule_ids": [
"bb0e8400-e29b-41d4-a716-446655440041",
"aa0e8400-e29b-41d4-a716-446655440040"
]
}

Przykład:

curl -X PUT "https://app.notifer.io/api/topics/server-alerts/webhooks/990e8400-e29b-41d4-a716-446655440030/rules/reorder" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"rule_ids": ["bb0e8400-e29b-41d4-a716-446655440041", "aa0e8400-e29b-41d4-a716-446655440040"]}'

Odpowiedź: 200 OK

{
"reordered": true,
"order": [
{"id": "bb0e8400-e29b-41d4-a716-446655440041", "order": 1},
{"id": "aa0e8400-e29b-41d4-a716-446655440040", "order": 2}
]
}
Dołącz wszystkie identyfikatory reguł

Tablica rule_ids musi zawierać każdy identyfikator reguły dla webhooka. Pominięcie identyfikatora reguły spowoduje błąd 400 Bad Request.


Testowanie reguł filtrowania

Przetestuj reguły filtrowania na przykładowym payloadzie bez tworzenia rzeczywistego alertu. Zwraca informację, która reguła pasowałaby i jaka akcja zostałaby podjęta.

POST /api/topics/{topic}/webhooks/{id}/rules/test

Treść żądania:

{
"payload": {
"alertname": "HighCPU",
"severity": "critical",
"status": "firing",
"labels": {
"env": "production",
"instance": "web-01",
"team": "backend"
},
"annotations": {
"summary": "CPU usage above 95% for 5 minutes"
}
}
}

Przykład:

curl -X POST "https://app.notifer.io/api/topics/server-alerts/webhooks/990e8400-e29b-41d4-a716-446655440030/rules/test" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"alertname": "HighCPU",
"severity": "critical",
"labels": {"env": "production", "instance": "web-01"}
}
}'

Odpowiedź: 200 OK

{
"matched_rule": {
"id": "bb0e8400-e29b-41d4-a716-446655440041",
"name": "Escalate critical to P1",
"order": 2
},
"action": "modify",
"result": {
"would_create_alert": true,
"priority": 1,
"tags": ["escalated"],
"title": "HighCPU",
"message": "CPU usage above 95% for 5 minutes"
}
}

Gdy żadna reguła nie pasuje:

{
"matched_rule": null,
"action": "accept",
"result": {
"would_create_alert": true,
"priority": 3,
"tags": [],
"title": "HighCPU",
"message": "CPU usage above 95% for 5 minutes"
}
}

Schematy obiektów

Obiekt alertu

PoleTypOpis
iduuidUnikalny identyfikator alertu
topic_iduuidIdentyfikator tematu nadrzędnego
topic_namestringNazwa tematu nadrzędnego
alert_keystringUnikalny klucz alertu w ramach tematu
titlestringTytuł alertu
messagestringNajnowsza wiadomość alertu
priorityintegerPoziom priorytetu (1-5, gdzie 1 to najwyższy)
statusstringAktualny status: open, acknowledged, resolved
sourcestringŹródło alertu (np. alertmanager, grafana, http)
tagsarrayLista tagów
labelsobjectEtykiety klucz-wartość z payloadu źródłowego
countintegerLiczba wyzwoleń alertu
first_received_atdatetimeKiedy alert został wyzwolony po raz pierwszy
last_received_atdatetimeKiedy otrzymano ostatnie zdarzenie
acknowledged_atdatetimeKiedy alert został potwierdzony (null jeśli nie)
acknowledged_bystringNazwa użytkownika, który potwierdził (null jeśli nie)
resolved_atdatetimeKiedy alert został rozwiązany (null jeśli nie)
resolved_bystringNazwa użytkownika, który rozwiązał (null jeśli nie)
resolve_reasonstringPowód rozwiązania (null jeśli nie podano)

Obiekt integracji webhook

PoleTypOpis
iduuidUnikalny identyfikator webhooka
topic_iduuidIdentyfikator tematu nadrzędnego
topic_namestringNazwa tematu nadrzędnego
namestringOpisowa nazwa integracji
typestringTyp webhooka (np. alertmanager, grafana, generic)
tokenstringToken uwierzytelniający (zawarty w URL do przyjmowania zdarzeń)
ingest_urlstringPełny URL do wysyłania zdarzeń (tylko w odpowiedzi na tworzenie)
is_activebooleanCzy webhook aktualnie przyjmuje zdarzenia
events_receivedintegerŁączna liczba otrzymanych zdarzeń
events_droppedintegerZdarzenia odrzucone przez reguły filtrowania
last_event_atdatetimeKiedy otrzymano ostatnie zdarzenie (null jeśli nigdy)
created_atdatetimeKiedy webhook został utworzony
updated_atdatetimeKiedy webhook był ostatnio aktualizowany

Obiekt reguły filtrowania

PoleTypOpis
iduuidUnikalny identyfikator reguły
webhook_iduuidIdentyfikator nadrzędnej integracji webhook
namestringOpisowa nazwa reguły
orderintegerKolejność ewaluacji (od 1, niższy = ewaluowany wcześniej)
conditionsarrayTablica obiektów warunków
conditions[].fieldstringŚcieżka pola w payloadzie (obsługuje notację kropkową)
conditions[].operatorstringOperator porównania
conditions[].valuestringWartość do porównania (null dla exists/not_exists)
actionstringAkcja do podjęcia: accept, drop, modify
modificationsobjectModyfikacje do zastosowania (null, chyba że akcja to modify)
modifications.priorityintegerNadpisanie priorytetu (1-5)
modifications.add_tagsarrayTagi do dołączenia
match_countintegerLiczba dopasowań reguły
created_atdatetimeKiedy reguła została utworzona
updated_atdatetimeKiedy reguła była ostatnio aktualizowana

Odpowiedzi błędów

Wszystkie odpowiedzi błędów mają następujący format:

{
"detail": "Error message describing the issue"
}

Typowe kody błędów

KodZnaczenieCzęste przyczyny
400Nieprawidłowe żądanieNieprawidłowy JSON, brakujące wymagane pola, nieprawidłowe wartości pól
401Brak autoryzacjiBrakujący lub nieprawidłowy token uwierzytelniający/klucz API
403ZabronioneNiewystarczające uprawnienia (np. nie jest właścicielem tematu)
404Nie znalezionoAlert, temat, webhook lub reguła nie istnieje
409KonfliktZduplikowany klucz alertu, nazwa webhooka już istnieje
422Błąd walidacjiNieprawidłowe wartości pól (np. priorytet poza zakresem, nieprawidłowy operator)
429Przekroczono limit zapytańZbyt wiele żądań -- sprawdź nagłówki limitowania w odpowiedzi
500Wewnętrzny błąd serweraNieoczekiwany błąd serwera -- skontaktuj się z pomocą techniczną, jeśli problem się powtarza

Przykładowa odpowiedź błędu:

{
"detail": "Alert not found: topic=server-alerts, key=NonExistent_alert"
}

Odpowiedź błędu walidacji (422):

{
"detail": [
{
"loc": ["body", "conditions", 0, "operator"],
"msg": "value is not a valid enumeration member; permitted: 'equals', 'not_equals', 'contains', 'not_contains', 'regex', 'exists', 'not_exists'",
"type": "value_error.enum"
}
]
}

Następne kroki