{"sources":[{"id":"stripe-like","kind":"stripe","name":"Stripe-style payments","ingestUrl":"https://relay.phoenixcodes.org/ingest/stripe-like","secretMasked":"whsec_••••••••PE53","rotatedAt":"2026-10-23T03:00:33.480Z","nextRotationAt":"2026-10-24T03:00:00.000Z","previousSecretValidUntil":null,"contract":{"label":"Stripe-style","signatureHeaders":["Stripe-Signature"],"timestampHeader":null,"toleranceSeconds":300,"signing":"Stripe-Signature: t=<unix seconds>,v1=<hex>. v1 = HMAC-SHA256(secret, \"<t>.<raw body>\"). Rejected when |now - t| > 300 s.","idempotencyKey":["body.id"],"eventType":"body.type"}},{"id":"shopify-like","kind":"shopify","name":"Shopify-style storefront","ingestUrl":"https://relay.phoenixcodes.org/ingest/shopify-like","secretMasked":"whsec_••••••••Eqov","rotatedAt":"2026-10-23T03:00:33.480Z","nextRotationAt":"2026-10-24T03:00:00.000Z","previousSecretValidUntil":null,"contract":{"label":"Shopify-style","signatureHeaders":["X-Shopify-Hmac-Sha256"],"timestampHeader":null,"toleranceSeconds":null,"signing":"X-Shopify-Hmac-Sha256: base64(HMAC-SHA256(secret, raw body)). No signed timestamp: replay protection is the 24 h idempotency window.","idempotencyKey":["header X-Shopify-Webhook-Id","header X-Shopify-Event-Id"],"eventType":"header X-Shopify-Topic"}},{"id":"github-like","kind":"github","name":"GitHub-style repository","ingestUrl":"https://relay.phoenixcodes.org/ingest/github-like","secretMasked":"whsec_••••••••l1KB","rotatedAt":"2026-10-23T03:00:33.480Z","nextRotationAt":"2026-10-24T03:00:00.000Z","previousSecretValidUntil":null,"contract":{"label":"GitHub-style","signatureHeaders":["X-Hub-Signature-256"],"timestampHeader":null,"toleranceSeconds":null,"signing":"X-Hub-Signature-256: sha256=<hex>. hex = HMAC-SHA256(secret, raw body). No signed timestamp: replay protection is the 24 h idempotency window.","idempotencyKey":["header X-GitHub-Delivery"],"eventType":"header X-GitHub-Event"}},{"id":"generic","kind":"generic","name":"Generic HMAC + timestamp","ingestUrl":"https://relay.phoenixcodes.org/ingest/generic","secretMasked":"whsec_••••••••jRme","rotatedAt":"2026-10-23T03:00:33.480Z","nextRotationAt":"2026-10-24T03:00:00.000Z","previousSecretValidUntil":null,"contract":{"label":"Generic HMAC","signatureHeaders":["X-Signature"],"timestampHeader":"X-Timestamp","toleranceSeconds":300,"signing":"X-Signature: sha256=<hex> with X-Timestamp: <unix seconds>. hex = HMAC-SHA256(secret, \"<timestamp>.<raw body>\"). Rejected when |now - timestamp| > 300 s.","idempotencyKey":["header Idempotency-Key","header X-Event-Id","body.id","body.event_id"],"eventType":"header X-Event-Type, else body.type"}}]}