{"service":"ascorpus serving API","version":"0.2.0","ui":"the human UI is the Next.js front-end (web/, contract §9) — this API is JSON-only","endpoints":{"GET /health":"snapshot_id, corpus_as_of, n_docs, n_chunks, published_snapshot_id","GET /search":"hybrid search; params q, k, venue, source_type, year_from, year_to, arms","GET /doc/{doc_id}":"doc metadata + unit listing + chunk ids","GET /unit/{unit_id}":"full DocUnit + resolved_text (real span resolution)","POST /assistant/answer":"grounded answer (X-Service-Token; SSE via Accept: text/event-stream)","GET /answer/{answer_id}":"stored Answer JSON","GET /dossier/{doc_id}":"doc + summary + links + bibtex (superseded => redirect_to)","GET /doc/{doc_id}/bibtex":"BibTeX entry (text/x-bibtex)","GET /answer/{answer_id}/bibtex":"BibTeX of an answer's cited docs (text/x-bibtex)","POST /feedback":"thumbs + comment (rate-limited; nothing identity-bearing stored)","POST /admin/reload":"re-pull sidecars, swap pointers (X-Service-Token)"}}