Monitor

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Monitor id."
    },
    "name": {
      "type": "string",
      "description": "Monitor name."
    },
    "paused": {
      "type": "boolean",
      "description": "True when delivery is paused for all trackers in this monitor. New alerts are not queued, and queued email delivery checks the pause state again before sending. Use PATCH /v1/trackers/{id} with paused: true to pause one tracker."
    },
    "notify_emails": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Configured email recipients. External recipients must confirm before delivery. Free includes one additional recipient per monitor."
    },
    "email_recipients": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "enum": [
              "owner",
              "member",
              "external"
            ],
            "description": "owner: the address of the account the monitor belongs to. member: a teammate in that account. external: anyone else, who must confirm first."
          },
          "user_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The Arcmira user behind an owner or member address. Null for external recipients."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "pending",
              "unsubscribed",
              "suppressed",
              "removed",
              "owner_unverified",
              "plan_limited"
            ]
          },
          "invitation_status": {
            "type": "string",
            "enum": [
              "sent",
              "failed",
              "limited",
              "pending"
            ]
          }
        },
        "required": [
          "email",
          "role",
          "user_id",
          "status"
        ]
      },
      "description": "Every address the monitor reaches, with consent and invitation state. An account is not required to accept."
    },
    "notify_frequency": {
      "type": "string",
      "default": "realtime",
      "description": "Delivery cadence. Values: realtime (deliver immediately), hourly (hourly digest), daily (daily digest)."
    },
    "digest_day": {
      "type": "string",
      "default": "monday",
      "description": "Day of week for digest delivery."
    },
    "digest_time": {
      "type": "string",
      "default": "09:00",
      "description": "Time of day (HH:MM) for digest delivery."
    },
    "notify_webhook": {
      "type": "boolean",
      "description": "True when webhook delivery is enabled."
    },
    "webhook_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Webhook destination URL. Null when no webhook is configured."
    },
    "webhook_secret_set": {
      "type": "boolean",
      "description": "True when a webhook signing secret exists for this monitor. The secret itself is never returned on reads; enablement and rotation responses support recovery with the original Idempotency-Key during the valid recovery window."
    },
    "webhook_secret_hint": {
      "type": [
        "string",
        "null"
      ],
      "description": "Last 4 characters of the current signing secret, for identifying which secret you hold. Null until a secret exists."
    },
    "webhook_failures": {
      "type": "integer",
      "default": 0,
      "description": "Consecutive webhook delivery failures recorded for this monitor. Reset by a secret rotation or PATCHing notify_webhook: true; 10 consecutive failures auto-disable a webhook."
    },
    "webhook_disabled_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "When the webhook was auto-disabled after repeated failures. Null while delivery is enabled. Re-enable by PATCHing notify_webhook: true; rotation alone never re-enables."
    },
    "webhook_disabled_reason": {
      "type": [
        "string",
        "null"
      ],
      "description": "Why the webhook was auto-disabled. Null while delivery is enabled."
    },
    "notify_slack": {
      "type": "boolean",
      "description": "True when Slack delivery is enabled."
    },
    "slack_integration_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Slack integration used for delivery. Null when Slack is not configured."
    },
    "slack_channel_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Slack channel to deliver to. Null when Slack is not configured."
    },
    "created_at": {
      "type": "string",
      "description": "When the monitor was created."
    },
    "updated_at": {
      "type": "string",
      "description": "When the monitor was last updated."
    },
    "access": {
      "type": "string",
      "enum": [
        "account",
        "member"
      ],
      "description": "account: the caller owns the account the monitor belongs to, or is an admin in it. member: the caller is a member of that team account, who may edit the monitor and its webhook but may not delete it."
    }
  },
  "required": [
    "id",
    "name",
    "paused",
    "notify_emails",
    "notify_webhook",
    "webhook_disabled_at",
    "webhook_disabled_reason",
    "notify_slack",
    "slack_integration_id",
    "slack_channel_id",
    "created_at",
    "updated_at",
    "access"
  ]
}