{
  "$defs": {
    "DeliveryStatus": {
      "enum": [
        "pending",
        "succeeded",
        "retrying",
        "failed",
        "blocked"
      ],
      "title": "DeliveryStatus",
      "type": "string"
    },
    "WebhookEventType": {
      "enum": [
        "run.succeeded",
        "run.failed",
        "model.version.ready",
        "endpoint.promoted",
        "score.completed",
        "tenant.deletion.completed",
        "workflow.run.succeeded",
        "workflow.run.failed",
        "model.validation.checks_passed",
        "model.validation.checks_failed",
        "model.validation.awaiting_approval",
        "model.validated",
        "model.rejected",
        "model.deprecated",
        "dataset.version.created",
        "optimize.completed"
      ],
      "title": "WebhookEventType",
      "type": "string"
    }
  },
  "$id": "https://schemas.mapi.dev/v1/api-WebhookDelivery.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "One delivery attempt chain of one event to one webhook (``attempt`` counts tries).\n\n``error`` is platform-authored; ``response_excerpt`` is the first bytes of the receiver's\nanswer (untrusted text: render as text only).",
  "examples": [
    {
      "attempt": 2,
      "created_at": "2026-10-15T09:30:00Z",
      "duration_ms": 412,
      "error": "the receiver answered 503",
      "event_id": "evt_01jaf3k1m2n3p4q5r6s7t8v9w0",
      "event_type": "run.succeeded",
      "id": "whd_01jaf3m1n2p3q4r5s6t7v8w9x0",
      "next_retry_at": "2026-10-15T09:40:00Z",
      "response_code": 503,
      "status": "retrying",
      "updated_at": "2026-10-15T09:35:00Z",
      "webhook_id": "whk_01jaf3h1j2k3m4n5p6q7r8s9t0"
    }
  ],
  "properties": {
    "attempt": {
      "minimum": 1,
      "title": "Attempt",
      "type": "integer"
    },
    "created_at": {
      "format": "date-time",
      "title": "Created At",
      "type": "string"
    },
    "duration_ms": {
      "anyOf": [
        {
          "minimum": 0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Duration Ms"
    },
    "error": {
      "anyOf": [
        {
          "maxLength": 500,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "event_id": {
      "examples": [
        "run_01jaf3q2x8m9v7k5h4g3f2e1d0"
      ],
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_.\\-]{0,127}$",
      "title": "Event Id",
      "type": "string"
    },
    "event_type": {
      "$ref": "#/$defs/WebhookEventType"
    },
    "id": {
      "examples": [
        "run_01jaf3q2x8m9v7k5h4g3f2e1d0"
      ],
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_.\\-]{0,127}$",
      "title": "Id",
      "type": "string"
    },
    "next_retry_at": {
      "anyOf": [
        {
          "format": "date-time",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Retry At"
    },
    "replay_of": {
      "anyOf": [
        {
          "examples": [
            "run_01jaf3q2x8m9v7k5h4g3f2e1d0"
          ],
          "pattern": "^[A-Za-z0-9][A-Za-z0-9_.\\-]{0,127}$",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Replay Of"
    },
    "response_code": {
      "anyOf": [
        {
          "maximum": 599,
          "minimum": 100,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Response Code"
    },
    "response_excerpt": {
      "anyOf": [
        {
          "maxLength": 1024,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Response Excerpt"
    },
    "status": {
      "$ref": "#/$defs/DeliveryStatus"
    },
    "updated_at": {
      "format": "date-time",
      "title": "Updated At",
      "type": "string"
    },
    "webhook_id": {
      "examples": [
        "run_01jaf3q2x8m9v7k5h4g3f2e1d0"
      ],
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_.\\-]{0,127}$",
      "title": "Webhook Id",
      "type": "string"
    }
  },
  "required": [
    "id",
    "webhook_id",
    "event_id",
    "event_type",
    "status",
    "attempt",
    "created_at",
    "updated_at"
  ],
  "title": "WebhookDelivery",
  "type": "object",
  "x-mapi-contract-version": "0.2"
}
