---
title: "Mein Bereitschaftsstatus"
description: "Deine eigene Bereitschaft über alle Teams: ob du gerade Bereitschaft hast, kommende Schichten, Vertretungen und deine Bereitschaftsstunden."
---

`GET /api/im/me/on-call` · `GET /api/im/me/on-call-stats`

Die persönliche Sicht auf die Bereitschaft: ob **du** gerade Bereitschaft hast, in welchen Teams, was als Nächstes kommt und wie viele Stunden du Bereitschaft hattest. Wer allgemein Bereitschaft hat, zeigt [Wer hat Bereitschaft](/de/api/incident-management/on-call).

## Authentifizierung

Jede IM-berechtigte Rolle (`admin`, `editor`, `responder`) mit einer **Benutzersitzung**. Incident Management muss für die Organisation aktiviert sein. Diese Endpunkte beschreiben eine Person, deshalb erhält ein organisationsweiter API-Token `403` (`imUserSessionRequired`): Ein Token hat weder Schicht noch Pager.

## Meine aktuelle Bereitschaft

`GET /api/im/me/on-call`

Wird genauso aufgelöst wie in der Alarmierung, inklusive Vertretungen auf Teamebene. `upcomingShifts` schaut zwei Wochen voraus.

### Beispiel (cURL)

```bash
curl -X GET "$BASE_URL/api/im/me/on-call" \
  -b "$SESSION_COOKIE" \
  -H "Accept: application/json"
```

### Antwort (Response)

```json
{
  "currentlyOnCall": true,
  "currentTeams": [
    { "teamId": 7, "teamName": "Platform", "tierOrder": 1 }
  ],
  "currentShift": {
    "teamId": 7,
    "teamName": "Platform",
    "tierOrder": 1,
    "startsAt": "2026-10-10T07:00:00.000Z",
    "endsAt": "2026-10-11T07:00:00.000Z",
    "scheduleName": "Platform primary"
  },
  "upcomingShifts": [
    {
      "teamId": 7,
      "teamName": "Platform",
      "scheduleId": 12,
      "scheduleName": "Platform primary",
      "startsAt": "2026-10-17T07:00:00.000Z",
      "endsAt": "2026-10-18T07:00:00.000Z",
      "isOverride": false
    }
  ],
  "myOverrides": [
    {
      "id": 91,
      "teamId": 7,
      "teamName": "Platform",
      "scheduleId": 12,
      "type": "offline",
      "startsAt": "2026-10-12T18:00:00.000Z",
      "endsAt": "2026-10-12T22:00:00.000Z",
      "coveredBy": [{ "userId": "u_8f2", "name": "Mara" }]
    }
  ],
  "degraded": false
}
```

| Feld | Beschreibung |
|------|--------------|
| `currentlyOnCall` | Ob du gerade in mindestens einem Team für neue Incidents alarmiert wirst. |
| `currentTeams` | Teams, in denen du jetzt Bereitschaft hast. `tierOrder` ist die niedrigste Stufe, in der du bist, also die zuerst alarmierte. |
| `currentShift` | Die laufende Bereitschaft mit ihrem echten Beginn und Ende, über aneinanderliegende Schichten und Vertretungen hinweg. Bei Bereitschaft in mehreren Teams die am längsten laufende. `startsAt` ist `null`, wenn die Bereitschaft vor mehr als zwei Wochen begann, `endsAt` ist `null`, wenn sie nicht innerhalb von zwei Wochen endet. `scheduleName` ist `null`, wenn die Bereitschaft nur aus einer Vertretung auf Teamebene stammt. `null`, wenn du keine Bereitschaft hast. |
| `upcomingShifts` | Deine Schichten, die in den nächsten zwei Wochen beginnen. `isOverride` markiert Schichten aus einer Vertretung. |
| `myOverrides` | Deine eigenen laufenden oder kommenden Vertretungen (`type` `online` = du übernimmst, `offline` = du gibst ab). Bei einer Offline-Vertretung nennt `coveredBy`, wer in der Zeit den Pager hält; der letzte Eintrag wird alarmiert. Bei Online-Vertretungen und bei einer Offline-Vertretung ohne Ersatz ist die Liste leer. |
| `degraded` | `true`, wenn der Status mindestens eines Teams nicht aufgelöst werden konnte. `currentlyOnCall` ist dann eine Untergrenze: als „Status unvollständig“ lesen, nicht als „keine Bereitschaft“. |

## Meine Bereitschaftsstunden

`GET /api/im/me/on-call-stats`

Deine Bereitschaftszeit in dieser Woche, in diesem Monat und in den letzten 30 Tagen, jeweils mit dem vorigen Zeitraum derselben Art.

### Query-Parameter

| Parameter | Typ | Pflicht | Beschreibung |
|-----------|-----|---------|--------------|
| `tz` | string | Nein | IANA-Zeitzone, z. B. `Europe/Berlin`. Bestimmt, wo eine Woche (Montag 00:00) und ein Monat (1., 00:00) beginnen. Unbekannt oder fehlend: `UTC`. |

### Beispiel (cURL)

```bash
curl -X GET "$BASE_URL/api/im/me/on-call-stats?tz=Europe/Berlin" \
  -b "$SESSION_COOKIE" \
  -H "Accept: application/json"
```

### Antwort (Response)

```json
{
  "timeZone": "Europe/Berlin",
  "week": { "seconds": 25200, "previousSeconds": 23700 },
  "month": { "seconds": 90000, "previousSeconds": 0 },
  "last30": { "seconds": 309600, "previousSeconds": 174600 }
}
```

Aktuelle Zeiträume laufen bis jetzt, vorige Zeiträume umfassen den ganzen vorherigen Zeitraum. `timeZone` ist die tatsächlich verwendete Zone.

## Häufige Fehler

- `401 Unauthorized` wenn du nicht authentifiziert bist
- `403 Forbidden` (`customerScopedTokenForbidden`) bei Verwendung eines kunden-gescopten Tokens
- `403 Forbidden` (`imUserSessionRequired`) bei Aufruf mit einem organisationsweiten API-Token
- `403 Forbidden` (`imAccessDenied`) wenn keine IM-berechtigte Rolle oder keine Organisation vorliegt
- `403 Forbidden` (`imNotEnabled`) wenn Incident Management für die Organisation nicht aktiviert ist
