{"endpoint":"/api/webhook-receiver","description":"Configurable webhook receiver for PullPush E2E testing","usage":{"method":"POST","modes":{"timeout":"Simulate a request timeout (configurable delay, default 30s)","error":"Return HTTP error status (configurable, default 500)","rate-limit":"Return 429 Too Many Requests with Retry-After header","slow":"Delay response by configurable ms (default 3000), then return 200","flaky":"Random failure at configurable rate (default 50%)","bad-json":"Return 200 but with malformed JSON body","empty":"Return 200 with empty body (no content)","recover":"Fail N times (default 5) with configurable status, then return 200. Stateful per instance. Use &fail_count=N&status=503"},"parameters":{"mode":"Failure mode (query param). Omit or \"pass\" for success.","delay":"Delay in ms for timeout/slow modes (query param)","status":"HTTP status code for error/recover modes (query param, 400-599)","retry":"Retry-After seconds for rate-limit mode (query param)","rate":"Failure percentage for flaky mode (query param, 0-100)","fail_count":"Number of failures before recovery in recover mode (query param, default 5)"},"log":{"view":"GET /api/webhook-receiver?log=1 — view recent deliveries","viewWithLimit":"GET /api/webhook-receiver?log=1&limit=10 — limit results","clear":"DELETE /api/webhook-receiver — clear delivery log"},"examples":["POST /api/webhook-receiver — accept webhook, return 200 with echo","POST /api/webhook-receiver?mode=error&status=503 — return 503","POST /api/webhook-receiver?mode=timeout&delay=10000 — hang for 10s","POST /api/webhook-receiver?mode=slow&delay=5000 — slow response","POST /api/webhook-receiver?mode=rate-limit&retry=30 — 429 response","POST /api/webhook-receiver?mode=flaky&rate=30 — 30% failure rate","POST /api/webhook-receiver?mode=bad-json — broken JSON body","POST /api/webhook-receiver?mode=empty — empty 200 response","POST /api/webhook-receiver?mode=recover&fail_count=5&status=503 — fail 5 times then succeed"]}}