Uptimeify Docs
Organization

Upsert Package Config

Creates a new package config (by :packageType) or updates an existing one. packageType is a free-form identifier chosen by the organization, and customer endpoints can later reference that same key.

PATCH /api/package-configs/:packageType

This endpoint is the source of truth for alerting-related defaults like alertConsecutiveChecks and feature flags like enableEmailAlerts.

Request Body

All fields are optional and can be updated over time.

If you want a human-friendly package label in the UI, set displayName in addition to the technical packageType key.

{
  "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,

  "notes": "Default for PRO customers"
}

Example (cURL)

BASE_URL="https://uptimeify.io"
TOKEN="<your-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,
    "notes":"Default for PRO customers"
  }'

Response

Returns the created/updated package config.

{
  "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,
  "notes": "Default for PRO customers",
  "createdAt": "2026-02-26T12:00:00.000Z",
  "updatedAt": "2026-02-26T12:00:00.000Z"
}

Notes:

  • The organization is derived automatically from your authenticated session or API token.
  • The body-based variant PATCH /api/package-configs is also supported when packageType is sent in the request body.
  • The legacy route PATCH /api/organizations/:organizationPublicId/package-configs/:packageType remains supported for compatibility.
  • The plural org-less alias PATCH /api/organizations/package-configs/:packageType is also supported.
  • Global admins need an active organization context in the authenticated session for the org-less route.

Common errors

  • 400 Package type is required when :packageType is missing
  • 400 Organization ID is required in the authenticated session when no organization can be derived from the current session/token
  • 401 Unauthorized when you are not logged in
  • 403 Forbidden when you cannot access the organization

Authorization note:

  • Write access is required (organization admin or global admin).

On this page