Team-Bereitschaft und Statistik
Lesen, wer in einem Team gerade Bereitschaft hat, den Bereitschaftskalender des Teams für ein Zeitfenster und die Incident-Statistik des Teams.
Lesende Ansichten auf ein Team: die aktuelle Bereitschaft je Stufe, der Bereitschaftskalender und die Incident-Statistik. Die organisationsweite Ansicht steht unter Wer hat Bereitschaft.
Authentifizierung
Basis-IM-Zugriff: eine IM-berechtigte Rolle (admin, editor oder responder) oder ein organisationsweiter API-Token, und Incident Management für die Organisation aktiviert. Eine Team-Rolle ist nicht nötig. Ein Team einer anderen Organisation antwortet mit 404.
Bereitschaft jetzt
GET /api/im/teams/:id/on-call-now
Ein Eintrag je Eskalationsstufe, in Stufenreihenfolge, mit allen, die in dieser Stufe gerade Bereitschaft haben. Overrides sind bereits angewendet. Eine Stufe ohne Bereitschaft (kein Schedule oder eine Lücke) hat ein leeres users-Array.
Beispiel (cURL)
curl -X GET "$BASE_URL/api/im/teams/3/on-call-now" \
-H "Authorization: Bearer $TOKEN"Antwort (Response)
200 OK
[
{
"tierId": 21,
"tierOrder": 1,
"users": [{ "userId": "u_abc123", "userName": "Ada Lovelace", "userImage": null }]
},
{ "tierId": 22, "tierOrder": 2, "users": [] }
]Kalender
GET /api/im/teams/:id/calendar
Bereitschaftszeiträume aller Stufen in einem Zeitfenster, als flache Liste sortiert nach Beginn. Team-Overrides sind bereits angewendet.
Query-Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
from | string | Ja | ISO-8601-Zeitstempel, Beginn des Fensters (inklusive). |
to | string | Ja | ISO-8601-Zeitstempel, Ende des Fensters (exklusive). Muss nach from liegen. |
tier | integer | Nein | Eine Stufen-ID dieses Teams: nur die Zeiträume dieser Stufe. Eine ID, die keine Stufe des Teams ist, liefert []. |
Beispiel (cURL)
curl -X GET "$BASE_URL/api/im/teams/3/calendar?from=2026-10-01T00:00:00Z&to=2026-11-01T00:00:00Z" \
-H "Authorization: Bearer $TOKEN"Antwort (Response)
200 OK
[
{
"scheduleId": 7,
"tierOrder": 1,
"userId": "u_abc123",
"userName": "Ada Lovelace",
"startsAt": "2026-09-28T07:00:00.000Z",
"endsAt": "2026-10-05T07:00:00.000Z",
"userImage": null
},
{
"scheduleId": null,
"tierOrder": 1,
"userId": "u_def456",
"userName": "Bob Fixit",
"startsAt": "2026-10-10T18:00:00.000Z",
"endsAt": "2026-10-12T08:00:00.000Z",
"userImage": null,
"isTeamOverride": true
}
]- Ein Zeitraum überlappt das Fenster, kann aber vor
frombeginnen oder nachtoenden. scheduleId: nullmitisTeamOverride: truemarkiert einen Zeitraum, der aus einem Team-Override stammt statt aus einem Schedule. Bei allen anderen Zeiträumen fehlt der Schlüssel.- Ein Team ohne Stufen liefert
[].
Incident-Statistik
GET /api/im/teams/:id/incidents/stats
Anzahl und Reaktionszeiten der Team-Incidents, die in einem Fenster ausgelöst wurden, dieselben Werte für das gleich lange Fenster direkt davor, und ein Datenpunkt pro Tag. Test-Incidents zählen nicht mit.
Query-Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
from | string | Ja | ISO-8601-Zeitstempel, Beginn des Fensters (inklusive). |
to | string | Ja | ISO-8601-Zeitstempel, Ende des Fensters (exklusive). Höchstens 400 Tage nach from. |
tz | string | Nein | IANA-Zone für die Tageswerte. Fehlt sie oder ist sie ungültig, gilt die Zeitzone des Teams, dann UTC. |
severity | string | Nein | Nur diese Schweregrade: sev1 bis sev4. Wiederholbar (?severity=sev1&severity=sev2). |
status | string | Nein | Nur diese Status: triggered, acknowledged, investigating, identified, monitoring, resolved, merged. Wiederholbar. |
Beispiel (cURL)
curl -G "$BASE_URL/api/im/teams/3/incidents/stats" \
-H "Authorization: Bearer $TOKEN" \
--data-urlencode "from=2026-10-01T00:00:00+02:00" \
--data-urlencode "to=2026-10-08T00:00:00+02:00" \
--data-urlencode "tz=Europe/Berlin"Antwort (Response)
200 OK
{
"from": "2026-09-30T22:00:00.000Z",
"to": "2026-10-07T22:00:00.000Z",
"comparisonFrom": "2026-09-23T22:00:00.000Z",
"comparisonTo": "2026-09-30T22:00:00.000Z",
"current": {
"total": 12,
"resolved": 10,
"resolvedPct": 83.3,
"open": 2,
"mttaSeconds": 184,
"ttaMedianSeconds": 95,
"mttrSeconds": 2710,
"ttrMedianSeconds": 1800
},
"previous": {
"total": 8,
"resolved": 8,
"resolvedPct": 100,
"open": 0,
"mttaSeconds": 240,
"ttaMedianSeconds": 150,
"mttrSeconds": 3300,
"ttrMedianSeconds": 2400
},
"timeSeries": [
{ "date": "2026-10-01", "count": 3, "resolvedCount": 3, "mttaSeconds": 120, "mttrSeconds": 1500 },
{ "date": "2026-10-02", "count": 0, "resolvedCount": 0, "mttaSeconds": null, "mttrSeconds": null }
]
}openzählt Incidents intriggered,acknowledged,investigating,identifiedodermonitoring.merged-Incidents stecken intotal, aber weder inresolvednoch inopen.resolvedPctistnull, wenntotal0ist. MTTA/MTTR sind Sekunden, Mittelwerte und Mediane über die bestätigten bzw. gelösten Incidents;null, wenn es keine gibt.timeSerieshat einen Punkt pro Kalendertag des Fensters intz, auch für Tage ohne Incidents.
Häufige Fehler
401 Unauthorized(unauthorized) wenn du nicht authentifiziert bist403 Forbidden(imAccessDenied) bei einem kunden-gescopten Token, oder wenn deine Session keine IM-berechtigte Rolle hat403 Forbidden(imNotEnabled) wenn Incident Management für die Organisation nicht aktiviert ist404 Not Found(imTeamNotFound) wenn das Team nicht existiert oder zu einer anderen Organisation gehört400 Bad Request(invalidRequestBody) wenn:idkeine positive Ganzzahl ist, oder (Statistik) ein Wert inseverityoderstatusunbekannt ist422 Unprocessable Entity(invalidRequestBody) (Kalender) wennfromodertofehlt oder kein gültiger Zeitstempel ist,fromnicht vortoliegt, odertierkeine positive Ganzzahl ist400 Bad Request(imReportRangeRequired) (Statistik) wennfromodertofehlt oder kein gültiger Zeitstempel ist400 Bad Request(imReportRangeInvalid) (Statistik) wennfromnicht vortoliegt400 Bad Request(imReportRangeTooLarge) (Statistik) wenn das Fenster länger als 400 Tage ist