---
title: "Paket-Konfiguration erstellen/aktualisieren"
description: "Erstellt eine neue Paket-Konfiguration (über :packageType) oder aktualisiert eine bestehende. packageType ist ein frei wählbarer Bezeichner der Organisation. Customer-Endpoints können später genau diesen Key verwenden."
---

`PATCH /api/package-configs/:packageType`

Hier werden u.a. Alerting-Defaults wie `alertConsecutiveChecks` sowie Feature-Flags wie `enableEmailAlerts` gepflegt.

## Anfrage (Request Body)

Alle Felder sind optional.

Wenn du im UI einen lesbaren Namen anzeigen willst, kannst du zusätzlich `displayName` setzen und den technischen `packageType` stabil halten.

```json
{
  "displayName": "Pro Care",
  "maxUrls": 100,
  "dataRetentionMonths": 12,
  "checkIntervalMinutes": 1,
  "checkLocations": 3,
  "notificationDelayMinutes": 0,
  "reminderDelayMinutes": 10,

  "alertConsecutiveChecks": 3,
  "alertLocationThreshold": "majority",
  "alertLocationThresholdCount": 2,
  "alertReminderInterval": 60,

  "enableEmailAlerts": true,
  "enableSmsAlerts": true,
  "enableWebhookAlerts": true,
  "enableIntegrationAlerts": true,
  "enablePostRequestEscalation": false,
  "enableMaintenanceWindows": true,
  "enablePdfReports": true,
  "monthlyReportsDefault": true,

  "allowSelfService": true,
  "maxSelfServiceUrls": 10,

  "notes": "Default für PRO-Kunden"
}
```

### Monitor-Ownership-Standards

`allowSelfService` (Standard `false`) und `maxSelfServiceUrls` (Standard `0`) sind die Paket-Standards für das [Managed-vs.-Self-Service](/de/monitoring/managed-vs-self-service)-Modell. Jeder Kunde des Pakets erbt sie, sofern der Kunde keinen eigenen non-`null`-Override trägt (siehe [Kunden aktualisieren](/de/api/customers/update-customer)). `maxSelfServiceUrls` begrenzt die **Gesamtzahl** der Self-Service-Monitore eines Kunden über alle Monitor-Typen. Die `enable*`-Alarm-Flags fungieren zugleich als vererbte Kanal-Typ-Policy desselben Modells.

### `alertConsecutiveChecks`

Eine ganze Zahl zwischen **1 und 10**; Werte außerhalb dieses Bereichs werden mit `400` und
`data.code` `invalidRequestBody` abgelehnt. Der Wert bestimmt, wie viele aufeinanderfolgende
fehlgeschlagene Zyklen einen Vorfall eröffnen, und er begrenzt zugleich, wie viele
aufeinanderfolgende erfolgreiche Zyklen nötig sind, damit er sich wieder schließt. Ein sehr großer
Wert verzögert also nicht nur die Alarmierung, sondern auch die Auflösung: bei einem 5-Minuten-Takt
hielte der Wert 999 einen Vorfall über 83 Stunden durchgehend grüner Prüfungen hinweg offen. Die
Obergrenze entspricht der, die das Dashboard seit jeher durchsetzt.

### `monthlyReportsDefault`

`monthlyReportsDefault` (boolean, Standard `true`) ist eine **Vorlage**, kein Live-Schalter: Sie legt beim Anlegen eines neuen Kunden dessen `monthlyReportsEnabled` fest. Ein bereits bestehender Kunde wird dadurch nie überschrieben, sein eigener Wert gilt immer, sobald er gesetzt ist. Um einen geänderten Default auch auf Kunden zu übertragen, die **bereits** auf diesem Paket sind, rufe anschließend [Report-Default übertragen](/de/api/organization/apply-report-default) auf.

## Beispiel (cURL)

```bash
BASE_URL="https://uptimeify.io"
TOKEN="<dein-api-token>"

curl -X PATCH "$BASE_URL/api/package-configs/pro" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "displayName":"Pro Care",
    "maxUrls":100,
    "dataRetentionMonths":12,
    "checkIntervalMinutes":1,
    "checkLocations":3,
    "notificationDelayMinutes":0,
    "reminderDelayMinutes":10,
    "alertConsecutiveChecks":3,
    "alertLocationThreshold":"majority",
    "alertLocationThresholdCount":2,
    "alertReminderInterval":60,
    "enableEmailAlerts":true,
    "enableSmsAlerts":true,
    "enableWebhookAlerts":true,
    "enableIntegrationAlerts":true,
    "enableMaintenanceWindows":true,
    "enablePdfReports":true,
    "monthlyReportsDefault":true,
    "notes":"Default für PRO-Kunden"
  }'
```

## Antwort (Response)

Gibt die erstellte/aktualisierte Paket-Konfiguration zurück.

```json
{
  "id": 10,
  "packageType": "pro",
  "displayName": "Pro Care",
  "maxUrls": 100,
  "dataRetentionMonths": 12,
  "checkIntervalMinutes": 1,
  "checkLocations": 3,
  "notificationDelayMinutes": 0,
  "reminderDelayMinutes": 10,
  "alertConsecutiveChecks": 3,
  "alertLocationThreshold": "majority",
  "alertLocationThresholdCount": 2,
  "alertReminderInterval": 60,
  "enableEmailAlerts": true,
  "enableSmsAlerts": true,
  "enableWebhookAlerts": true,
  "enableIntegrationAlerts": true,
  "enableMaintenanceWindows": true,
  "enablePdfReports": true,
  "monthlyReportsDefault": true,
  "notes": "Default für PRO-Kunden",
  "createdAt": "2026-02-26T12:00:00.000Z",
  "updatedAt": "2026-02-26T12:00:00.000Z"
}
```

Hinweise:

- Die Organisation wird automatisch aus deiner authentifizierten Session bzw. deinem API-Token abgeleitet.
- Die body-basierte Variante `PATCH /api/package-configs` wird ebenfalls unterstützt, wenn `packageType` im Request-Body mitgesendet wird.
- Die Legacy-Route `PATCH /api/organizations/:organizationPublicId/package-configs/:packageType` bleibt aus Kompatibilitätsgründen weiterhin verfügbar.
- Der plurale org-lose Alias `PATCH /api/organizations/package-configs/:packageType` wird ebenfalls unterstützt.
- Global Admins brauchen für die org-lose Route einen aktiven Organisationskontext in der Session.

## Häufige Fehler

- `400 Package type is required` wenn `:packageType` fehlt
- `400 Organization ID is required in the authenticated session` wenn aus Session/Token keine Organisation abgeleitet werden kann
- `400` mit `data.code` `invalidRequestBody`, wenn `alertConsecutiveChecks` außerhalb von 1-10 liegt
- `401 Unauthorized` wenn du nicht angemeldet bist
- `403 Forbidden` wenn du keinen Zugriff auf die Organisation hast

Hinweis zur Berechtigung:

- Schreibzugriff ist erforderlich (Org-Admin oder Global-Admin).

