---
title: "Maintenance Window aktualisieren"
description: "Aktualisiert ein Wartungsfenster partiell. Alle Felder sind optional; nur angegebene Felder werden geändert. Wenn targets oder tagIds angegeben werden, ersetzen sie die bestehende Auswahl vollständig."
---

`PATCH /api/maintenance-windows/{id}`

## Pfad-Parameter

- `id` (erforderlich): Die numerische ID des zu aktualisierenden Wartungsfensters.

## Body

Alle Felder sind optional. Felder weglassen, um sie unverändert zu lassen.

```json
{
  "name": "Erweitertes Deployment-Fenster",
  "endTime": "2026-07-11T03:00:00.000Z",
  "targets": [
    { "type": "website", "id": 101 },
    { "type": "dns", "id": 9 }
  ],
  "tagIds": [7, 12],
  "isActive": true
}
```

### Aktualisierbare Felder

| Feld | Typ | Hinweise |
|------|-----|----------|
| `name` | string | Anzeigename |
| `description` | string | Freitext-Notizen |
| `startTime` | ISO 8601 Datetime | Neuer Startzeitpunkt |
| `endTime` | ISO 8601 Datetime | Neuer Endzeitpunkt; muss nach `startTime` liegen |
| `isActive` | boolean | Aktivieren oder deaktivieren ohne Löschen |
| `isRecurring` | boolean | Wiederholung umschalten |
| `recurrencePattern` | object | Ersetzt das Wiederholungsmuster; Struktur identisch mit create |
| `timezone` | string | Die IANA-Zeitzone (z. B. `"Europe/Berlin"`), in der das Wiederholungsmuster interpretiert wird. Schreibweisen unabhängig von Groß-/Kleinschreibung sowie veraltete IANA-Linknamen (z. B. `"gmt"`, `"Zulu"`) werden akzeptiert und unter der kanonischen Bezeichnung des Laufzeitsystems gespeichert, `"utc"` und `"Zulu"` werden beide als `"UTC"` gespeichert. Ein reiner UTC-Offset (z. B. `"+05:00"`) wird abgewiesen: Er enthält keine Sommerzeit-Regel und kann daher nicht leisten, was ein Zonenname leistet. |
| `targets` | `{ type, id }[]` | **Ersetzt** die vollständige Menge der expliziten Monitor-Ziele |
| `tagIds` | number[] | **Ersetzt** die vollständige Menge der Tag-IDs |
| `websiteId` / `icmpMonitorId` / … | number \| null | Legacy-Felder für einzelne Ziele |
| `customerId` | number | Kunden-Anker (nur für tag-only Fenster) |

### Ersetz-Semantik für targets und tagIds

Wenn `targets` oder `tagIds` im Request-Body enthalten ist, wird die **gesamte bestehende Auswahl** für dieses Feld ersetzt. Um alle expliziten Ziele zu entfernen, sende `"targets": []`; um alle Tags zu entfernen, sende `"tagIds": []`.

### Kombinationsregeln

PATCH validiert den Ziel- und Tag-Scope über denselben Resolver wie create, führt jedoch **nicht** den create-zeitigen Zod-superRefine erneut aus. In der Praxis:

- `customerId` kann nicht mit `targets`, `tagIds` oder Legacy-Feldern kombiniert werden.
- Alle Monitore in `targets` müssen zum selben Kunden gehören; Mischung gibt `{ data: { code: "mixedCustomers" } }` zurück.
- Ein organisationsweites Nur-Tag-Fenster (Tags ohne `customerId`, `targets` oder Legacy-Felder) kann von Admin- oder Editor-Benutzern innerhalb der Organisation bearbeitet werden.

### Readonly-Benutzer im Scope

Readonly-Benutzer, die dem Kunden des Fensters zugewiesen sind, können Wartungsfenster für diesen Kunden bearbeiten. Globale Support-Konten können dies nicht. Readonly-Benutzer können keine organisationsweiten Nur-Tag-Fenster erstellen oder aktualisieren.

## Beispiel (cURL)

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

curl -X PATCH "$BASE_URL/api/maintenance-windows/42" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"isActive": false}'
```

## Antwort (Response)

Gibt das aktualisierte Wartungsfenster-Objekt in der gleichen Form zurück wie [Maintenance Window abrufen](./get).

## Häufige Fehler

| Status | Beschreibung |
|--------|--------------|
| `400` (Validierung) | Die Aktualisierung würde das Fenster ohne Ziele zurücklassen, `customerId` wird mit anderen Zielfeldern kombiniert, oder `timezone` ist ein reiner UTC-Offset oder kein vom Laufzeitsystem erkannter Zonenname. Dies sind Zod-Validierungsfehler; der Response-Body ist ein Standard-Validierungsfehler, **kein** `{ data: { code } }`. |
| `400` `{ data: { code: "mixedCustomers" } }` | `targets` enthält Monitore verschiedener Kunden. |
| `400` `{ data: { code: "mixedTagOrganizations" } }` | `tagIds` enthält Tags aus verschiedenen Organisationen. |
| `401 Unauthorized` | Nicht angemeldet. |
| `403 Forbidden` | Kein Zugriff auf das Fenster (globale Support-Konten können nicht bearbeiten), oder readonly-Benutzer versucht einen organisationsweiten Nur-Tag-Scope zu setzen. |
| `404 Not Found` | Kein Wartungsfenster mit der angegebenen ID gefunden. |
| `404` `{ data: { code: "tagNotFound" } }` | Eine `tagId` existiert nicht in der Organisation. |
