{"active_endpoint_groups":[{"description":"Lightweight service metadata and discovery routes.","routes":[{"method":"GET","note":"Health, deployment metadata, and filesystem readiness status.","path":"/api/health"},{"method":"GET","note":"Implemented endpoint groups, base URLs, docs URLs, and companion links.","path":"/api/manifest"}],"title":"Health And Discovery"},{"description":"Current job-state, summary, and archive retrieval.","routes":[{"method":"GET","note":"Returns current in-memory job log/status for active jobs.","path":"/api/job_log/<job_id>"},{"method":"GET","note":"Returns a lightweight per-job summary.","path":"/api/job_summary/<job_id>"},{"method":"GET","note":"Downloads a ZIP bundle for the job, preferring a curated public results bundle when present.","path":"/api/jobs/<job_id>/download"},{"method":"GET","note":"Exports the job index as CSV.","path":"/api/jobs/export"}],"title":"Job Monitoring And Export"},{"description":"Single-job submission, status retrieval, result manifest access, file listing, and bundle download.","routes":[{"method":"POST","note":"Submit a single Warhead Hunter job using target_name, search_query, and optional fasta_seq.","path":"/api/jobs"},{"method":"GET","note":"Read job metadata and status from durable job metadata plus live in-memory state when available.","path":"/api/jobs/<job_id>"},{"method":"GET","note":"Return a lightweight result manifest for job-derived outputs.","path":"/api/jobs/<job_id>/results"},{"method":"GET","note":"List safe job files with download URLs.","path":"/api/jobs/<job_id>/files"},{"method":"GET","note":"Download one safe file from the job directory.","path":"/api/jobs/<job_id>/files/<filename>"},{"method":"GET","note":"Download a ZIP bundle of safe result files for the job, preferring a curated public results bundle when present.","path":"/api/jobs/<job_id>/bundle"},{"method":"GET","note":"List cleaned ligand-bound PDB files under TARGET_RESULTS/WAR_PDB for one job.","path":"/api/jobs/<job_id>/war-pdbs"},{"method":"GET","note":"Download only the cleaned ligand-bound WAR_PDB files for one job.","path":"/api/jobs/<job_id>/war-pdbs.zip"},{"method":"GET","note":"List classified job artifacts with kind and folder filters for automation workflows.","path":"/api/jobs/<job_id>/artifacts"}],"title":"Programmatic Job API"},{"description":"Launch multiple jobs sequentially with lightweight batch metadata and aggregated status endpoints.","routes":[{"method":"POST","note":"Submit multiple jobs using the same input model as POST /api/jobs.","path":"/api/batches"},{"method":"GET","note":"Read batch metadata and live/computed status for each submitted job.","path":"/api/batches/<batch_id>"},{"method":"GET","note":"Return per-job result manifest summaries for a batch.","path":"/api/batches/<batch_id>/results"}],"title":"Batch Submission"},{"description":"Routes that serve SVG, PDB, protein-only PDB, SDF, and related structure assets.","routes":[{"method":"GET","note":"Implemented route family \u2014 exact path arguments should be confirmed from code.","path":"/api/svg/..."},{"method":"GET","note":"Implemented route family \u2014 exact path arguments should be confirmed from code.","path":"/api/svg-plain/..."},{"method":"GET","note":"Implemented route family \u2014 exact path arguments should be confirmed from code.","path":"/api/pdb/..."},{"method":"GET","note":"Implemented route family \u2014 exact path arguments should be confirmed from code.","path":"/api/protein/..."},{"method":"GET","note":"Implemented route family \u2014 exact path arguments should be confirmed from code.","path":"/api/sdf/..."}],"title":"Structure And Visualization Assets"},{"description":"Routes that help the browser resolve ligand properties, chains, and mapped atom data.","routes":[{"method":"GET","note":"Implemented route family \u2014 exact path arguments should be confirmed from code.","path":"/api/ligand_props/..."},{"method":"GET","note":"Implemented route family \u2014 exact path arguments should be confirmed from code.","path":"/api/ligand_chain/..."},{"method":"GET","note":"Implemented route family \u2014 exact path arguments should be confirmed from code.","path":"/api/sasa_overlay/..."},{"method":"GET","note":"Implemented route family \u2014 exact path arguments should be confirmed from code.","path":"/api/sasa_atommap/..."}],"title":"Ligand And Result Helpers"},{"description":"Programmatic atom-level solvent-exposure retrieval for job outputs.","routes":[{"method":"GET","note":"Lists available chain and residue combinations for a PDB.","path":"/api/jobs/<job_id>/sasa/available"},{"method":"GET","note":"Returns atom-level SASA payloads for one ligand occurrence.","path":"/api/jobs/<job_id>/sasa/atoms"},{"method":"POST","note":"Bulk atom-level SASA lookup for multiple requests.","path":"/api/jobs/<job_id>/sasa/bulk"},{"method":"GET","note":"Resolves residue ID from PDB, chain, and ligand code.","path":"/api/jobs/<job_id>/sasa/residue_for_ligand"}],"title":"SASA Blueprint Endpoints"},{"description":"Read-only curated examples for exploring completed Warhead Hunter outputs and prepared ligand-bound structures.","routes":[{"method":"GET","note":"Lists curated completed example jobs and availability metadata.","path":"/api/examples"},{"method":"GET","note":"Returns metadata for one curated example job. Alias: /api/examples/<job_id>/metadata","path":"/api/examples/<job_id>"},{"method":"GET","note":"Backward-compatible metadata alias for one curated example job.","path":"/api/examples/<job_id>/metadata"},{"method":"GET","note":"Lists safe downloadable files for one curated example job.","path":"/api/examples/<job_id>/files"},{"method":"GET","note":"Downloads one safe file from a curated example job.","path":"/api/examples/<job_id>/files/<filename>"},{"method":"GET","note":"Downloads a ZIP bundle of safe result files for a curated example job, preferring a curated public results bundle when present.","path":"/api/examples/<job_id>/bundle"},{"method":"GET","note":"List cleaned ligand-bound PDB files for one curated example job.","path":"/api/examples/<job_id>/war-pdbs"},{"method":"GET","note":"Download only the cleaned ligand-bound WAR_PDB files for one curated example job.","path":"/api/examples/<job_id>/war-pdbs.zip"},{"method":"GET","note":"List classified artifact files for one curated example job.","path":"/api/examples/<job_id>/artifacts"}],"title":"Curated Example Jobs"},{"description":"Read-only job index aligned with the Past Jobs Browser.","routes":[{"method":"GET","note":"Lists indexed jobs with optional filters such as protein, target, query, availability, limit, offset, and sort.","path":"/api/indexed-jobs"}],"title":"Indexed Jobs"}],"api_version":"0.1","base_urls":{"primary":"http://cartman.rove-vernier.ts.net","secondary":"https://warheadhunter.com"},"companion_tool_links":[{"name":"PROTAC Builder","url":"https://protacbuilder.com"},{"name":"E3 Ligandalyzer","url":"https://e3ligandalyzer.com"},{"name":"V-LiSEMOD","url":"https://vlisemod.com"}],"docs_urls":{"api_docs":"/api-docs","browser":"/browse","examples":"/examples"},"environment":"development","ok":true,"service":"Warhead Hunter API","timestamp":"2026-05-28T14:55:48.559911+00:00","version":"0.1","warning":"Use the internal/Tailscale base first for current development. Public production may become the preferred default later."}
