Maintenance Window erstellen
Erstellt ein neues Wartungsfenster. Unterstützt einen einzelnen Monitor (Legacy), mehrere Monitore, tag-basiertes (inkl. organisationsweit) oder kunden-weites Targeting.
POST /api/maintenance-windows
Body
{
"name": "Datenbank-Migration",
"startTime": "2026-07-10T22:00:00.000Z",
"endTime": "2026-07-11T01:00:00.000Z",
"targets": [
{ "type": "website", "id": "ef8a6564-0ccf-4f3f-a5ef-d2963176b3eb" },
{ "type": "icmp", "id": "3d005a18-fdd8-4dc7-9f26-1a9d409c1bc5" }
],
"tagIds": [7],
"description": "Geplante Schema-Migration",
"isRecurring": false,
"isActive": true
}Pflichtfelder
name(string): Eine freundliche Bezeichnung für das Fenster.startTime(ISO 8601 Datetime): Zeitpunkt, an dem das Fenster beginnt.endTime(ISO 8601 Datetime): Zeitpunkt, an dem das Fenster endet. Muss nachstartTimeliegen.- Mindestens ein Zielfeld (siehe unten).
Zielauswahl (gegenseitig ausschließende Modi)
Genau ein Targeting-Modus muss verwendet werden. targets und tagIds können innerhalb des Multi-Monitor-Modus kombiniert werden.
| Feld | Typ | Beschreibung |
|---|---|---|
websiteId | number | Legacy: einzelner Website-Monitor |
icmpMonitorId | number | Legacy: einzelner ICMP-Monitor |
smtpMonitorId | number | Legacy: einzelner SMTP-Monitor |
sshMonitorId | number | Legacy: einzelner SSH-Monitor |
ftpMonitorId | number | Legacy: einzelner FTP-Monitor |
imapPopMonitorId | number | Legacy: einzelner IMAP/POP-Monitor |
dnsMonitorId | number | Legacy: einzelner DNS-Monitor |
customerIpId | number | Legacy: einzelne Kunden-IP |
customerDomainId | number | Legacy: einzelne Kunden-Domain |
targets | { type, id }[] | Multi-Monitor: type ist eines von website | dns | icmp | smtp | ssh | ftp | imap_pop | customer_domain | customer_ip. id ist die öffentliche ID des Monitors (UUID), dieselbe Kennung, die auch die einzelnen Alt-Felder annehmen; eine numerische Zeilen-ID wird weiterhin akzeptiert. |
tagIds | number[] | Tag-basiert: siehe Nur-Tag-Modus (organisationsweit) |
customerId | number | Kunden-Ebene: deckt jeden Monitor dieses Kunden ab |
Nur-Tag-Modus (organisationsweit)
Wird tagIds ohne customerId, targets oder Legacy-Felder gesendet, entsteht ein organisationsweites Wartungsfenster. Es deckt dynamisch jeden Monitor der gesamten Organisation ab, der aktuell die angegebenen Tags trägt, über alle Kunden hinweg.
{
"name": "Infra-Tag-Freeze",
"startTime": "2026-07-10T22:00:00.000Z",
"endTime": "2026-07-11T01:00:00.000Z",
"tagIds": [7]
}- Erfordert einen organisationsweiten Admin oder Editor: die Rolle UND einen uneingeschränkten Kunden-Scope. Ein kundengebundener Akteur (ein
readonly-Benutzer, eineditormit Kundenzuweisungen, ein Customer-Scoped Token) bekommt kein organisationsweites Fenster: Ist er genau einem Kunden zugeordnet, wird das Fenster an diesen Kunden gebunden und deckt nur dessen getaggte Monitore ab; ist er mehreren (oder keinem) zugeordnet, wird der Request mit400 tagOnlyNeedsCustomerabgelehnt und er muss stattdessen Monitore oder einen Kunden auswählen. Siehe Rollen und der Kunden-Scope. - Die Tag-Zugehörigkeit wird live zur Prüfzeit aufgelöst: nach der Fenstererstellung getaggte Monitore werden automatisch abgedeckt.
- Alle
tagIdsmüssen zur selben Organisation gehören; das Mischen von Tags verschiedener Organisationen gibt400 mixedTagOrganizationszurück.
Kombinationsregeln
- Mindestens ein Zielfeld ist erforderlich. Das Weglassen aller Felder ist ein Zod-Validierungsfehler (Standard-
400mit Validierungsantwort, keindata.code-Fehler). customerId(Kunden-Ebene-Modus) kann nicht mittargets,tagIdsoder Legacy-Feldern kombiniert werden. Das Kombinieren ist ein Zod-Validierungsfehler (Standard-400).- Alle Monitore in
targetsmüssen zum selben Kunden gehören; das Mischen von Kunden gibt{ data: { code: "mixedCustomers" } }zurück. - Alle
tagIdsmüssen zur selben Organisation gehören; das Mischen gibt{ data: { code: "mixedTagOrganizations" } }zurück.
Optionale Felder
| Feld | Typ | Beschreibung |
|---|---|---|
description | string | Freitext-Notizen (erscheinen in der Historie). |
isRecurring | boolean | Standard false. Auf true setzen, um recurrencePattern zu aktivieren. |
recurrencePattern | object | Erforderlich, wenn isRecurring true ist. Siehe Wiederholung. |
isActive | boolean | Standard true. Auf false setzen, um ein deaktiviertes Fenster zu erstellen. |
timezone | string | Standard "UTC". 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. |
Wiederholung
{
"frequency": "weekly",
"interval": 1,
"daysOfWeek": [1, 3],
"dayOfMonth": null,
"endRecurrenceDate": "2026-12-31"
}| Feld | Werte |
|---|---|
frequency | daily | weekly | monthly |
interval | Ganzzahl ≥ 1 (Wiederholung alle N Perioden) |
daysOfWeek | Array von 0-6 (0 = Sonntag); verwendet wenn frequency weekly ist |
dayOfMonth | 1-31; verwendet wenn frequency monthly ist |
endRecurrenceDate | ISO-Datumsstring; optional, beendet die Wiederholung nach diesem Datum |
Dynamisches Tag-Verhalten
Die Tag-Abdeckung wird vom Monitoring-Worker live zum Zeitpunkt der Prüfung aufgelöst. Ein Monitor, der nach der Fenstererstellung getaggt wird, wird automatisch abgedeckt, ohne das Fenster zu aktualisieren. Das Entfernen eines Tags von einem Monitor beendet die Abdeckung sofort.
Beispiel (cURL)
BASE_URL="https://uptimeify.io"
TOKEN="<dein-api-token>"
curl -X POST "$BASE_URL/api/maintenance-windows" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Datenbank-Migration",
"startTime": "2026-07-10T22:00:00.000Z",
"endTime": "2026-07-11T01:00:00.000Z",
"targets": [
{ "type": "website", "id": 101 }
]
}'Antwort (Response)
{
"id": 42,
"publicId": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"organizationId": 10,
"customerId": 1,
"name": "Datenbank-Migration",
"description": null,
"startTime": "2026-07-10T22:00:00.000Z",
"endTime": "2026-07-11T01:00:00.000Z",
"isRecurring": false,
"recurrencePattern": null,
"isActive": true,
"timezone": "UTC",
"targets": [
{ "type": "website", "id": 101 }
],
"tags": [],
"websiteId": null,
"icmpMonitorId": null,
"smtpMonitorId": null,
"sshMonitorId": null,
"ftpMonitorId": null,
"imapPopMonitorId": null,
"dnsMonitorId": null,
"customerIpId": null,
"customerDomainId": null,
"createdAt": "2026-06-29T10:00:00.000Z",
"updatedAt": "2026-06-29T10:00:00.000Z"
}Häufige Fehler
| Status | Beschreibung |
|---|---|
400 (Validierung) | Kein Zielfeld angegeben, customerId 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. |
400 { data: { code: "tagOnlyNeedsCustomer" } } | Nur-Tag-Request eines kundengebundenen Akteurs, der mehreren Kunden (oder keinem) zugeordnet ist: Monitore oder einen einzelnen Kunden auswählen. |
403 Forbidden | Kein Zugriff auf die Organisation, oder das Ziel liegt außerhalb des Bereichs (globale Support-Konten können keine Wartungsfenster erstellen). |
404 { data: { code: "tagNotFound" } } | Eine tagId existiert nicht in der Organisation. |
Maintenance Windows
Erstelle und verwalte Wartungsfenster, um Alarme bei geplanten Arbeiten zu unterdrücken. Fenster können einen einzelnen Monitor, mehrere Monitore, einen gesamten Kunden oder alle Monitore mit einem bestimmten Tag abdecken.
Maintenance Window löschen
Löscht ein Wartungsfenster dauerhaft. Die aktive Alarm-Unterdrückung endet sofort.