Website aktualisieren
Aktualisiert eine Website. Beherrscht Teil-Updates (nur gesendete Felder ändern sich) und Voll-Updates (alle Pflichtfelder müssen dabei sein).
PATCH /api/websites/:websitePublicId
Eine Anfrage gilt als Voll-Update, sobald customerId, name und url alle drei im Körper stehen. Sonst ist es ein Teil-Update.
Beispiel (cURL): Teil-Update
BASE_URL="https://uptimeify.io"
TOKEN="<dein-api-token>"
curl -X PATCH "$BASE_URL/api/websites/9a3d4d4d-7a4b-4f37-a9df-2a6f6d9d7a10" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"name": "Aktualisierter Name",
"checkInterval": 5,
"timeoutSeconds": 10
}'Beispiel (cURL): Voll-Update mit HTTP-Konfiguration
curl -X PATCH "$BASE_URL/api/websites/9a3d4d4d-7a4b-4f37-a9df-2a6f6d9d7a10" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"customerId": 5,
"name": "API Endpoint Monitor",
"url": "https://api.deinkunde.com/health",
"httpMethod": "POST",
"customHeaders": { "X-API-Key": "abc123", "Content-Type": "application/json" },
"requestBody": "{\"check\": true}",
"followRedirects": false,
"cookieHandling": "jar",
"mtlsEnabled": true,
"mtlsClientCert": "<PEM-kodiertes Client-Zertifikat>",
"mtlsClientKey": "<PEM-kodierter privater Schluessel>"
}'Anfrage (Request Body)
Für ein Voll-Update sind customerId, name und url Pflicht; jedes weitere Feld ist optional.
Ein Teil-Update übernimmt diese Felder: name, url, status, managementType, checkInterval, timeoutSeconds, expectedStatusCodes, searchTerm, checkExpectedResponseEnabled, expectedResponseMatchType, expectedResponseValue, expectedResponseJsonPath, heartbeatGracePeriodMinutes, connectHost, connectPort, connectTlsInsecure, die sechs Prüf-Felder, checkDomainExpiryEnabled, sslNoticeDays, sslErrorDays, domainExpiryNoticeDays, domainExpiryErrorDays, minPageSize und maxPageSize. Alles andere aus den Tabellen unten (monitoringType, allowedCheckCountryCodes, customFields, die Felder für Authentifizierung, HTTP-Anfrage, mTLS und Playwright sowie dnsConfig) greift nur im Voll-Update: allein geschickt bleibt es ohne Fehlermeldung wirkungslos. Schick customerId, name und url mit, oder nimm den jeweiligen eigenen Endpunkt, wo es einen gibt.
Kernfelder
| Feld | Typ | Beschreibung |
|---|---|---|
customerId | number|string | Public ID des Kunden (bevorzugt) oder die alte numerische ID |
name | string | Anzeigename, 1 bis 255 Zeichen |
url | string | Zu überwachende Adresse, höchstens 2048 Zeichen. HTTP-Monitore brauchen die vollständige URL samt Protokoll, DNS-Monitore nur den Hostnamen (ohne Protokoll, ohne Pfad). |
monitoringType | string | combined, http_status, ssl_check, playwright, heartbeat, dns |
status | string | active, inactive, maintenance (paused → inactive) |
checkInterval | number | Prüfintervall in Minuten. 1 bis 1440 (24 Stunden) für aktiv getaktete Monitore, 1 bis 43200 (30 Tage) für heartbeat-Monitore. Die Obergrenze richtet sich nach der Monitor-Art: monitoringType aus dem Request, sonst die gespeicherte Art. |
timeoutSeconds | number | Zeitlimit der Anfrage in Sekunden (1 bis 60) |
expectedStatusCodes | string | Erwartete HTTP-Statuscodes, durch Komma getrennt |
allowedCheckCountryCodes | string[]|null | Zweibuchstabige Ländercodes; null setzt auf die Vorgabe der Organisation zurück |
searchTerm | string|null | Schlüsselwort, nach dem gesucht wird (null löscht es) |
customFields | object|null | Eigene Feldwerte |
managementType | string | Ownership-Klasse: managed oder self_service, siehe Managed vs. Self-Service. Der Wechsel der Klasse ist Organisations-Admins vorbehalten; das Umstellen auf self_service erfordert allowSelfService und freies Kontingent. |
Authentifizierung
| Feld | Typ | Beschreibung |
|---|---|---|
authMode | string | none, authorization_header, basic. none löscht die hinterlegten Zugangsdaten. |
authorizationHeader | string|null | Pflicht, wenn authMode auf authorization_header steht. Verschlüsselt gespeichert. |
basicAuthUsername | string|null | Pflicht, wenn authMode auf basic steht. |
basicAuthPassword | string|null | Pflicht, wenn authMode auf basic steht. Verschlüsselt gespeichert. |
HTTP-Anfrage konfigurieren
| Feld | Typ | Beschreibung |
|---|---|---|
httpMethod | string | GET, QUERY, POST, PUT, PATCH, DELETE, HEAD, OPTIONS |
customHeaders | object|null | Eigene HTTP-Header (Schlüssel 1 bis 100 Zeichen, Werte höchstens 8192 Zeichen). null löscht sie. Verschlüsselt gespeichert. |
requestBody | string|null | Anfragekörper, höchstens 100 KB. Wird bei jeder Methode außer GET und HEAD mitgesendet. null löscht ihn. Verschlüsselt gespeichert. |
followRedirects | boolean | Ob Weiterleitungen verfolgt werden |
cookieHandling | string | none oder jar, letzteres behält Cookies über Weiterleitungen hinweg |
QUERY ist sicher und idempotent wie GET, trägt aber einen Anfragekörper. Den Hintergrund dazu erklärt Website erstellen.
Ersatzziel
| Feld | Typ | Beschreibung |
|---|---|---|
connectHost | string|null | Die Verbindung geht an diesen Host/diese IP statt an den aus url; URL, Pfad, Host-Header und TLS-SNI bleiben unverändert. Nur Host, oder Host mit Port; IPv6 in eckigen Klammern. null löscht das Ersatzziel und setzt connectTlsInsecure mit auf false zurück. Private, Loopback-, Link-Local- und sonst gesperrte Adressen werden abgelehnt (connectHostNotPublic). |
connectPort | number|null | Port für connectHost (1 bis 65535). Wirkt nur, wenn connectHost in derselben Anfrage mitgeschickt wird; allein gesendet bleibt es wirkungslos. |
connectTlsInsecure | boolean | Schaltet die Zertifikatsprüfung für connectHost ab. Nur gültig, solange ein connectHost gesetzt ist (sonst connectTlsInsecureWithoutHost). |
Gilt im Teil-Update genauso wie im Voll-Update. Nicht verfügbar für playwright-Szenarien und heartbeat-Monitore: beide durchlaufen nicht die HTTP/SSL-Prüfkette, in die connectHost eingreift. Ist checkHttpsRedirectEnabled eingeschaltet, folgt auch die Umleitungsprüfung von http auf https dem connectHost und misst damit den Origin - eine von der WAF übernommene Umleitung kann den Monitor dann zu Recht rot werden lassen, obwohl die öffentliche Seite korrekt umleitet.
mTLS (gegenseitiges TLS)
| Feld | Typ | Beschreibung |
|---|---|---|
mtlsEnabled | boolean | Gegenseitige TLS-Authentifizierung einschalten. false löscht Zertifikat und Schlüssel. |
mtlsClientCert | string|null | Client-Zertifikat (höchstens 100 KB). Pflicht, wenn mtlsEnabled true ist. Verschlüsselt gespeichert. |
mtlsClientKey | string|null | Privater Schlüssel des Clients (höchstens 100 KB). Pflicht, wenn mtlsEnabled true ist. Verschlüsselt gespeichert. |
Playwright-Monitoring
| Feld | Typ | Beschreibung |
|---|---|---|
playwrightScript | string|null | Pflicht, wenn monitoringType auf playwright steht (1 bis 100000 Zeichen) |
playwrightEnv | object|null | Umgebungsvariablen (höchstens 50; Schlüssel nach dem Muster ^[A-Z_][A-Z0-9_]*$) |
playwrightDevice | string|null | Voreinstellung für die Geräteemulation |
playwrightViewportWidth | number|null | Breite des Sichtfensters (1 bis 3840). Nur zusammen mit playwrightViewportHeight. |
playwrightViewportHeight | number|null | Höhe des Sichtfensters (1 bis 3840). Nur zusammen mit playwrightViewportWidth. |
playwrightRetries | number|null | Wiederholungen (0 bis 5) |
playwrightTimeoutMs | number|null | Zeitlimit in Millisekunden (1000 bis 180000) |
Erwartete Antwort prüfen
| Feld | Typ | Beschreibung |
|---|---|---|
checkExpectedResponseEnabled | boolean | Prüfung des Antwortkörpers einschalten |
expectedResponseMatchType | string|null | contains, equals, json_path_equals |
expectedResponseValue | string|null | Wert, der passen muss (höchstens 10000 Zeichen). Pflicht, sobald die Prüfung eingeschaltet ist. |
expectedResponseJsonPath | string|null | JSON-Pfad (höchstens 500 Zeichen). Pflicht bei json_path_equals. |
Prüfungen ein- und ausschalten
| Feld | Typ | Beschreibung |
|---|---|---|
checkSslEnabled | boolean | Zertifikatsprüfung (bei Playwright abgeschaltet) |
checkHttpsRedirectEnabled | boolean | Prüfung der HTTPS-Weiterleitung (bei Playwright abgeschaltet) |
checkStatusEnabled | boolean | Prüfung des HTTP-Status (bei Playwright abgeschaltet) |
checkSizeEnabled | boolean | Prüfung der Antwortgröße (bei Playwright abgeschaltet) |
checkResponseTimeEnabled | boolean | Prüfung der Antwortzeit (bei Playwright abgeschaltet) |
checkKeywordEnabled | boolean | Suche nach dem Schlüsselwort (bei Playwright abgeschaltet) |
Ein im Request fehlendes Prüf-Feld lässt den gespeicherten Wert unverändert. Das Paket der
Organisation kann eine Prüfung verbieten: ein true für eine verbotene Prüfung wird nur dann
auf false zurückgeklemmt, wenn die Prüfung noch nicht läuft; eine bereits als true
gespeicherte Prüfung schaltet das Paket bei diesem oder jedem späteren Update nie ab.
Schwellen für Zertifikat und Domain
| Feld | Typ | Beschreibung |
|---|---|---|
sslNoticeDays | number | Schwelle für den Zertifikatshinweis (1 bis 365, muss ≥ sslErrorDays sein) |
sslErrorDays | number | Schwelle für den Zertifikatsfehler (0 bis 365) |
checkDomainExpiryEnabled | boolean | Prüfung des Domain-Ablaufs (bei Playwright abgeschaltet) |
domainExpiryNoticeDays | number | Schwelle für den Domain-Hinweis (1 bis 365) |
domainExpiryErrorDays | number | Schwelle für den Domain-Fehler (0 bis 365) |
Seitengröße und Sonstiges
| Feld | Typ | Beschreibung |
|---|---|---|
minPageSize | number|null | Kleinste Seitengröße in Bytes (muss ≤ maxPageSize sein) |
maxPageSize | number|null | Größte Seitengröße in Bytes |
dnsConfig | object | Konfiguration der DNS-Abfrage (nur beim Monitor-Typ dns) |
heartbeatGracePeriodMinutes | number | Karenzzeit des Heartbeats (1 bis 10080) |
Antwort (Response)
Gibt den aktualisierten Website-Datensatz zurück. Die verschlüsselt gespeicherten Felder gibt die API grundsätzlich nicht heraus.
{
"id": 101,
"customerId": 1,
"name": "Aktualisierter Name",
"url": "https://deinkunde.com",
"status": "active",
"monitoringType": "combined",
"checkInterval": 5,
"timeoutSeconds": 10,
"httpMethod": "POST",
"followRedirects": false,
"cookieHandling": "jar",
"mtlsEnabled": true,
"connectHost": null,
"connectPort": null,
"connectTlsInsecure": false,
"updatedAt": "2026-02-26T12:34:56.000Z"
}Häufige Fehler
400 Website public ID (UUID) is required, wenn:websitePublicIdfehlt401 Unauthorized, wenn du nicht angemeldet bist403 Forbidden, wenn du auf die Website nicht schreiben darfst (etwa als Readonly- oder globaler Supporter-Zugang)403 Forbidden(managed_by_organization), wenn ein kunden-gescopter Aufrufer einenmanaged-Monitor ohne die AusnahmecanEditManagedbearbeitet403 Forbidden(managementTypeOrgOnly), wenn jemand ohne Org-Admin-RechtemanagementTypeändern will403 Forbidden(selfServiceQuotaReached), wenn das Umstellen aufself_servicedas Kontingent des Kunden überschreiten würde404 Customer not found, wenn sichcustomerIdkeinem bestehenden Kunden zuordnen lässt400 Invalid check configuration(invalidCheckConfig), wenn ein Teil-Update ein Prüf-Feld ausserhalb seiner Grenzen schickt (etwasslNoticeDays: 400)400 Bad Request(connectHostInvalid), wennconnectHostkein gültiger Host ist oder Protokoll bzw. Pfad enthält400 Bad Request(connectHostNotPublic), wennconnectHostauf eine private, Loopback-, Link-Local- oder sonst gesperrte Adresse auflöst400 Bad Request(connectTlsInsecureWithoutHost), wenn das sich ergebendeconnectTlsInsecuretrueist, während das sich ergebendeconnectHostleer bleibt500 Failed to update websitebei Serverfehlern