{
  "product": "Specification (reference)",
  "title": "Webhook Relay",
  "summary": "Receive, verify, queue and deliver webhooks with retries and replay.",
  "category": "services",
  "entries": [
    {
      "path": [
        "AI",
        "Ingest",
        "Accept inbound events on a per-source endpoint"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Ingest",
        "Verify signatures per source"
      ],
      "value": "HMAC-SHA256",
      "status": "yes",
      "note": "reject on mismatch"
    },
    {
      "path": [
        "AI",
        "Ingest",
        "Reject stale timestamps"
      ],
      "value": "",
      "status": "yes",
      "note": "replay-attack window"
    },
    {
      "path": [
        "AI",
        "Ingest",
        "Respond fast and process asynchronously"
      ],
      "value": "",
      "status": "yes",
      "note": "ingest is not delivery"
    },
    {
      "path": [
        "AI",
        "Ingest",
        "Persist the raw payload and headers"
      ],
      "value": "",
      "status": "yes",
      "note": "the record of what arrived"
    },
    {
      "path": [
        "AI",
        "Routing",
        "Fan out one event to many destinations"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Routing",
        "Filter by event type or payload predicate"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Routing",
        "Transform the payload before delivery"
      ],
      "value": "",
      "status": "yes",
      "note": "template or script"
    },
    {
      "path": [
        "AI",
        "Delivery",
        "Sign outbound requests"
      ],
      "value": "",
      "status": "yes",
      "note": "destination can verify origin"
    },
    {
      "path": [
        "AI",
        "Delivery",
        "Retry with exponential backoff"
      ],
      "value": "",
      "status": "yes",
      "note": "bounded, then parked"
    },
    {
      "path": [
        "AI",
        "Delivery",
        "Ordered delivery per stream key"
      ],
      "value": "",
      "status": "yes",
      "note": "optional, stated"
    },
    {
      "path": [
        "AI",
        "Delivery",
        "Circuit-break a failing destination"
      ],
      "value": "",
      "status": "yes",
      "note": "and resume automatically"
    },
    {
      "path": [
        "AI",
        "Replay",
        "Redeliver a past event on demand"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Replay",
        "Bulk replay over a time range"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Observability",
        "Per-event delivery log with status and response"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Console",
        "Event stream with payload inspector"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Console",
        "Destination health and failure rate"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Console",
        "One-click redeliver"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    }
  ]
}
