Uptimeify Docs

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": 101 },
    { "type": "icmp", "id": 5 }
  ],
  "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 nach startTime liegen.
  • 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.

FeldTypBeschreibung
websiteIdnumberLegacy: einzelner Website-Monitor
icmpMonitorIdnumberLegacy: einzelner ICMP-Monitor
smtpMonitorIdnumberLegacy: einzelner SMTP-Monitor
sshMonitorIdnumberLegacy: einzelner SSH-Monitor
ftpMonitorIdnumberLegacy: einzelner FTP-Monitor
imapPopMonitorIdnumberLegacy: einzelner IMAP/POP-Monitor
dnsMonitorIdnumberLegacy: einzelner DNS-Monitor
customerIpIdnumberLegacy: einzelne Kunden-IP
customerDomainIdnumberLegacy: einzelne Kunden-Domain
targets{ type, id }[]Multi-Monitor: type ist eines von website | dns | icmp | smtp | ssh | ftp | imap_pop
tagIdsnumber[]Tag-basiert: siehe Nur-Tag-Modus (organisationsweit)
customerIdnumberKunden-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 Admin- oder Editor-Rolle. Readonly-Benutzer, die dies versuchen, erhalten 403 Forbidden.
  • Die Tag-Zugehörigkeit wird live zur Prüfzeit aufgelöst — nach der Fenstererstellung getaggte Monitore werden automatisch abgedeckt.
  • Alle tagIds müssen zur selben Organisation gehören; das Mischen von Tags verschiedener Organisationen gibt 400 mixedTagOrganizations zurück.

Kombinationsregeln

  • Mindestens ein Zielfeld ist erforderlich. Das Weglassen aller Felder ist ein Zod-Validierungsfehler (Standard-400 mit Validierungsantwort, kein data.code-Fehler).
  • customerId (Kunden-Ebene-Modus) kann nicht mit targets, tagIds oder Legacy-Feldern kombiniert werden. Das Kombinieren ist ein Zod-Validierungsfehler (Standard-400).
  • Alle Monitore in targets müssen zum selben Kunden gehören; das Mischen von Kunden gibt { data: { code: "mixedCustomers" } } zurück.
  • Alle tagIds müssen zur selben Organisation gehören; das Mischen gibt { data: { code: "mixedTagOrganizations" } } zurück.

Optionale Felder

FeldTypBeschreibung
descriptionstringFreitext-Notizen (erscheinen in der Historie).
isRecurringbooleanStandard false. Auf true setzen, um recurrencePattern zu aktivieren.
recurrencePatternobjectErforderlich, wenn isRecurring true ist. Siehe Wiederholung.
isActivebooleanStandard true. Auf false setzen, um ein deaktiviertes Fenster zu erstellen.

Wiederholung

{
  "frequency": "weekly",
  "interval": 1,
  "daysOfWeek": [1, 3],
  "dayOfMonth": null,
  "endRecurrenceDate": "2026-12-31"
}
FeldWerte
frequencydaily | weekly | monthly
intervalGanzzahl ≥ 1 (Wiederholung alle N Perioden)
daysOfWeekArray von 06 (0 = Sonntag); verwendet wenn frequency weekly ist
dayOfMonth131; verwendet wenn frequency monthly ist
endRecurrenceDateISO-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,
  "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

StatusBeschreibung
400 (Validierung)Kein Zielfeld angegeben, oder customerId mit anderen Zielfeldern kombiniert. 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 UnauthorizedNicht angemeldet.
403 ForbiddenKein Zugriff auf die Organisation, das Ziel liegt außerhalb des Bereichs (globale Support-Konten können keine Wartungsfenster erstellen), oder der Benutzer ist readonly und versucht ein organisationsweites Nur-Tag-Fenster zu erstellen.
404 { data: { code: "tagNotFound" } }Eine tagId existiert nicht in der Organisation.

Auf dieser Seite