Wartung planen
Plant eine Wartung für Status-Seiten und Komponenten, mit Ankündigung, Erinnerung, Beginn- und Ende-Nachricht.
POST /api/status-pages/maintenances
state kommt aus der Uhr und wird nie gespeichert: scheduled vor scheduledFor, in_progress bis scheduledUntil, danach completed; cancelled, sobald abgesagt. Die Wartung beginnt und endet von selbst, dafür ist kein Aufruf nötig. Solange sie in_progress ist, zeigen ihre Komponenten auf der öffentlichen Seite maintenance (ein schlimmerer Zustand wie ein Ausfall bleibt); eine Wartung ohne Komponenten zeigt die ganze Seite in Wartung.
Abonnenten der Status-Seite (oder einer betroffenen Komponente) bekommen über ihren Kanal (E-Mail, Webhook, Slack, Teams) die Ereignisse maintenance_scheduled (beim Speichern und erneut, wenn ein bevorstehender Beginn verschoben wird), maintenance_reminder, maintenance_started, maintenance_completed, maintenance_update und maintenance_cancelled. Die Schalter unten bestimmen, welche davon verschickt werden; jedes Ereignis steht außerdem im RSS- und Atom-Feed der Seite. Der Versand beachtet die Abo-Verzögerung der Seite und wird zur Sendezeit entschieden: eine verschobene oder abgesagte Wartung verschickt ihre überholten Nachrichten nicht.
Eine Wartung hier informiert die Besucher deiner Status-Seiten. Sie pausiert keine Monitor-Alarme: dafür legst du im Monitoring ein Wartungsfenster an, das auch auf Seiten mit diesen Monitoren erscheint.
Zugriff
Organisations-admin und editor. Ein kundengebundener Nutzer oder API-Token erreicht nur Wartungen, deren Status-Seiten alle zu einem Kunden in seinem Bereich gehören; eine Seite ohne Kunde (customerId: null) ist Org-weiten Rollen vorbehalten. Eine Wartung einer anderen Organisation antwortet 404 (statusPageMaintenanceNotFound). IDs im Pfad nehmen die numerische ID oder die publicId. Die Änderung steht im Audit-Protokoll der Organisation.
Request-Body
| Feld | Typ | Pflicht | Standard | Beschreibung |
|---|---|---|---|---|
title | string | Ja | - | Steht auf der Seite und in jeder Nachricht (1-200 Zeichen). |
description | string|null | Nein | null | Was passiert und was Besucher merken (max. 5000 Zeichen). |
scheduledFor | string | Ja | - | Beginn, ISO 8601 mit Versatz (Z oder +01:00); gespeichert und zurückgegeben in UTC. |
scheduledUntil | string | Ja | - | Ende, nach scheduledFor. |
statusPageIds | array | Ja | - | Status-Seiten (ID oder publicId, 1-10), die die Wartung zeigen. |
componentIds | array | Nein | [] | Betroffene Komponenten (ID oder publicId, bis 100) jeder Quelle: manuell, Monitor oder Drittanbieter. Jede muss zu einer der statusPageIds gehören. Eine Seite ohne genannte Komponente zeigt die Wartung seitenweit. |
notifyOnSchedule | boolean | Nein | true | Beim Speichern an Abonnenten ankündigen, und erneut, wenn ein bevorstehender Beginn verschoben wird. |
reminderMinutesBefore | number|null | Nein | null | Abonnenten so viele Minuten (5-10080) vor dem Beginn erinnern; null schickt keine Erinnerung. |
notifyOnStart | boolean | Nein | false | Abonnenten bei Beginn benachrichtigen. |
notifyOnComplete | boolean | Nein | true | Abonnenten bei Ende benachrichtigen. |
Unbekannte Felder werden abgewiesen. Eine Wartung, die ganz in der Vergangenheit liegt, wird ohne Ankündigung gespeichert.
Beispiel (cURL)
BASE_URL="https://uptimeify.io"
TOKEN="<dein-api-token>"
curl -X POST "$BASE_URL/api/status-pages/maintenances" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"title": "Database upgrade", "scheduledFor": "2026-11-03T23:00:00+01:00", "scheduledUntil": "2026-11-04T00:00:00+01:00", "statusPageIds": [1], "componentIds": [7], "reminderMinutesBefore": 60}'Antwort
201 Created mit der Wartung:
{
"id": 12,
"publicId": "3f1c2a9e-5b7d-4c8e-9a1f-2b3c4d5e6f70",
"organizationId": 4,
"title": "Database upgrade",
"description": "Checkout may be slow for a few minutes.",
"scheduledFor": "2026-11-03T22:00:00.000Z",
"scheduledUntil": "2026-11-03T23:00:00.000Z",
"state": "scheduled",
"notifyOnSchedule": true,
"reminderMinutesBefore": 60,
"notifyOnStart": false,
"notifyOnComplete": true,
"cancelledAt": null,
"statusPageIds": [1],
"componentIds": [7],
"links": [
{
"statusPageId": 1,
"statusPagePublicId": "0b6f3c1e-8d2a-4f5b-9c7e-1a2b3c4d5e6f",
"statusPageName": "Acme Status",
"componentId": 7,
"componentPublicId": "5a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
"componentName": "Checkout"
}
],
"updates": [],
"createdAt": "2026-10-28T09:00:00.000Z",
"updatedAt": "2026-10-28T09:00:00.000Z"
}Felder
statusPageIdsundcomponentIdsgeben die Anfrage wieder;linksnennt jede Seite und Komponente (componentId: null= die ganze Seite).updatessind die öffentlichen Updates, älteste zuerst (siehe Wartungs-Update veröffentlichen).
Häufige Fehler
400 Bad Request(invalidRequestBody), wenn ein Feld fehlt, den falschen Typ hat oder unbekannt ist;data.issuesnennt das Feld400 Bad Request(invalidDateRange), wennscheduledUntilnicht nachscheduledForliegt400 Bad Request(invalidIdentifier), wenn eine ID weder Zahl noch UUID ist400 Bad Request(statusPageComponentNotOnPage), wenn eine Komponente zu keiner derstatusPageIdsgehört401 Unauthorized, wenn du nicht angemeldet bist403 Forbidden(forbidden), wenn deine Rolle das nicht darf, oder für einen kundengebundenen Aufrufer auf einer Seite ohne Kunde oder eines anderen Kunden403 Forbidden(statusPagesModuleDisabled), wenn das Statusseiten-Modul nicht aktiviert ist404 Not Found(statusPageNotFound), wenn eine Status-Seite nicht existiert oder zu einer anderen Organisation gehört404 Not Found(statusPageComponentNotFound), wenn es eine Komponente nicht gibt