{
  "ok": true,
  "service": "timos-library",
  "routes": [
    "GET    /health",
    "POST   /api/docs",
    "GET    /api/docs?q=&tag=&pillar=&source=&sensitivity=&limit=&offset=",
    "GET    /api/docs/tags",
    "GET    /api/docs/:id  (meta=1 | raw=1)",
    "PUT    /api/docs/:id",
    "DELETE /api/docs/:id  (hard=1)",
    "GET    /api/r2/objects?prefix=&limit=&cursor=&delimiter=   (R2_TOKEN)",
    "GET    /api/r2/object?key=  (meta=1 | raw=1 | base64=1)    (R2_TOKEN)",
    "PUT    /api/r2/object?key=  (base64=1 | content_type= | force=1)  (R2_TOKEN)",
    "DELETE /api/r2/object?key=  (force=1)                      (R2_TOKEN)",
    "GET    /api/r2/index                                       (R2_TOKEN)",
    "GET    /api/r2/index/search?q=&limit=                      (R2_TOKEN)",
    "POST   /api/r2/index/rebuild?vectors=0|1                   (R2_TOKEN)",
    "POST   /api/r2/index/refresh                               (R2_TOKEN)",
    "GET    /api/r2/semantic?q=&limit=                          (R2_TOKEN)",
    "GET    /api/r2/versions?key=                                (R2_TOKEN)",
    "POST   /api/r2/restore/version?key=&version=                (R2_TOKEN)",
    "POST   /api/r2/restore/deleted?key=&version=&force=1        (R2_TOKEN)",
    "POST   /api/r2/bulk   {operation,prefix|keys,dest_prefix,add_tags,dry_run}",
    "GET    /api/r2/doctrine/vocab   (parsed Library Doctrine Tag List)",
    "GET    /api/r2/doctrine/expand?q=   (what a term means in tags)",
    "POST   /api/r2/doctrine/backfill   {trees|keys,category,cursor,limit,dry_run,min_hits,min_density,min_sim,max_tags}",
    "GET    /api/r2/meta?key=   PUT /api/r2/meta?key=            (R2_TOKEN)",
    "GET    /api/r2/meta/query?project=&author=&tag=&due_before= (R2_TOKEN)",
    "GET    /api/r2/suggest-links?key=&limit=&min_score=&scan=   (R2_TOKEN)",
    "GET    /api/r2/find?q=&tree=&category=&tag=&limit=          (R2_TOKEN)",
    "GET    /api/r2/curation?key=   PUT /api/r2/curation?key=    (R2_TOKEN)",
    "GET    /api/r2/curation/registry                            (R2_TOKEN)",
    "GET    /api/r2/curation/audit?limit=                        (R2_TOKEN)",
    "GET    /api/r2/curation/review?max_confidence=&limit=       (R2_TOKEN)",
    "POST   /api/r2/curation/tree  {tree,root_prefix,mode,categories}",
    "GET    /api/r2/curation/links  POST /api/r2/curation/links  {confirm,reject}",
    "POST   /api/r2/purge?key=&scope=versions|trash|all          (R2_TOKEN)"
  ]
}