{"service":"qris-bca","version":"1.0.0","auth":"Send header `X-API-Key: <API_KEY>` on all /api/* except /api/health and /api.","docs":"/docs","endpoints":[{"method":"GET","path":"/api/health","auth":false,"desc":"Liveness + session status"},{"method":"GET","path":"/api/transactions","auth":true,"params":["mid","from","to","since","q","limit","offset","order"],"desc":"Query transactions (a branch passes its own mid)"},{"method":"GET","path":"/api/summary","auth":true,"params":["mid","from","to"],"desc":"Aggregates (count, totalAmount, byIssuer, byDay, byOutlet)"},{"method":"GET","path":"/api/outlets","auth":true,"params":[],"desc":"List outlets / MIDs"},{"method":"GET","path":"/api/stream","auth":true,"params":["mid","api_key"],"desc":"SSE live stream of new transactions (EventSource; key via ?api_key=)"},{"method":"GET","path":"/api/webhooks","auth":true,"params":[],"desc":"List registered webhooks"},{"method":"POST","path":"/api/webhooks","auth":true,"params":["url","secret","mid"],"desc":"Register/replace a webhook (JSON body)"},{"method":"DELETE","path":"/api/webhooks","auth":true,"params":["url"],"desc":"Remove a webhook"},{"method":"POST","path":"/api/poll","auth":true,"params":["days"],"desc":"Trigger an immediate poll"}]}