Uptimeify Docs

Sammelaktionen

Wendet eine Aktion auf mehrere Kunden gleichzeitig an, für Mehrfachauswahl-Workflows.

POST /api/customers/bulk

Wendet eine einzelne Aktion auf eine Liste von Kunden-IDs an. Jede ID wird unabhängig verarbeitet: Ein einzelner Konflikt oder ein fehlender Kunde bricht die restlichen nicht ab. Die Antwort ist immer 200 OK, auch wenn einzelne IDs fehlgeschlagen sind. Prüfe daher failed statt dich allein auf den HTTP-Status zu verlassen.

Authentifizierung

BASE_URL="https://uptimeify.io"
TOKEN="<your-api-token>"

Anfrage (Request Body)

{
  "ids": [101, 102, 103],
  "action": "reports",
  "payload": {
    "enabled": true
  }
}
FeldTypErforderlichBeschreibung
idsnumber[]jaKunden-IDs (die numerische id, nicht publicId). Nicht leer, maximal 200 Einträge, positive Ganzzahlen, keine Duplikate.
actionstringjaEine von reports, activate, deactivate, delete, package.
payloadobjectabhängig von actionErforderlich für reports und package (siehe unten). Wird bei activate, deactivate, delete ignoriert.

Aktionen

AktionWirkungpayload
reportsSetzt monthlyReportsEnabled bei jedem Kunden.{ "enabled": boolean } (erforderlich)
activateSetzt den Kundenstatus auf active (kein Effekt, falls bereits aktiv) und kaskadiert die Monitor-Status entsprechend.keins
deactivateSetzt den Kundenstatus auf inactive (kein Effekt, falls bereits inaktiv) und kaskadiert die Monitor-Status entsprechend.keins
deleteLöscht den Kunden endgültig (Hard Delete). Monitore und Check-Historie werden per Kaskade mitgelöscht. Nicht rückgängig zu machen.keins
packageWeist dem Kunden ein anderes Paket per ID zu.{ "packageId": number } (erforderlich)

package akzeptiert ausschließlich eine numerische packageId, die zur Organisation des jeweiligen Kunden gehört. Für alle Aufrufenden außer globalen Admins ist das dasselbe wie die eigene Organisation, denn nur deren Kunden sind überhaupt adressierbar. Ein globaler Admin, der Kunden mehrerer Organisationen bearbeitet, braucht je Kunde eine packageId aus dessen eigener Organisation; eine fremde wird mit invalidPackageType abgelehnt. Anders als bei Kunden aktualisieren wird kein legacy packageType-String oder Display-Name aufgelöst, denn das Erraten des gemeinten Pakets über bis zu 200 Zeilen hinweg ist genau das, was der Sammelaktions-Endpunkt nicht tut. Die ID lässt sich zuvor über Paket-Konfigurationen auflisten ermitteln.

payload.enabled und payload.packageId werden einmalig im Voraus validiert, bevor irgendein Kunde angefasst wird. Ein fehlerhaftes Payload lässt die gesamte Anfrage mit 400 invalidRequestBody fehlschlagen; es wird niemals zu 200 identischen Einzel-Fehlern pro ID.

Beispiel-Request

curl -X POST "$BASE_URL/api/customers/bulk" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ids": [101, 102, 103],
    "action": "reports",
    "payload": { "enabled": true }
  }'

Beispiel-Response (Teilergebnis)

{
  "ok": [101, 103],
  "failed": [
    { "id": 102, "reason": "customerNotFound" }
  ]
}

ok listet die aktualisierten IDs. failed listet die nicht aktualisierten IDs, jeweils mit einem reason-String. Zeige das Teilergebnis an (zum Beispiel „2 von 3 aktualisiert"), niemals einen pauschalen Erfolg allein aufgrund des 200-Status der Anfrage.

Häufige Fehler

Diese lassen die gesamte Anfrage fehlschlagen, bevor überhaupt ein Kunde angefasst wird:

  • 401 unauthorized du bist nicht eingeloggt
  • 403 forbidden deine Rolle ist readonly, oder du bist Global Supporter (beide sind für diesen Endpunkt nur lesend)
  • 400 invalidRequestBody ids fehlt/ist leer/ist kein Array, enthält mehr als 200 Einträge, enthält eine Nicht-Ganzzahl, einen Wert <= 0 oder ein Duplikat; action ist keine der fünf unterstützten Aktionen; oder payload.enabled bzw. payload.packageId fehlt oder hat den falschen Typ für die gewählte Aktion

Diese erscheinen pro ID, innerhalb von failed[].reason, ohne die Anfrage fehlschlagen zu lassen:

ReasonBedeutung
customerNotFoundDie ID existiert nicht oder gehört zu einer anderen Organisation (Global Admins dürfen jede ID ansprechen; alle anderen sind auf ihre eigene Organisation beschränkt). Bewusst nicht von „existiert nicht" zu unterscheiden, damit dieser Endpunkt nicht zum Aufspüren fremder IDs missbraucht werden kann.
invalidPackageTypeNur bei Aktion package: payload.packageId löst sich nicht auf eine Paket-Konfiguration auf, die zur Organisation dieses Kunden gehört.
organizationIdRequiredDie Session des Aufrufers hat weder einen Organisationsbezug noch Global-Admin-Scope. Nur bei einer fehlerhaften Session/einem fehlerhaften Token möglich; ein normal authentifizierter Aufrufer sieht das nie.
unknownJede andere Ablehnung, am häufigsten ein kunden-gescopter Aufrufer (eine eingeschränkte Rolle, oder ein kunden-gescoptes API-/Agent-Token), der eine ID außerhalb seiner zugewiesenen Kunden anspricht. Außerdem die Rückfallebene für jeden Fehler ohne stabilen data.code.

Auf dieser Seite