---
title: "Wartungs-Wiederholungen vorschauen"
description: "Berechnet die kommenden Vorkommen eines (noch nicht gespeicherten) Wiederholungsmusters, ohne ein Fenster anzulegen."
---

`POST /api/maintenance-windows/preview-occurrences`

Reine Berechnung: Dieser Endpunkt greift nie auf die Datenbank zu. Er nutzt dieselbe
zeitzonenbewusste Wiederholungs-Engine wie der Alarm-Unterdrückungspfad (`occurrencesInRange`),
sodass die Vorschau nie von dem abweichen kann, was ein gespeichertes Fenster mit denselben
Werten für `startTime`/`endTime`/`recurrencePattern`/`timezone` tatsächlich unterdrücken wird.
Nützlich, um vor dem Absenden von [Maintenance Window erstellen](/docs/api/maintenance-windows/create)
oder [Maintenance Window aktualisieren](/docs/api/maintenance-windows/update) zu zeigen, was ein
Muster bedeutet.

## Body

```json
{
  "startTime": "2026-08-10T02:00:00.000Z",
  "endTime": "2026-08-10T03:00:00.000Z",
  "isRecurring": true,
  "recurrencePattern": {
    "frequency": "weekly",
    "interval": 1,
    "daysOfWeek": [1, 3]
  },
  "timezone": "Europe/Berlin"
}
```

### Felder

| Feld | Typ | Beschreibung |
|------|-----|--------------|
| `startTime` | ISO-8601-Datum/Zeit | Erforderlich. Beginn des ersten Vorkommens. |
| `endTime` | ISO-8601-Datum/Zeit | Erforderlich. Ende des ersten Vorkommens. Muss nach `startTime` liegen. |
| `isRecurring` | boolean | Erforderlich. Bei `false` enthält die Antwort nur das einzelne Anker-Vorkommen. |
| `recurrencePattern` | Objekt | Erforderlich, wenn `isRecurring` `true` ist. Gleiche Struktur wie bei [Maintenance Window erstellen](/docs/api/maintenance-windows/create#recurrence). |
| `timezone` | string | Standard `"UTC"`. Die IANA-Zeitzone, in der das Muster interpretiert wird, gleiche Validierung und Kanonisierung wie das `timezone`-Feld bei Erstellung/Aktualisierung. |

Die Antwort liefert höchstens 5 kommende Vorkommen, mit einem Vorschau-Horizont von bis zu 5
Jahren ab dem aktuellen Zeitpunkt.

## Beispiel (cURL)

```bash
BASE_URL="https://uptimeify.io"
TOKEN="<dein-api-token>"

curl -X POST "$BASE_URL/api/maintenance-windows/preview-occurrences" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "startTime": "2026-08-10T02:00:00.000Z",
    "endTime": "2026-08-10T03:00:00.000Z",
    "isRecurring": true,
    "recurrencePattern": { "frequency": "weekly", "interval": 1, "daysOfWeek": [1, 3] },
    "timezone": "Europe/Berlin"
  }'
```

## Antwort (Response)

```json
{
  "occurrences": [
    { "start": "2026-08-10T00:00:00.000Z", "end": "2026-08-10T01:00:00.000Z" },
    { "start": "2026-08-12T00:00:00.000Z", "end": "2026-08-12T01:00:00.000Z" },
    { "start": "2026-08-17T00:00:00.000Z", "end": "2026-08-17T01:00:00.000Z" }
  ]
}
```

`occurrences` kann ein leeres Array sein (z. B. wenn das `endRecurrenceDate` eines
Wiederholungsmusters bereits vor dem Vorschau-Horizont liegt).

`isRecurring: true` ohne `recurrencePattern` ist kein Fehler. Das Fenster gilt dann als nicht
wiederkehrend, und die Antwort enthält nur das eine Vorkommen aus `startTime` und `endTime`,
derselbe Rückfall, den die Wiederholungsberechnung auch bei einem fehlerhaften Muster anwendet.

## Häufige Fehler

| Status | Beschreibung |
|--------|--------------|
| `400` (Validierung) | `timezone` ist ein reiner UTC-Offset oder kein vom Laufzeitsystem erkannter Zonenname. Standard-Zod-Validierungsfehler, kein `{ data: { code } }`. |
| `400` `{ data: { code: "invalidWindow" } }` | `endTime` liegt nicht nach `startTime`. |
| `401 Unauthorized` | Nicht angemeldet. |
