{"openapi":"3.1.0","info":{"title":"SMA Research Platform","description":"Open research platform for Spinal Muscular Atrophy — biology-first target discovery","version":"0.1.0"},"paths":{"/api/v2/stats":{"get":{"tags":["stats"],"summary":"Get Stats","description":"Overview counts for all major tables.","operationId":"get_stats_api_v2_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/stats/freshness":{"get":{"tags":["stats"],"summary":"Get Freshness","description":"Last ingestion timestamps and data freshness.","operationId":"get_freshness_api_v2_stats_freshness_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/stats/pipeline":{"get":{"tags":["stats"],"summary":"Get Pipeline Status","description":"Latest pipeline run results and ingestion log entries.","operationId":"get_pipeline_status_api_v2_stats_pipeline_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/targets":{"get":{"tags":["targets"],"summary":"List Targets","operationId":"list_targets_api_v2_targets_get","parameters":[{"name":"target_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["targets"],"summary":"Create Target","operationId":"create_target_api_v2_targets_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TargetCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/targets/{target_id}":{"get":{"tags":["targets"],"summary":"Get Target","operationId":"get_target_api_v2_targets__target_id__get","parameters":[{"name":"target_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/targets/symbol/{symbol}":{"get":{"tags":["targets"],"summary":"Get Target By Symbol","operationId":"get_target_by_symbol_api_v2_targets_symbol__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/targets/{target_id}/deep-dive":{"get":{"tags":["targets"],"summary":"Get Target Deep Dive","description":"Get comprehensive view of a target: claims, hypotheses, drugs, trials, network edges.","operationId":"get_target_deep_dive_api_v2_targets__target_id__deep_dive_get","parameters":[{"name":"target_id","in":"path","required":true,"schema":{"type":"string","title":"Target Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/graph/full":{"get":{"tags":["targets"],"summary":"Get Full Graph","description":"Get all nodes and edges for knowledge graph visualization.","operationId":"get_full_graph_api_v2_graph_full_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/trials":{"get":{"tags":["trials"],"summary":"List Trials","operationId":"list_trials_api_v2_trials_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"phase","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phase"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/trials/{trial_id}":{"get":{"tags":["trials"],"summary":"Get Trial","operationId":"get_trial_api_v2_trials__trial_id__get","parameters":[{"name":"trial_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Trial Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/trials/nct/{nct_id}":{"get":{"tags":["trials"],"summary":"Get Trial By Nct","operationId":"get_trial_by_nct_api_v2_trials_nct__nct_id__get","parameters":[{"name":"nct_id","in":"path","required":true,"schema":{"type":"string","title":"Nct Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/evidence":{"get":{"tags":["evidence"],"summary":"List Evidence","description":"List evidence records linking claims to sources.","operationId":"list_evidence_api_v2_evidence_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":500,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/claims/count":{"get":{"tags":["evidence"],"summary":"Claims Count","description":"Get claim counts with optional filters — used for pagination.","operationId":"claims_count_api_v2_claims_count_get","parameters":[{"name":"claim_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Type"}},{"name":"confidence_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Confidence Min"}},{"name":"confidence_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Confidence Max"}},{"name":"target","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/claims":{"get":{"tags":["evidence"],"summary":"List Claims","description":"List claims with filters, optionally enriched with source paper details.","operationId":"list_claims_api_v2_claims_get","parameters":[{"name":"claim_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claim Type"}},{"name":"confidence_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Confidence Min"}},{"name":"confidence_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Confidence Max"}},{"name":"target","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"enriched","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Enriched"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/claims/recent":{"get":{"tags":["evidence"],"summary":"Get Recent Claims","description":"Get recently added claims — 'What's New' section for researchers.\n\nReturns claims created within the last N days, enriched with source\nquality metadata. Includes summary stats (total, by claim_type, top targets).","operationId":"get_recent_claims_api_v2_claims_recent_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"description":"Look-back window in days","default":7,"title":"Days"},"description":"Look-back window in days"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Max results","default":50,"title":"Limit"},"description":"Max results"},{"name":"target","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by target gene/protein symbol","title":"Target"},"description":"Filter by target gene/protein symbol"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/claims/tissue-context/{target_symbol}":{"get":{"tags":["evidence"],"summary":"Get Claims Tissue Context","description":"Tissue/organ distribution of claims for a given target.\n\nAnswers Simon's core question: *where* was this predicted —\nmotor neuron, liver, heart, in-vitro?\n\nLooks up claims via metadata->>'subject_symbol' (primary) and\nfalls back to text search on predicate for broader coverage.","operationId":"get_claims_tissue_context_api_v2_claims_tissue_context__target_symbol__get","parameters":[{"name":"target_symbol","in":"path","required":true,"schema":{"type":"string","title":"Target Symbol"}},{"name":"confidence_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Confidence Min"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/claims/{claim_id}":{"get":{"tags":["evidence"],"summary":"Get Claim","operationId":"get_claim_api_v2_claims__claim_id__get","parameters":[{"name":"claim_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Claim Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/claims/{claim_id}/evidence":{"get":{"tags":["evidence"],"summary":"Get Claim Evidence","description":"Get all evidence supporting a specific claim.","operationId":"get_claim_evidence_api_v2_claims__claim_id__evidence_get","parameters":[{"name":"claim_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Claim Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/sources":{"get":{"tags":["evidence"],"summary":"List Sources","operationId":"list_sources_api_v2_sources_get","parameters":[{"name":"source_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/hypotheses":{"get":{"tags":["evidence"],"summary":"List Hypotheses","operationId":"list_hypotheses_api_v2_hypotheses_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/drugs":{"get":{"tags":["drugs"],"summary":"List Drugs","operationId":"list_drugs_api_v2_drugs_get","parameters":[{"name":"approval_status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approval Status"}},{"name":"drug_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Drug Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["drugs"],"summary":"Create Drug","operationId":"create_drug_api_v2_drugs_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrugCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/drugs/{drug_id}":{"get":{"tags":["drugs"],"summary":"Get Drug","operationId":"get_drug_api_v2_drugs__drug_id__get","parameters":[{"name":"drug_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Drug Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/drugs/name/{name}":{"get":{"tags":["drugs"],"summary":"Get Drug By Name","operationId":"get_drug_by_name_api_v2_drugs_name__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/drugs/{drug_id}/trials":{"get":{"tags":["drugs"],"summary":"Get Drug Trials","description":"Get clinical trials related to a specific drug.","operationId":"get_drug_trials_api_v2_drugs__drug_id__trials_get","parameters":[{"name":"drug_id","in":"path","required":true,"schema":{"type":"string","title":"Drug Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/datasets/rnaseq":{"get":{"tags":["datasets"],"summary":"List Rnaseq Datasets","description":"List curated RNA-seq datasets relevant to SMA research.\n\nReturns a hand-curated catalog of publicly available RNA-seq datasets\nspanning multiple platforms (Nanopore direct RNA, Illumina short-read,\n10x Genomics single-cell, SMART-seq2, 10x Visium spatial) and tissues\n(motor neurons, spinal cord, fibroblasts, CSF/blood).\n\nEach entry includes accession, platform, organism, tissue, SMA type,\nsample count, experimental condition, scientific relevance, and a\ndirect URL to the repository.","operationId":"list_rnaseq_datasets_api_v2_datasets_rnaseq_get","parameters":[{"name":"platform","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by sequencing platform (case-insensitive substring). Examples: nanopore, illumina, 10x, SMART-seq2, Visium.","title":"Platform"},"description":"Filter by sequencing platform (case-insensitive substring). Examples: nanopore, illumina, 10x, SMART-seq2, Visium."},{"name":"organism","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by organism (case-insensitive substring). Examples: Homo sapiens, Mus musculus.","title":"Organism"},"description":"Filter by organism (case-insensitive substring). Examples: Homo sapiens, Mus musculus."},{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by tag (exact match). Examples: nanopore, single_cell, treatment_response, spatial, motor_neuron, mouse_model, direct_rna.","title":"Tag"},"description":"Filter by tag (exact match). Examples: nanopore, single_cell, treatment_response, spatial, motor_neuron, mouse_model, direct_rna."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/datasets/rnaseq/nanopore":{"get":{"tags":["datasets"],"summary":"List Nanopore Datasets","description":"List Nanopore direct RNA sequencing datasets for SMA.\n\nReturns entries from the curated catalog that use Oxford Nanopore\ntechnology.  These datasets are especially valuable because direct\nRNA sequencing preserves native RNA modifications and captures\nfull-length transcript isoforms without reverse-transcription bias.","operationId":"list_nanopore_datasets_api_v2_datasets_rnaseq_nanopore_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/datasets":{"get":{"tags":["datasets"],"summary":"List Datasets","operationId":"list_datasets_api_v2_datasets_get","parameters":[{"name":"evidence_tier","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence Tier"}},{"name":"modality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Modality"}},{"name":"organism","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organism"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/datasets/{dataset_id}":{"get":{"tags":["datasets"],"summary":"Get Dataset","operationId":"get_dataset_api_v2_datasets__dataset_id__get","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dataset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/datasets/accession/{accession}":{"get":{"tags":["datasets"],"summary":"Get Dataset By Accession","operationId":"get_dataset_by_accession_api_v2_datasets_accession__accession__get","parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ingest/pubmed":{"post":{"tags":["ingestion"],"summary":"Trigger Pubmed Ingestion","description":"Pull recent SMA papers from PubMed and store in sources table.","operationId":"trigger_pubmed_ingestion_api_v2_ingest_pubmed_post","parameters":[{"name":"days_back","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":7,"title":"Days Back"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ingest/biorxiv":{"post":{"tags":["ingestion"],"summary":"Trigger Biorxiv Ingestion","description":"Scan bioRxiv + medRxiv for SMA-relevant preprints and store as sources.","operationId":"trigger_biorxiv_ingestion_api_v2_ingest_biorxiv_post","parameters":[{"name":"days_back","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days Back"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ingest/trials":{"post":{"tags":["ingestion"],"summary":"Trigger Trials Ingestion","description":"Pull all SMA clinical trials from ClinicalTrials.gov.","operationId":"trigger_trials_ingestion_api_v2_ingest_trials_post","parameters":[{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Custom search query","title":"Query"},"description":"Custom search query"},{"name":"max_results","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Max Results"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ingest/trial-results":{"post":{"tags":["ingestion"],"summary":"Trigger Trial Results Ingestion","description":"Fetch results for completed SMA trials and store as sources for claim extraction.\n\nCalls ClinicalTrials.gov v2 API for all completed SMA trials that have posted\nresults (outcome measures, adverse events, participant flow).  Each trial's\n``results_summary`` text is stored in ``sources.abstract`` so the normal\n``/extract/claims`` pipeline can pick it up.","operationId":"trigger_trial_results_ingestion_api_v2_ingest_trial_results_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ingest/patents":{"post":{"tags":["ingestion"],"summary":"Trigger Patent Ingestion","description":"Import SMA-related patents into the sources table.\n\nGoogle Patents blocks server IPs (returns 503), so patents should be\nfetched locally and uploaded as JSON.  Two modes:\n\n1. **json_path** (recommended): Import from a pre-fetched JSON file on disk.\n   Fetch locally: ``python -c \"import asyncio; from sma_platform.ingestion.adapters.patents import fetch_all_sma_patents; print(asyncio.run(fetch_all_sma_patents()))\"``\n   Then SCP the JSON to the server and pass the path.\n\n2. **No json_path**: Attempt live fetch via Google Patents XHR (will fail from most servers).","operationId":"trigger_patent_ingestion_api_v2_ingest_patents_post","parameters":[{"name":"json_path","in":"query","required":false,"schema":{"type":"string","description":"Path to pre-fetched JSON file (Google Patents blocks server IPs)","default":"","title":"Json Path"},"description":"Path to pre-fetched JSON file (Google Patents blocks server IPs)"},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ingest/structures":{"post":{"tags":["ingestion"],"summary":"Trigger Structure Ingestion","description":"Fetch AlphaFold protein structure predictions for core SMA proteins.\n\nUses the pre-defined SMA_PROTEINS mapping (SMN1, SMN2, PLS3, STMN2,\nNCALD, UBA1, CORO1C) to fetch structure predictions and pLDDT scores.\nStores structure metadata on the corresponding target records.","operationId":"trigger_structure_ingestion_api_v2_ingest_structures_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/extract/claims":{"post":{"tags":["ingestion"],"summary":"Trigger Claim Extraction","description":"Extract structured claims from all unprocessed paper abstracts using LLM.","operationId":"trigger_claim_extraction_api_v2_extract_claims_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/relink/claims":{"post":{"tags":["ingestion"],"summary":"Trigger Claim Relinking","description":"Retroactively link existing claims to targets using fuzzy matching.","operationId":"trigger_claim_relinking_api_v2_relink_claims_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/generate/hypotheses":{"post":{"tags":["ingestion"],"summary":"Trigger Hypothesis Generation","description":"Generate hypothesis cards for all targets by cross-referencing claims.","operationId":"trigger_hypothesis_generation_api_v2_generate_hypotheses_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/generate/hypothesis/{target_id}":{"post":{"tags":["ingestion"],"summary":"Trigger Single Hypothesis","description":"Generate a hypothesis card for a single target.","operationId":"trigger_single_hypothesis_api_v2_generate_hypothesis__target_id__post","parameters":[{"name":"target_id","in":"path","required":true,"schema":{"type":"string","title":"Target Id"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ingest/network":{"post":{"tags":["ingestion"],"summary":"Trigger Network Ingestion","description":"Pull protein-protein interactions from STRING and pathway data from KEGG.\n\nPopulates graph_edges table for network_centrality scoring.","operationId":"trigger_network_ingestion_api_v2_ingest_network_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ingest/compounds":{"post":{"tags":["ingestion"],"summary":"Trigger Compound Ingestion","description":"Pull bioactivity data from ChEMBL for all gene targets.\n\nSearches ChEMBL for each gene target in the database, retrieves\nbioactivity records, and stores compound-target edges in graph_edges.","operationId":"trigger_compound_ingestion_api_v2_ingest_compounds_post","parameters":[{"name":"limit_per_target","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit Per Target"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ingest/proteins":{"post":{"tags":["ingestion"],"summary":"Trigger Protein Ingestion","description":"Pull protein annotations from UniProt for all gene targets.\n\nMaps each gene symbol to its UniProt accession, fetches full protein\nannotations (GO terms, pathways, function), and stores shared-pathway\nand shared-GO-process edges in graph_edges.","operationId":"trigger_protein_ingestion_api_v2_ingest_proteins_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ingest/fulltext":{"post":{"tags":["ingestion"],"summary":"Trigger Fulltext Fetching","description":"Fetch full-text papers from PubMed Central OA for sources that only have abstracts.\n\nSources: Europe PMC → NCBI PMC → Unpaywall (in order of preference).","operationId":"trigger_fulltext_fetching_api_v2_ingest_fulltext_post","parameters":[{"name":"batch_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Batch Size"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/extract/drug-outcomes":{"post":{"tags":["ingestion"],"summary":"Trigger Drug Outcome Extraction","description":"Extract structured drug failure/success outcomes from SMA literature.\n\nBuilds the Drug Failure & Success Database — captures why drugs succeeded or\nfailed, with structured failure reasons (toxicity, efficacy, bioavailability, etc.).","operationId":"trigger_drug_outcome_extraction_api_v2_extract_drug_outcomes_post","parameters":[{"name":"batch_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Batch Size"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/drug-outcomes":{"get":{"tags":["ingestion"],"summary":"List Drug Outcomes","description":"List drug outcomes with optional filtering.","operationId":"list_drug_outcomes_api_v2_drug_outcomes_get","parameters":[{"name":"outcome","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome"}},{"name":"compound","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compound"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/drug-outcomes/summary":{"get":{"tags":["ingestion"],"summary":"Drug Outcomes Summary","description":"Get summary statistics for the Drug Failure & Success Database.","operationId":"drug_outcomes_summary_api_v2_drug_outcomes_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/expand/graph":{"post":{"tags":["ingestion"],"summary":"Trigger Graph Expansion","description":"Auto-expand the knowledge graph from claims, drug outcomes, and conservation data.","operationId":"trigger_graph_expansion_api_v2_expand_graph_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/scores":{"get":{"tags":["scoring"],"summary":"List Scores","description":"Score and rank all targets by composite prioritization score.\n\nSupports two scoring modes:\n- **discovery** (default): Boosts novel/emerging targets. Good for finding new leads.\n- **clinical**: Weights established evidence. Good for prioritizing validated targets.\n\nReturns cached scores if available (persist across restarts).\nUse POST /scores/refresh to recompute.","operationId":"list_scores_api_v2_scores_get","parameters":[{"name":"min_score","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"description":"Filter: only return targets with composite_score >= this value.","title":"Min Score"},"description":"Filter: only return targets with composite_score >= this value."},{"name":"mode","in":"query","required":false,"schema":{"type":"string","description":"Scoring mode: 'discovery' (novelty-weighted) or 'clinical' (evidence-weighted).","default":"discovery","title":"Mode"},"description":"Scoring mode: 'discovery' (novelty-weighted) or 'clinical' (evidence-weighted)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/scores/{target_id}":{"get":{"tags":["scoring"],"summary":"Get Score","description":"Full scorecard for a single target.","operationId":"get_score_api_v2_scores__target_id__get","parameters":[{"name":"target_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/hypotheses/prioritized":{"get":{"tags":["scoring"],"summary":"Get Prioritized Hypotheses","description":"Rank all hypotheses by multi-criteria score, assign action tiers.\n\nTier A: Top 5 high-conviction hypotheses ready for Phase 3.\nTier B: Medium-priority, need more evidence or refinement.\nTier C: Low-priority or insufficient data.","operationId":"get_prioritized_hypotheses_api_v2_hypotheses_prioritized_get","parameters":[{"name":"tier","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by tier: A (top 5), B (6-15), C (rest).","title":"Tier"},"description":"Filter by tier: A (top 5), B (6-15), C (rest)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/scores/refresh":{"post":{"tags":["scoring"],"summary":"Refresh Scores","description":"Re-run scoring for all targets (admin only).","operationId":"refresh_scores_api_v2_scores_refresh_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/contact":{"post":{"tags":["contact"],"summary":"Submit Contact","description":"Store a contact form submission and notify via Slack.","operationId":"submit_contact_api_v2_contact_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactMessage"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/messages":{"get":{"tags":["contact"],"summary":"List Messages","description":"List all contact form messages (admin only).","operationId":"list_messages_api_v2_admin_messages_get","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/convergence/scores":{"get":{"tags":["convergence","convergence"],"summary":"Get Convergence Scores","description":"Get evidence convergence scores for all SMA targets.\n\nScores based on 5 dimensions: claim volume, lab independence,\nmethod diversity, temporal trend, and replication.\nWeights version v1.","operationId":"get_convergence_scores_api_v2_convergence_scores_get","parameters":[{"name":"min_score","in":"query","required":false,"schema":{"type":"number","maximum":1,"minimum":0,"default":0.0,"title":"Min Score"}},{"name":"confidence","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by confidence level","title":"Confidence"},"description":"Filter by confidence level"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/convergence/scores/{symbol}":{"get":{"tags":["convergence","convergence"],"summary":"Get Target Convergence","description":"Get detailed convergence score for a specific target by symbol.","operationId":"get_target_convergence_api_v2_convergence_scores__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/convergence/predictions":{"get":{"tags":["convergence","convergence"],"summary":"Get Convergence Predictions","description":"Get prediction cards enriched with convergence breakdown.\n\nEach prediction includes: convergence score, confidence level,\nevidence breakdown, claim type distribution, and suggested experiments.","operationId":"get_convergence_predictions_api_v2_convergence_predictions_get","parameters":[{"name":"min_score","in":"query","required":false,"schema":{"type":"number","maximum":1,"minimum":0,"default":0.0,"title":"Min Score"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/convergence/predictions/{symbol}":{"get":{"tags":["convergence","convergence"],"summary":"Get Target Prediction","description":"Get prediction card for a specific target by symbol.","operationId":"get_target_prediction_api_v2_convergence_predictions__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/convergence/compute":{"post":{"tags":["predictions"],"summary":"Compute Convergence","description":"Trigger batch convergence score computation for all targets.","operationId":"compute_convergence_api_v2_convergence_compute_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/screen/pipeline-stats":{"get":{"tags":["screening"],"summary":"Get Pipeline Stats","description":"Return the drug screening funnel statistics for the homepage visualization.\n\nEach stage represents a filtering step in the computational pipeline:\nChEMBL compounds -> drug-likeness -> AI-designed -> docked -> binders\n-> dual-target -> selective leads -> BBB-permeable leads.\n\nGracefully returns 0 for any table that does not yet exist.","operationId":"get_pipeline_stats_api_v2_screen_pipeline_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/screen/compounds/results":{"get":{"tags":["screening"],"summary":"Get Screening Results","description":"Return cached screening results from the molecule_screenings table (no auth needed).\n\nNote: estimated_qed, estimated_cns_mpo, estimated_bbb_permeable, and\npains_alert_estimated in the top_10 list are heuristic approximations\nderived from pchembl_value, molecular weight, and aLogP -- **not** RDKit-computed\nvalues.  Use /screen/smiles with a SMILES string for accurate per-compound\nQED and PAINS analysis when RDKit is available.","operationId":"get_screening_results_api_v2_screen_compounds_results_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/screen/compounds":{"post":{"tags":["screening"],"summary":"Screen All Compounds","description":"Screen all ChEMBL compounds for drug-likeness, BBB permeability, and CNS MPO.\n\nAnalyzes compounds from graph_edges (ChEMBL bioactivity data) and returns:\n- Lipinski Rule of Five compliance\n- Blood-Brain Barrier permeability prediction\n- CNS Multi-Parameter Optimization score\n- QED (Quantitative Estimate of Drug-likeness)\n- PAINS filter alerts\n- Top candidate ranking","operationId":"screen_all_compounds_api_v2_screen_compounds_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/screen/smiles":{"post":{"tags":["screening"],"summary":"Screen Smiles","description":"Screen a single SMILES string for drug-likeness properties.\n\nNo authentication required — useful for quick lookups.","operationId":"screen_smiles_api_v2_screen_smiles_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmilesInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/screen/admet":{"post":{"tags":["screening"],"summary":"Screen Admet","description":"Predict ADMET properties for a single SMILES string.","operationId":"screen_admet_api_v2_screen_admet_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmilesInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/screen/admet/batch":{"get":{"tags":["screening"],"summary":"Screen Admet Batch","description":"Run ADMET prediction on all ChEMBL compounds.","operationId":"screen_admet_batch_api_v2_screen_admet_batch_get","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/screen/repurposing":{"get":{"tags":["screening"],"summary":"Get Repurposing Candidates","description":"Get ranked drug repurposing candidates for SMA.","operationId":"get_repurposing_candidates_api_v2_screen_repurposing_get","parameters":[{"name":"top_n","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Top N"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/screen/candidates":{"get":{"tags":["screening"],"summary":"Get Top Candidates","description":"Get integrated ranked drug candidates combining screening, ADMET, repurposing, and target scores.\n\nEach candidate has an integrated_score (0-1) computed from:\n- Drug-likeness (QED + Lipinski): 15%\n- BBB/CNS access: 15%\n- ADMET safety: 20%\n- Potency (pChEMBL): 15%\n- Target relevance: 20%\n- Repurposing evidence: 15%","operationId":"get_top_candidates_api_v2_screen_candidates_get","parameters":[{"name":"top_n","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Top N"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/screen/top1000":{"get":{"tags":["screening"],"summary":"Get Top 1000 Candidates","description":"Curated Top 1000 SMA Drug Candidates from ChEMBL/PubChem molecule screening.\n\nRanked by composite score = 0.5 * normalized_pchembl + 0.3 * target_relevance + 0.2 * drug_likeness.\nFaster than /screen/candidates (no RDKit needed at query time).","operationId":"get_top_1000_candidates_api_v2_screen_top1000_get","parameters":[{"name":"target","in":"query","required":false,"schema":{"type":"string","description":"Filter by target symbol","title":"Target"},"description":"Filter by target symbol"},{"name":"min_pchembl","in":"query","required":false,"schema":{"type":"number","maximum":15,"minimum":0,"default":5.0,"title":"Min Pchembl"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/screen/ai-candidates":{"get":{"tags":["screening"],"summary":"Get Ai Candidates","description":"AI-designed drug candidates ranked by dual-target docking potential.\n\nJoins designed_molecules with diffdock_extended to return candidates\nthat have positive DiffDock confidence scores, ordered by best_confidence.","operationId":"get_ai_candidates_api_v2_screen_ai_candidates_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/research/directions":{"get":{"tags":["research"],"summary":"List Research Directions","description":"List all 16 cutting-edge SMA research directions with connected targets.","operationId":"list_research_directions_api_v2_research_directions_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by category","title":"Category"},"description":"Filter by category"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/research/directions/{direction_id}":{"get":{"tags":["research"],"summary":"Get Research Direction","description":"Deep-dive into a research direction with connected targets, claims, and hypotheses.","operationId":"get_research_direction_api_v2_research_directions__direction_id__get","parameters":[{"name":"direction_id","in":"path","required":true,"schema":{"type":"string","title":"Direction Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/research/spinal-stimulation":{"get":{"tags":["research"],"summary":"Spinal Stimulation","description":"Spinal cord stimulation for SMA — Capogrosso/Simon approach.","operationId":"spinal_stimulation_api_v2_research_spinal_stimulation_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/research/links":{"get":{"tags":["research"],"summary":"List Research Links","description":"List curated research links from the research_links table.","operationId":"list_research_links_api_v2_research_links_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by category","title":"Category"},"description":"Filter by category"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/export/{table_name}":{"get":{"tags":["export"],"summary":"Export Table","description":"Export a table as JSON or CSV for research use.\n\nAvailable tables: targets, drugs, trials, claims, hypotheses,\ngraph_edges, drug_outcomes, cross_species_targets, target_scores.","operationId":"export_table_api_v2_export__table_name__get","parameters":[{"name":"table_name","in":"path","required":true,"schema":{"type":"string","title":"Table Name"}},{"name":"fmt","in":"query","required":false,"schema":{"type":"string","description":"Format: json or csv","default":"json","title":"Fmt"},"description":"Format: json or csv"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/export/target/{symbol}":{"get":{"tags":["export"],"summary":"Export Target Evidence","description":"Export all evidence for a specific target: claims, sources, evidence links.\n\nFormats:\n- json: Full evidence package with claims, sources, and metadata\n- csv: Flat CSV with one row per claim+source pair\n- bibtex: BibTeX citations for all linked papers","operationId":"export_target_evidence_api_v2_export_target__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"fmt","in":"query","required":false,"schema":{"type":"string","description":"Format: json, csv, or bibtex","default":"json","title":"Fmt"},"description":"Format: json, csv, or bibtex"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/evidence/gaps":{"get":{"tags":["export"],"summary":"Evidence Gaps","description":"Identify evidence gaps — where research is thin or missing for a target.","operationId":"evidence_gaps_api_v2_evidence_gaps_get","parameters":[{"name":"symbol","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Target symbol to analyze","title":"Symbol"},"description":"Target symbol to analyze"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/graph":{"get":{"tags":["graph"],"summary":"Get Graph","description":"Return knowledge graph as nodes + edges for visualization.\n\nBy default excludes compound_bioactivity edges (191 edges) to keep\nthe graph focused on biological relationships.","operationId":"get_graph_api_v2_graph_get","parameters":[{"name":"include_compounds","in":"query","required":false,"schema":{"type":"boolean","description":"Include compound bioactivity edges","default":false,"title":"Include Compounds"},"description":"Include compound bioactivity edges"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/graph/stats":{"get":{"tags":["graph"],"summary":"Graph Stats","description":"Summary statistics for the knowledge graph.","operationId":"graph_stats_api_v2_graph_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/graph/edges":{"get":{"tags":["graph"],"summary":"Get Graph Edges","operationId":"get_graph_edges_api_v2_graph_edges_get","parameters":[{"name":"include_compounds","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Compounds"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/hits/validate":{"post":{"tags":["hit-validation","hit-validation"],"summary":"Validate Hits","description":"Validate screening hits against ChEMBL, PubMed, PubChem, and platform claims.","operationId":"validate_hits_api_v2_hits_validate_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HitListInput"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/hits/milestones/create":{"post":{"tags":["hit-validation","hit-validation"],"summary":"Create Hit Milestones","description":"Create validation milestones for positive screening hits.","operationId":"create_hit_milestones_api_v2_hits_milestones_create_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HitListInput"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/hits/milestones":{"get":{"tags":["hit-validation","hit-validation"],"summary":"Get Milestones","description":"Get summary of all screening hit milestones and their validation status.","operationId":"get_milestones_api_v2_hits_milestones_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/hits/assay-cards":{"get":{"tags":["hit-validation","hit-validation"],"summary":"Get Assay Cards","description":"Generate assay-ready validation cards for all positive screening hits.\n\nFor each drug-like hit (pChEMBL >= 5.0, Lipinski pass), returns a\ntarget-specific wet-lab validation plan with:\n- Hypothesis: what we predict\n- Assay: how to test it (SMA-specific protocol)\n- Model system: cell line, organoid, or mouse model\n- Readout: what to measure\n- Go/No-Go criteria: what constitutes success\n- Estimated cost and timeline\n\nCards are sorted by docking confidence / pChEMBL value descending.","operationId":"get_assay_cards_api_v2_hits_assay_cards_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/hits/assay-cards/custom":{"post":{"tags":["hit-validation","hit-validation"],"summary":"Generate Custom Assay Cards","description":"Generate assay cards for custom screening hits (not from the database).\n\nAccepts a list of hits with smiles, target, and docking_confidence.\nReturns target-specific wet-lab validation plans.","operationId":"generate_custom_assay_cards_api_v2_hits_assay_cards_custom_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HitListInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/hits/validate/single":{"get":{"tags":["hit-validation","hit-validation"],"summary":"Validate Single Hit","description":"Validate a single screening hit.","operationId":"validate_single_hit_api_v2_hits_validate_single_get","parameters":[{"name":"smiles","in":"query","required":true,"schema":{"type":"string","title":"Smiles"}},{"name":"target","in":"query","required":true,"schema":{"type":"string","title":"Target"}},{"name":"docking_confidence","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Docking Confidence"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/comparative/species":{"get":{"tags":["comparative"],"summary":"List Species","description":"List model organisms with target mapping counts.","operationId":"list_species_api_v2_comparative_species_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/comparative/orthologs/{symbol}":{"get":{"tags":["comparative"],"summary":"Get Orthologs","description":"Get orthologs for a human gene symbol across model organisms.\n\nChecks the database first, falls back to live NCBI query.","operationId":"get_orthologs_api_v2_comparative_orthologs__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/comparative/orthologs":{"get":{"tags":["comparative"],"summary":"List All Orthologs","description":"Get all ortholog mappings for the heatmap visualization.","operationId":"list_all_orthologs_api_v2_comparative_orthologs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/comparative/cross-species-targets":{"get":{"tags":["comparative"],"summary":"List Cross Species Targets","description":"List all cross-species target mappings.","operationId":"list_cross_species_targets_api_v2_comparative_cross_species_targets_get","parameters":[{"name":"species","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by species name","title":"Species"},"description":"Filter by species name"},{"name":"human_symbol","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by human gene symbol","title":"Human Symbol"},"description":"Filter by human gene symbol"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/comparative/ingest/orthologs":{"post":{"tags":["comparative"],"summary":"Trigger Ortholog Ingestion","description":"Map all human SMA targets to orthologs across model organisms.\n\nQueries NCBI for each target and stores results in cross_species_targets.","operationId":"trigger_ortholog_ingestion_api_v2_comparative_ingest_orthologs_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/preprints":{"get":{"tags":["preprints"],"summary":"List Preprints","description":"List recent SMA-relevant preprints stored in the database.\n\nResults are ordered by relevance score descending, then by posted_date descending.","operationId":"list_preprints_api_v2_preprints_get","parameters":[{"name":"server","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by server: biorxiv or medrxiv","title":"Server"},"description":"Filter by server: biorxiv or medrxiv"},{"name":"min_score","in":"query","required":false,"schema":{"type":"number","maximum":1.0,"minimum":0.0,"description":"Minimum relevance score","default":0.0,"title":"Min Score"},"description":"Minimum relevance score"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/preprints/scan":{"post":{"tags":["preprints"],"summary":"Trigger Preprint Scan","description":"Trigger a fresh scan of bioRxiv and medRxiv for SMA-relevant preprints.\n\nRequires x-admin-key header. Creates the preprints table if it does not exist,\nthen upserts all newly found preprints by DOI.","operationId":"trigger_preprint_scan_api_v2_preprints_scan_post","parameters":[{"name":"days_back","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"description":"Days back to scan","default":7,"title":"Days Back"},"description":"Days back to scan"},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/search":{"get":{"tags":["search"],"summary":"Search Endpoint","description":"Search across claims and sources using semantic, keyword, or hybrid mode.\n\n- **semantic**: Pure vector similarity (sentence-transformers + FAISS)\n- **keyword**: SQL ILIKE pattern matching\n- **hybrid**: Combines both, boosts items found by both methods","operationId":"search_endpoint_api_v2_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":500,"description":"Search query","title":"Q"},"description":"Search query"},{"name":"top_k","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of results","default":20,"title":"Top K"},"description":"Number of results"},{"name":"mode","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SearchMode","description":"Search mode","default":"hybrid"},"description":"Search mode"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/search/reindex":{"post":{"tags":["search"],"summary":"Reindex","description":"Rebuild the full FAISS search index from all claims and sources.\n\nRequires X-Admin-Key header. Runs as a background task — returns\nimmediately. Check GET /search/stats for completion status.","operationId":"reindex_api_v2_search_reindex_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/search/stats":{"get":{"tags":["search"],"summary":"Search Stats","description":"Return search index statistics — no authentication required.","operationId":"search_stats_api_v2_search_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/blackboard":{"get":{"tags":["blackboard"],"summary":"List Messages","description":"List blackboard messages with optional filters.","operationId":"list_messages_api_v2_blackboard_get","parameters":[{"name":"agent_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by posting agent","title":"Agent Name"},"description":"Filter by posting agent"},{"name":"message_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by message type","title":"Message Type"},"description":"Filter by message type"},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO-8601 datetime — messages after this","title":"Since"},"description":"ISO-8601 datetime — messages after this"},{"name":"unread_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Agent name — only unread messages","title":"Unread By"},"description":"Agent name — only unread messages"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["blackboard"],"summary":"Create Message","description":"Post a new message to the blackboard. Requires x-admin-key header.","operationId":"create_message_api_v2_blackboard_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostMessageBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/blackboard/stats":{"get":{"tags":["blackboard"],"summary":"Blackboard Stats","description":"Aggregate statistics: counts by type, by agent, total, and recent activity.","operationId":"blackboard_stats_api_v2_blackboard_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/blackboard/{message_id}/read":{"post":{"tags":["blackboard"],"summary":"Mark Message Read","description":"Mark a message as read by the given agent. Requires x-admin-key header.","operationId":"mark_message_read_api_v2_blackboard__message_id__read_post","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkReadBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/blackboard/cleanup":{"post":{"tags":["blackboard"],"summary":"Trigger Cleanup","description":"Delete expired blackboard messages. Requires x-admin-key header.","operationId":"trigger_cleanup_api_v2_blackboard_cleanup_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/splice/benchmark":{"get":{"tags":["splice"],"summary":"List Benchmark","description":"Full benchmark with pagination and filtering.\n\nReturns scored splice variants from the database.\nUse POST /splice/benchmark/generate first to populate.","operationId":"list_benchmark_api_v2_splice_benchmark_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Max results per page","default":50,"title":"Limit"},"description":"Max results per page"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Offset for pagination","default":0,"title":"Offset"},"description":"Offset for pagination"},{"name":"min_score","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"description":"Minimum composite score","title":"Min Score"},"description":"Minimum composite score"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by region: exon7, intron6, intron7","title":"Region"},"description":"Filter by region: exon7, intron6, intron7"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"Sort field","default":"composite_score","title":"Sort"},"description":"Sort field"},{"name":"order","in":"query","required":false,"schema":{"type":"string","description":"Sort order: asc or desc","default":"desc","title":"Order"},"description":"Sort order: asc or desc"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/splice/benchmark/stats":{"get":{"tags":["splice"],"summary":"Benchmark Stats","description":"Summary statistics for the splice benchmark.\n\nReturns counts, score distributions, and therapeutic hotspot info.\nCan be computed from the scoring engine without requiring DB population.","operationId":"benchmark_stats_api_v2_splice_benchmark_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/splice/benchmark/reference":{"get":{"tags":["splice"],"summary":"Benchmark Reference","description":"Return the SMN2 exon 7 reference sequence, flanking regions, and annotations.","operationId":"benchmark_reference_api_v2_splice_benchmark_reference_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/splice/benchmark/position/{pos}":{"get":{"tags":["splice"],"summary":"Variants At Position","description":"All 3 SNVs at a specific exon-relative position.\n\nPosition coordinates:\n  - Negative: intron 6 (e.g. -1 = last base of intron 6)\n  - 1-55: exon 7\n  - Positive >55 not used; intron 7 uses +1 to +100\n\nNote: intron 7 positions are stored as 1-100 in the DB, not 55-154.","operationId":"variants_at_position_api_v2_splice_benchmark_position__pos__get","parameters":[{"name":"pos","in":"path","required":true,"schema":{"type":"integer","title":"Pos"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/splice/benchmark/region/{region}":{"get":{"tags":["splice"],"summary":"Variants By Region","description":"Variants in a named region.\n\nSupported regions:\n  - exon7: all 54 exonic positions\n  - intron6: 100 bp upstream flank\n  - intron7: 100 bp downstream flank\n  - iss_n1: ISS-N1 element (intron 7, +10 to +24) -- nusinersen target\n  - ese: exonic splicing enhancers (exon 7, positions 1-27)\n  - ess: exonic splicing silencer (exon 7, positions 30-44)","operationId":"variants_by_region_api_v2_splice_benchmark_region__region__get","parameters":[{"name":"region","in":"path","required":true,"schema":{"type":"string","title":"Region"}},{"name":"min_score","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Min Score"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/splice/benchmark/therapeutic":{"get":{"tags":["splice"],"summary":"Therapeutic Variants","description":"Variants in therapeutically relevant regions.\n\nReturns variants from:\n  - ISS-N1 (nusinersen/Spinraza binding site, intron 7 +10 to +24)\n  - Position 6 of exon 7 (disease-defining variant)\n  - ESE regions (risdiplam/Evrysdi target area, exon 7 positions 1-27)\n\nSorted by composite score descending.","operationId":"therapeutic_variants_api_v2_splice_benchmark_therapeutic_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/splice/benchmark/export":{"get":{"tags":["splice"],"summary":"Export Benchmark Data","description":"Export the full benchmark as CSV or JSON.\n\nComputed from the scoring engine (does not require DB population).","operationId":"export_benchmark_data_api_v2_splice_benchmark_export_get","parameters":[{"name":"fmt","in":"query","required":false,"schema":{"type":"string","description":"Export format: csv or json","default":"csv","title":"Fmt"},"description":"Export format: csv or json"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/splice/benchmark/generate":{"post":{"tags":["splice"],"summary":"Generate Benchmark","description":"Generate the full splice benchmark and store in the database (admin only).\n\nComputes all ~762 SNVs, scores them, and inserts into splice_variants.\nReplaces any existing data.","operationId":"generate_benchmark_api_v2_splice_benchmark_generate_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/splice/safety":{"get":{"tags":["splice-offtarget"],"summary":"Aso Safety Profiles","description":"Get safety profiles for all known SMA ASO therapeutics.\n\nReturns a summary of off-target risks and clinical safety data\nfor nusinersen (Spinraza) and risdiplam (Evrysdi).","operationId":"aso_safety_profiles_api_v2_splice_safety_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/splice/offtarget/iss-n1":{"get":{"tags":["splice-offtarget"],"summary":"Predict Iss N1","description":"Predict off-targets for ISS-N1-targeting ASOs (nusinersen class).\n\nScans for transcriptome-wide sequence similarity to the ISS-N1\nbinding site in SMN2 intron 7. Returns genes with partial matches\nand their assessed risk levels.","operationId":"predict_iss_n1_api_v2_splice_offtarget_iss_n1_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/splice/offtarget/{aso_name}":{"get":{"tags":["splice-offtarget"],"summary":"Predict Aso Offtargets","description":"Predict off-target splicing effects for an ASO therapeutic.\n\nAvailable ASOs: nusinersen, risdiplam.\n\nReturns known off-target genes, sequence similarity scores,\nrisk assessments, and clinical safety summaries.","operationId":"predict_aso_offtargets_api_v2_splice_offtarget__aso_name__get","parameters":[{"name":"aso_name","in":"path","required":true,"schema":{"type":"string","title":"Aso Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/splice/predict":{"get":{"tags":["splice_predictor"],"summary":"Predict Variant","description":"Predict the effect of an SMN2 sequence variant on splicing and protein function.\n\nCombines rule-based splice site analysis with ESM-2 protein language model\npredictions (via HuggingFace Inference API) to assess variant impact.\n\nExample queries:\n- /splice/predict?variant=c.6T>C (the critical SMN1/SMN2 difference)\n- /splice/predict?variant=p.K42R (protein-level variant)\n- /splice/predict?variant=exon7:25G>C (hnRNP A1 site disruption)","operationId":"predict_variant_api_v2_splice_predict_get","parameters":[{"name":"variant","in":"query","required":true,"schema":{"type":"string","description":"Variant notation: p.K42R (protein), c.6T>C (DNA), or exon7:6T>C","title":"Variant"},"description":"Variant notation: p.K42R (protein), c.6T>C (DNA), or exon7:6T>C"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/splice/known-variants":{"get":{"tags":["splice_predictor"],"summary":"Known Variants","description":"Return curated list of known SMN2 variants with clinical annotations.","operationId":"known_variants_api_v2_splice_known_variants_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/splice/elements":{"get":{"tags":["splice_predictor"],"summary":"Splice Elements","description":"Return key regulatory elements around SMN2 exon 7.\n\nThese are the targets for ASO therapy (nusinersen targets ISS-N1)\nand small molecule therapy (risdiplam enhances SF2/ASF binding).","operationId":"splice_elements_api_v2_splice_elements_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/splice/batch":{"post":{"tags":["splice_predictor"],"summary":"Batch Predict","description":"Predict effects for multiple variants in one call.\n\nBody: {\"variants\": [\"c.6T>C\", \"p.K42R\", \"exon7:25G>C\"]}","operationId":"batch_predict_api_v2_splice_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchVariantInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ask":{"get":{"tags":["assistant"],"summary":"Ask Question","description":"Ask a research question about SMA — answered via RAG over the evidence base.\n\nUses hybrid search (semantic + keyword) to find relevant claims and papers,\nthen synthesizes an answer using Claude Sonnet (Pro model).\n\nExample questions:\n- What is the role of NCALD in SMA pathology?\n- How does risdiplam modify SMN2 splicing?\n- What evidence supports PLS3 as a disease modifier?\n- What are the main failure reasons for SMA drug candidates?","operationId":"ask_question_api_v2_ask_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":5,"maxLength":1000,"description":"Research question","title":"Q"},"description":"Research question"},{"name":"max_context","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":5,"description":"Max evidence items to consider","default":30,"title":"Max Context"},"description":"Max evidence items to consider"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/chat":{"post":{"tags":["chat"],"summary":"Chat Endpoint","description":"Multi-turn conversational research assistant.\n\nSend a message with optional conversation history. The server is stateless —\nconversation context is maintained by the client sending previous exchanges.","operationId":"chat_endpoint_api_v2_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/hypotheses/convergence":{"get":{"tags":["hypothesis_gen"],"summary":"Get Convergence Signals","description":"View current convergence signals without generating hypotheses.\n\nReturns claim clusters where multiple independent sources converge on\nthe same molecular target — candidates for hypothesis generation.","operationId":"get_convergence_signals_api_v2_hypotheses_convergence_get","parameters":[{"name":"days_back","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"Look back this many days","default":30,"title":"Days Back"},"description":"Look back this many days"},{"name":"min_claims","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":2,"description":"Minimum claims for a convergence signal","default":3,"title":"Min Claims"},"description":"Minimum claims for a convergence signal"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/hypotheses/generate":{"post":{"tags":["hypothesis_gen"],"summary":"Trigger Generation","description":"Trigger hypothesis generation from new evidence convergence.\n\nScans claims from the last *days_back* days, identifies convergence\nsignals, synthesizes hypotheses via Claude Haiku, and stores results\nin the hypotheses table + blackboard.\n\nRequires X-Admin-Key header.","operationId":"trigger_generation_api_v2_hypotheses_generate_post","parameters":[{"name":"days_back","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"Look back this many days for new claims","default":7,"title":"Days Back"},"description":"Look back this many days for new claims"},{"name":"min_claims","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":2,"description":"Minimum claims for a convergence signal","default":3,"title":"Min Claims"},"description":"Minimum claims for a convergence signal"},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","description":"If true, find and synthesize but do not persist","default":false,"title":"Dry Run"},"description":"If true, find and synthesize but do not persist"},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/write/summary":{"get":{"tags":["writing"],"summary":"Write Summary","description":"Generate a structured evidence summary for a gene target or research topic.\n\nGathers evidence from the SMA database (claims, trials, drug outcomes, hypotheses)\nand synthesises a grounded document in the requested format using Claude Sonnet.\n\nNo admin key required — public endpoint.\n\nExamples:\n- `/write/summary?subject=SMN2&format=briefing&type=target`\n- `/write/summary?subject=PLS3&format=grant_section&type=target`\n- `/write/summary?subject=neuroprotection&format=paper_intro&type=topic`\n- `/write/summary?subject=NCALD&format=hypothesis_rationale&type=target`","operationId":"write_summary_api_v2_write_summary_get","parameters":[{"name":"subject","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"description":"Gene symbol (e.g. SMN2, NCALD) or research topic (e.g. 'SMN2 splicing', 'neuroprotection').","title":"Subject"},"description":"Gene symbol (e.g. SMN2, NCALD) or research topic (e.g. 'SMN2 splicing', 'neuroprotection')."},{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Output format. One of: grant_section (NIH R01 style, 800–1200 words), paper_intro (journal introduction, 500–800 words), briefing (executive briefing for non-specialists, 400–600 words), hypothesis_rationale (detailed testable hypothesis doc, 600–1000 words).","default":"briefing","title":"Format"},"description":"Output format. One of: grant_section (NIH R01 style, 800–1200 words), paper_intro (journal introduction, 500–800 words), briefing (executive briefing for non-specialists, 400–600 words), hypothesis_rationale (detailed testable hypothesis doc, 600–1000 words)."},{"name":"type","in":"query","required":false,"schema":{"type":"string","description":"Subject type. 'target' for gene/protein symbols, 'topic' for free-text research topics.","default":"target","title":"Type"},"description":"Subject type. 'target' for gene/protein symbols, 'topic' for free-text research topics."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/write/compare":{"get":{"tags":["writing"],"summary":"Write Comparison","description":"Generate a comparative evidence summary across multiple gene targets.\n\nGathers evidence for each target independently, then synthesises a\nsingle comparative document highlighting relative evidence strength,\nshared mechanisms, and clinical translation potential.\n\nNo admin key required — public endpoint.\n\nExamples:\n- `/write/compare?targets=SMN2,NCALD,PLS3&format=briefing`\n- `/write/compare?targets=SMN2,STMN2&format=grant_section`","operationId":"write_comparison_api_v2_write_compare_get","parameters":[{"name":"targets","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated gene symbols to compare (2–5 targets). Example: SMN2,NCALD,PLS3","title":"Targets"},"description":"Comma-separated gene symbols to compare (2–5 targets). Example: SMN2,NCALD,PLS3"},{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Output format. One of: grant_section, paper_intro, briefing, hypothesis_rationale.","default":"briefing","title":"Format"},"description":"Output format. One of: grant_section, paper_intro, briefing, hypothesis_rationale."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/screen/molecules":{"get":{"tags":["screening"],"summary":"Get Molecule Screening Stats","description":"Return aggregate statistics for the molecule_screenings table.","operationId":"get_molecule_screening_stats_api_v2_screen_molecules_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/screen/molecules/status":{"get":{"tags":["screening"],"summary":"Get Screening Status","description":"Get background screening task status.","operationId":"get_screening_status_api_v2_screen_molecules_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/screen/molecules/target":{"post":{"tags":["screening"],"summary":"Screen Molecules For Target","description":"Screen ChEMBL and PubChem for bioactive compounds against *symbol*.\n\nRuns as a background task to avoid Nginx timeout. Check status via\nGET /screen/molecules/status.","operationId":"screen_molecules_for_target_api_v2_screen_molecules_target_post","parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string","description":"Gene/target symbol, e.g. SMN1 or NCALD","title":"Symbol"},"description":"Gene/target symbol, e.g. SMN1 or NCALD"},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Re-screen even if results already exist","default":false,"title":"Force"},"description":"Re-screen even if results already exist"},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/screen/molecules/all":{"post":{"tags":["screening"],"summary":"Screen Molecules All Targets","description":"Screen every target in the targets table against ChEMBL and PubChem.\n\nRuns as a background task. Check progress via GET /screen/molecules/status.","operationId":"screen_molecules_all_targets_api_v2_screen_molecules_all_post","parameters":[{"name":"batch_size","in":"query","required":false,"schema":{"type":"integer","maximum":21,"minimum":1,"description":"Targets per batch","default":5,"title":"Batch Size"},"description":"Targets per batch"},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Re-screen targets that already have results","default":false,"title":"Force"},"description":"Re-screen targets that already have results"},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/molecules/browser":{"get":{"tags":["molecule-browser","molecule-browser"],"summary":"List Molecules","description":"Paginated molecule listing with filters and sorting.","operationId":"list_molecules_api_v2_molecules_browser_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Items per page","default":20,"title":"Per Page"},"description":"Items per page"},{"name":"target","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by target symbol","title":"Target"},"description":"Filter by target symbol"},{"name":"min_qed","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"description":"Minimum QED","title":"Min Qed"},"description":"Minimum QED"},{"name":"max_mw","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum molecular weight","title":"Max Mw"},"description":"Maximum molecular weight"},{"name":"bbb_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only BBB-permeable","default":false,"title":"Bbb Only"},"description":"Only BBB-permeable"},{"name":"lipinski_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only Lipinski-passing","default":false,"title":"Lipinski Only"},"description":"Only Lipinski-passing"},{"name":"method","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by generation method","title":"Method"},"description":"Filter by generation method"},{"name":"batch","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by generation batch","title":"Batch"},"description":"Filter by generation batch"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"Sort: qed_desc, mw_asc, confidence_desc, newest","default":"newest","title":"Sort"},"description":"Sort: qed_desc, mw_asc, confidence_desc, newest"},{"name":"search_smiles","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by SMILES substring","title":"Search Smiles"},"description":"Search by SMILES substring"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/molecules/browser/stats":{"get":{"tags":["molecule-browser","molecule-browser"],"summary":"Molecule Stats","description":"Aggregate statistics for the molecule collection.","operationId":"molecule_stats_api_v2_molecules_browser_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/molecules/browser/export":{"get":{"tags":["molecule-browser","molecule-browser"],"summary":"Export Molecules","description":"Export molecules as CSV or SDF for researchers/chemists.","operationId":"export_molecules_api_v2_molecules_browser_export_get","parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Export format: csv or sdf","default":"csv","title":"Format"},"description":"Export format: csv or sdf"},{"name":"target","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target"}},{"name":"bbb_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Bbb Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/molecules/browser/{mol_id}":{"get":{"tags":["molecule-browser","molecule-browser"],"summary":"Get Molecule","description":"Get full details for a single molecule.","operationId":"get_molecule_api_v2_molecules_browser__mol_id__get","parameters":[{"name":"mol_id","in":"path","required":true,"schema":{"type":"integer","title":"Mol Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crispr/guides":{"get":{"tags":["crispr"],"summary":"Get Crispr Guides","description":"Retrieve CRISPR guides from the database.\n\nFor SMN2/SMN1: returns pre-computed guides with therapeutic motif annotations.\nUse POST /crispr/guides to design guides for a custom DNA sequence.","operationId":"get_crispr_guides_api_v2_crispr_guides_get","parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string","description":"Gene symbol filter (SMN2/SMN1 = DB; others need POST)","default":"SMN2","title":"Symbol"},"description":"Gene symbol filter (SMN2/SMN1 = DB; others need POST)"},{"name":"strategy_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by strategy ID","title":"Strategy Id"},"description":"Filter by strategy ID"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by region: exon7, intron6, intron7","title":"Region"},"description":"Filter by region: exon7, intron6, intron7"},{"name":"motif","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter guides that overlap a specific motif","title":"Motif"},"description":"Filter guides that overlap a specific motif"},{"name":"min_score","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"description":"Minimum on_target_score","title":"Min Score"},"description":"Minimum on_target_score"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["crispr"],"summary":"Post Crispr Guides","description":"Design CRISPR guides for a custom DNA sequence (compute-only, not persisted).\n\nAccepts 23-10000 nt DNA and scans both strands for 20nt protospacer + NGG PAM.","operationId":"post_crispr_guides_api_v2_crispr_guides_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuideDesignInput"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crispr/strategies":{"get":{"tags":["crispr"],"summary":"Get Strategies","description":"List all CRISPR therapeutic strategies stored in the database.","operationId":"get_strategies_api_v2_crispr_strategies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/crispr/strategies/{strategy_id}":{"get":{"tags":["crispr"],"summary":"Get Strategy","description":"Return a single therapeutic strategy with its top guides.","operationId":"get_strategy_api_v2_crispr_strategies__strategy_id__get","parameters":[{"name":"strategy_id","in":"path","required":true,"schema":{"type":"integer","description":"Strategy ID","title":"Strategy Id"},"description":"Strategy ID"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crispr/motifs":{"get":{"tags":["crispr"],"summary":"Get Smn2 Motifs","description":"Return all known SMN2 exon 7 regulatory motifs.\n\nIncludes ISS-N1 (nusinersen target), ESE (Tra2-beta), ESS (hnRNP A1),\nElement2, C6T disease position, and branch point.","operationId":"get_smn2_motifs_api_v2_crispr_motifs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/crispr/seed":{"post":{"tags":["crispr"],"summary":"Seed Smn2 Guides","description":"(Admin) Re-seed the database with computed SMN2 guides.\n\nClears existing SMN2 guides and strategies, then re-computes from\nthe reference sequence and inserts fresh results.","operationId":"seed_smn2_guides_api_v2_crispr_seed_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/aav/evaluate":{"get":{"tags":["aav"],"summary":"Evaluate Aav Capsids","description":"Evaluate AAV capsids for SMA gene therapy delivery.\n\nRanks 9 AAV serotypes by composite suitability score considering:\nmotor neuron tropism, BBB crossing, immunogenicity, manufacturing, and packaging.\n\nCargo options: SMN1_cDNA, SMN1_full_length, dCas9_CRISPRi,\ndual_vector_dCas9, base_editor_ABE, prime_editor, micro_dystrophin","operationId":"evaluate_aav_capsids_api_v2_aav_evaluate_get","parameters":[{"name":"cargo","in":"query","required":false,"schema":{"type":"string","description":"Cargo type to evaluate packaging feasibility","default":"SMN1_cDNA","title":"Cargo"},"description":"Cargo type to evaluate packaging feasibility"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/aav/capsid/{serotype}":{"get":{"tags":["aav"],"summary":"Get Capsid","description":"Get detailed evaluation for a specific AAV serotype.\n\nReturns tropism, immunogenicity, clinical precedent, and\npackaging feasibility for all cargo types.","operationId":"get_capsid_api_v2_aav_capsid__serotype__get","parameters":[{"name":"serotype","in":"path","required":true,"schema":{"type":"string","title":"Serotype"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/aav/cargos":{"get":{"tags":["aav"],"summary":"List Cargo Types","description":"List all therapeutic cargo types with sizes and genome configurations.","operationId":"list_cargo_types_api_v2_aav_cargos_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/gene-versions/smn2":{"get":{"tags":["gene_versioning"],"summary":"Get Smn2 Version Tree","description":"Get the SMN2 exon 7 version tree — all known variants as 'commits'.\n\nShows the lineage: SMN1 (healthy) → SMN2 (C6T disease mutation)\n→ therapeutic edits (base edit correction, ESE enhancement, ESS disruption).\nEach version has a deterministic SHA-256 hash like a git commit.","operationId":"get_smn2_version_tree_api_v2_gene_versions_smn2_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/gene-versions/edit":{"post":{"tags":["gene_versioning"],"summary":"Create Custom Edit","description":"Simulate and version a custom sequence edit.\n\nCreates a parent→child version pair with diff, like a git commit.","operationId":"create_custom_edit_api_v2_gene_versions_edit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEditInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/dock/score":{"get":{"tags":["docking"],"summary":"Dock Top Compounds","description":"Score top drug-like compounds against a target binding pocket.\n\nPharmacophore-based scoring proxy — predicts binding affinity from\nmolecular descriptors and pocket characteristics without requiring\nAutoDock Vina installation.\n\nAvailable pockets: SMN2_ISS_N1, SMN2_SPLICE_SITE, HDAC_CATALYTIC,\nMTOR_ATP_SITE, NCALD_CALCIUM_SITE, PLS3_ACTIN_INTERFACE, UBA1_UBIQUITIN_SITE","operationId":"dock_top_compounds_api_v2_dock_score_get","parameters":[{"name":"pocket","in":"query","required":false,"schema":{"type":"string","description":"Binding pocket key","default":"SMN2_SPLICE_SITE","title":"Pocket"},"description":"Binding pocket key"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["docking"],"summary":"Dock Custom Compound","description":"Score a single compound against a binding pocket.","operationId":"dock_custom_compound_api_v2_dock_score_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DockInput"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/dock/pockets":{"get":{"tags":["docking"],"summary":"List Binding Pockets","description":"List all available target binding pockets with characteristics.","operationId":"list_binding_pockets_api_v2_dock_pockets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/dock/local/batch":{"post":{"tags":["diffdock-local"],"summary":"Dock Batch","description":"Dock a batch of compounds against a self-hosted DiffDock instance.\n\nSends compounds in parallel batches of 10 to the GPU instance.\nRequires admin key — this triggers GPU compute costs.","operationId":"dock_batch_api_v2_dock_local_batch_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDockRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/dock/local/launch":{"post":{"tags":["diffdock-local"],"summary":"Launch Instance","description":"Launch a Vast.ai GPU instance with the DiffDock NIM container.\n\nRequires NGC_API_KEY env var and vastai CLI installed.\nReturns the instance ID, SSH URL, and API URL for docking.","operationId":"launch_instance_api_v2_dock_local_launch_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/dock/local/health":{"get":{"tags":["diffdock-local"],"summary":"Health Check","description":"Check if a self-hosted DiffDock instance is healthy and ready.\n\nNo admin key required — useful for monitoring.","operationId":"health_check_api_v2_dock_local_health_get","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","description":"Base URL of the DiffDock instance","title":"Url"},"description":"Base URL of the DiffDock instance"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/dock/local/destroy":{"post":{"tags":["diffdock-local"],"summary":"Destroy","description":"Destroy a Vast.ai DiffDock instance when screening is complete.\n\nAlways destroy instances after use to avoid ongoing GPU charges.","operationId":"destroy_api_v2_dock_local_destroy_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DestroyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/dock/local/estimate":{"get":{"tags":["diffdock-local"],"summary":"Cost Estimate","description":"Estimate GPU cost and time for a virtual screening campaign.\n\nBased on ~5 compounds/sec throughput on A100 at ~$1.50/hr.\nNo admin key required — informational endpoint.","operationId":"cost_estimate_api_v2_dock_local_estimate_get","parameters":[{"name":"compounds","in":"query","required":true,"schema":{"type":"integer","minimum":1,"description":"Number of compounds to screen","title":"Compounds"},"description":"Number of compounds to screen"},{"name":"targets","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Number of protein targets","default":1,"title":"Targets"},"description":"Number of protein targets"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/prime-editing/feasibility":{"get":{"tags":["prime_editing"],"summary":"Get Prime Editing Feasibility","description":"Assess prime editing feasibility for all SMA-relevant edits.\n\nEvaluates PE2/PE3/PEmax for:\n- SMN2 C6T correction (the root cause fix)\n- ISS-N1 disruption (permanent nusinersen)\n- ESE strengthening (Tra2-beta enhancer)\n\nIncludes comparison with approved therapies (nusinersen, risdiplam, Zolgensma).","operationId":"get_prime_editing_feasibility_api_v2_prime_editing_feasibility_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/md/simulations":{"get":{"tags":["md_simulation"],"summary":"Get Available Simulations","description":"List all available SMA molecular dynamics simulation templates.\n\n6 simulation types covering: SMN oligomerization, hnRNP A1-ISS-N1 binding,\nrisdiplam-SMN2 interaction, NCALD calcium dynamics, PLS3 actin bundling,\nSMN-Gemin2 complex stability.","operationId":"get_available_simulations_api_v2_md_simulations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/md/generate/{sim_key}":{"get":{"tags":["md_simulation"],"summary":"Generate Simulation","description":"Generate complete OpenMM MD simulation scripts for an SMA target.\n\nReturns 3 ready-to-run Python scripts:\n1. Setup (structure loading, solvation, minimization, equilibration)\n2. Production (NPT ensemble MD run)\n3. Analysis (RMSD, RMSF, Rg, contact maps)\n\nAvailable simulation keys: smn_oligomerization, hnrnp_a1_iss_n1,\nsmn_risdiplam, ncald_calcium, pls3_actin, smn_gemin_complex","operationId":"generate_simulation_api_v2_md_generate__sim_key__get","parameters":[{"name":"sim_key","in":"path","required":true,"schema":{"type":"string","title":"Sim Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/spatial/penetration":{"get":{"tags":["spatial_omics"],"summary":"Drug Penetration","description":"Analyze drug penetration across spinal cord zones (DB-backed).","operationId":"drug_penetration_api_v2_spatial_penetration_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/spatial/expression":{"get":{"tags":["spatial_omics"],"summary":"Spatial Expression","description":"Get target × zone expression matrix (zone metadata from DB).","operationId":"spatial_expression_api_v2_spatial_expression_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/spatial/silent-zones":{"get":{"tags":["spatial_omics"],"summary":"Silent Zones","description":"Identify therapeutic silent zones (DB-backed).","operationId":"silent_zones_api_v2_spatial_silent_zones_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/spatial/zones":{"get":{"tags":["spatial_omics"],"summary":"List Zones","description":"List all spatial zones with full metadata from DB.","operationId":"list_zones_api_v2_spatial_zones_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/spatial/zones/{zone_key}":{"get":{"tags":["spatial_omics"],"summary":"Get Zone","description":"Get a single spatial zone by key.","operationId":"get_zone_api_v2_spatial_zones__zone_key__get","parameters":[{"name":"zone_key","in":"path","required":true,"schema":{"type":"string","title":"Zone Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/spatial/drugs":{"get":{"tags":["spatial_omics"],"summary":"List Drug Penetration","description":"List all drug penetration profiles, optionally filtered by route.","operationId":"list_drug_penetration_api_v2_spatial_drugs_get","parameters":[{"name":"route","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/spatial/penetration/predict":{"post":{"tags":["spatial_omics"],"summary":"Predict Drug Penetration","description":"Predict penetration for a novel compound using the pharmacokinetic model.\nSet persist=true to save results to spatial_drug_penetration table.","operationId":"predict_drug_penetration_api_v2_spatial_penetration_predict_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DynamicDrugQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/regen/genes":{"get":{"tags":["advanced_analytics"],"summary":"Regeneration Genes","description":"Get regeneration-associated genes with SMA comparison.","operationId":"regeneration_genes_api_v2_regen_genes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/regen/pathways":{"get":{"tags":["advanced_analytics"],"summary":"Pathway Comparisons","description":"Compare regeneration pathways with SMA state.","operationId":"pathway_comparisons_api_v2_regen_pathways_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/regen/silenced":{"get":{"tags":["advanced_analytics"],"summary":"Silenced Programs","description":"Identify silenced regeneration programs in human SMA.","operationId":"silenced_programs_api_v2_regen_silenced_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/nmj/signals":{"get":{"tags":["advanced_analytics"],"summary":"Retrograde Signals","description":"Get retrograde signaling molecules at the NMJ (PostgreSQL-backed).","operationId":"retrograde_signals_api_v2_nmj_signals_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Retrograde Signals Api V2 Nmj Signals Get"}}}}}}},"/api/v2/nmj/ev-cargo":{"get":{"tags":["advanced_analytics"],"summary":"Ev Cargo","description":"Get EV therapeutic cargo options for NMJ delivery (PostgreSQL-backed).","operationId":"ev_cargo_api_v2_nmj_ev_cargo_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ev Cargo Api V2 Nmj Ev Cargo Get"}}}}}}},"/api/v2/nmj/chip-models":{"get":{"tags":["advanced_analytics"],"summary":"Chip Models","description":"Get organ-on-chip models for NMJ validation (PostgreSQL-backed).","operationId":"chip_models_api_v2_nmj_chip_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Chip Models Api V2 Nmj Chip Models Get"}}}}}}},"/api/v2/nmj/happy-muscle":{"get":{"tags":["advanced_analytics"],"summary":"Happy Muscle","description":"Full analysis of the 'happy muscle → surviving neuron' hypothesis (DB-backed).","operationId":"happy_muscle_api_v2_nmj_happy_muscle_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Happy Muscle Api V2 Nmj Happy Muscle Get"}}}}}}},"/api/v2/multisystem/organs":{"get":{"tags":["advanced_analytics"],"summary":"Organ Systems","description":"Get organ systems affected in SMA beyond motor neurons.","operationId":"organ_systems_api_v2_multisystem_organs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/multisystem/combinations":{"get":{"tags":["advanced_analytics"],"summary":"Combination Therapies","description":"Get combination therapy strategies for multisystem SMA.","operationId":"combination_therapies_api_v2_multisystem_combinations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/multisystem/energy":{"get":{"tags":["advanced_analytics"],"summary":"Energy Budget","description":"Get energy budget analysis for SMA motor neurons.","operationId":"energy_budget_api_v2_multisystem_energy_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/multisystem/full":{"get":{"tags":["advanced_analytics"],"summary":"Multisystem Full","description":"Full multisystem SMA analysis.","operationId":"multisystem_full_api_v2_multisystem_full_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/bioelectric/channels":{"get":{"tags":["bioelectric"],"summary":"Ion Channels","description":"Get ion channel expression profile in SMA motor neurons.","operationId":"ion_channels_api_v2_bioelectric_channels_get","parameters":[{"name":"channel_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Na, K, Ca, Cl, HCN","title":"Channel Type"},"description":"Na, K, Ca, Cl, HCN"},{"name":"vmem_role","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"depolarizing, repolarizing, resting, modulatory","title":"Vmem Role"},"description":"depolarizing, repolarizing, resting, modulatory"},{"name":"sma_expression","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"upregulated, downregulated, unchanged, dysregulated","title":"Sma Expression"},"description":"upregulated, downregulated, unchanged, dysregulated"},{"name":"therapeutic_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Therapeutic Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bioelectric/vmem":{"get":{"tags":["bioelectric"],"summary":"Vmem States","description":"Get Vmem state classification for SMA motor neurons.","operationId":"vmem_states_api_v2_bioelectric_vmem_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/bioelectric/electroceuticals":{"get":{"tags":["bioelectric"],"summary":"Electroceuticals","description":"Get electroceutical interventions for SMA.","operationId":"electroceuticals_api_v2_bioelectric_electroceuticals_get","parameters":[{"name":"modality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Modality"}},{"name":"evidence_level","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"clinical, preclinical, theoretical","title":"Evidence Level"},"description":"clinical, preclinical, theoretical"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bioelectric/profile":{"get":{"tags":["bioelectric"],"summary":"Bioelectric Profile","description":"Full bioelectric analysis of SMA motor neurons.","operationId":"bioelectric_profile_api_v2_bioelectric_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/admin/bioelectric/channels":{"post":{"tags":["bioelectric"],"summary":"Add Channel","description":"Add a new ion channel entry.","operationId":"add_channel_api_v2_admin_bioelectric_channels_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/bioelectric/channels/{gene}":{"put":{"tags":["bioelectric"],"summary":"Update Channel","description":"Update an existing ion channel by gene symbol.","operationId":"update_channel_api_v2_admin_bioelectric_channels__gene__put","parameters":[{"name":"gene","in":"path","required":true,"schema":{"type":"string","title":"Gene"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admin/bioelectric/interventions":{"post":{"tags":["bioelectric"],"summary":"Add Intervention","description":"Add a new bioelectric intervention.","operationId":"add_intervention_api_v2_admin_bioelectric_interventions_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InterventionCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/splice/cross-species":{"get":{"tags":["splicing_map"],"summary":"Cross Species Splicing","description":"Get the full cross-species splicing map (axolotl vs human).","operationId":"cross_species_splicing_api_v2_splice_cross_species_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/splice/cross-species/actionable":{"get":{"tags":["splicing_map"],"summary":"Actionable Splice Targets","description":"Get splice events with highest reactivation feasibility.","operationId":"actionable_splice_targets_api_v2_splice_cross_species_actionable_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/splice/cross-species/compare":{"get":{"tags":["splicing_map"],"summary":"Compare Regen Vs Sma","description":"Compare regeneration vs degeneration splicing patterns.","operationId":"compare_regen_vs_sma_api_v2_splice_cross_species_compare_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/rna/targets":{"get":{"tags":["rna_binding"],"summary":"Rna Targets","description":"Get all RNA target sites in SMN2.","operationId":"rna_targets_api_v2_rna_targets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/rna/modulators":{"get":{"tags":["rna_binding"],"summary":"Known Modulators","description":"Get known RNA-binding SMN2 splicing modulators.","operationId":"known_modulators_api_v2_rna_modulators_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/rna/predict":{"post":{"tags":["rna_binding"],"summary":"Predict Binding","description":"Predict RNA-binding potential of a compound.","operationId":"predict_binding_api_v2_rna_predict_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sma_platform__api__routes__rna_binding__CompoundInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/rna/benchmark":{"post":{"tags":["rna_binding"],"summary":"Benchmark","description":"Benchmark a compound against known SMN2 modulators.","operationId":"benchmark_api_v2_rna_benchmark_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sma_platform__api__routes__rna_binding__CompoundInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/screen/dual-target":{"get":{"tags":["dual_target"],"summary":"Dual Target Candidates","description":"Get dual-target candidates (SMN2 splicing + ion channel).","operationId":"dual_target_candidates_api_v2_screen_dual_target_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/screen/dual-target/channels":{"get":{"tags":["dual_target"],"summary":"Ion Channel Map","description":"Map ion channel targets to available drugs.","operationId":"ion_channel_map_api_v2_screen_dual_target_channels_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/screen/dual-target/synergy":{"get":{"tags":["dual_target"],"summary":"Synergy Analysis","description":"Analyze synergy potential across all dual-target candidates.","operationId":"synergy_analysis_api_v2_screen_dual_target_synergy_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/twin/compartments":{"get":{"tags":["digital_twin"],"summary":"Compartments","description":"Get motor neuron compartment model.","operationId":"compartments_api_v2_twin_compartments_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/twin/pathways":{"get":{"tags":["digital_twin"],"summary":"Pathways","description":"Get signaling pathway model.","operationId":"pathways_api_v2_twin_pathways_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/twin/drugs":{"get":{"tags":["digital_twin"],"summary":"Available Drugs","description":"Get drugs available for digital twin simulation.","operationId":"available_drugs_api_v2_twin_drugs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/twin/simulate":{"post":{"tags":["digital_twin"],"summary":"Simulate","description":"Simulate a drug combination on the motor neuron digital twin.","operationId":"simulate_api_v2_twin_simulate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/twin/optimize":{"get":{"tags":["digital_twin"],"summary":"Optimize","description":"Find optimal drug combinations via exhaustive simulation.","operationId":"optimize_api_v2_twin_optimize_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/twin/temporal":{"post":{"tags":["digital_twin"],"summary":"Temporal Simulation","description":"Simulate motor neuron health trajectory over months of treatment.\n\nShows progressive recovery (or decline) including drug onset delays,\nplateau effects, and compensatory mechanisms.","operationId":"temporal_simulation_api_v2_twin_temporal_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemporalInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/twin/gpu-validated":{"get":{"tags":["digital_twin"],"summary":"Gpu Validated","description":"Get drugs with GPU computational validation (DiffDock, SpliceAI, Boltz-2, ESM-2).\n\nShows which drugs in the digital twin have been validated by our\nGPU compute pipeline (Phase G1-G3).","operationId":"gpu_validated_api_v2_twin_gpu_validated_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/lab/assays":{"get":{"tags":["lab_os"],"summary":"Assay Library","description":"Get standardized SMA assay library (8 assays).","operationId":"assay_library_api_v2_lab_assays_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/lab/cloud-labs":{"get":{"tags":["lab_os"],"summary":"Cloud Labs","description":"Get cloud lab integration specs (Emerald, Strateos, Opentrons).","operationId":"cloud_labs_api_v2_lab_cloud_labs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/lab/design":{"get":{"tags":["lab_os"],"summary":"Design Experiment","description":"Generate experiment design from a hypothesis.","operationId":"design_experiment_api_v2_lab_design_get","parameters":[{"name":"hypothesis","in":"query","required":true,"schema":{"type":"string","maxLength":1000,"description":"Hypothesis text to design experiment for","title":"Hypothesis"},"description":"Hypothesis text to design experiment for"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/federated/protocols":{"get":{"tags":["federated"],"summary":"Fl Protocols","description":"Get federated learning protocol specifications for SMA research.","operationId":"fl_protocols_api_v2_federated_protocols_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/federated/omop":{"get":{"tags":["federated"],"summary":"Omop Mappings","description":"Get OMOP/OHDSI concept mappings for SMA clinical data.","operationId":"omop_mappings_api_v2_federated_omop_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/federated/privacy-budget":{"get":{"tags":["federated"],"summary":"Privacy Budget","description":"Calculate privacy budget for a research scenario.","operationId":"privacy_budget_api_v2_federated_privacy_budget_get","parameters":[{"name":"epsilon","in":"query","required":false,"schema":{"type":"number","maximum":20.0,"minimum":0.01,"description":"Per-query epsilon","default":1.0,"title":"Epsilon"},"description":"Per-query epsilon"},{"name":"delta","in":"query","required":false,"schema":{"type":"number","exclusiveMaximum":1.0,"exclusiveMinimum":0,"description":"Per-query delta","default":1e-05,"title":"Delta"},"description":"Per-query delta"},{"name":"n_queries","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"description":"Number of queries","default":50,"title":"N Queries"},"description":"Number of queries"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/federated/data-tiers":{"get":{"tags":["federated"],"summary":"Data Tiers","description":"Get data sharing tier framework (4 tiers with privacy levels).","operationId":"data_tiers_api_v2_federated_data_tiers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/translate/regulatory":{"get":{"tags":["translation"],"summary":"Regulatory Pathways","description":"Get regulatory pathway map for SMA therapeutics (FDA/EMA).","operationId":"regulatory_pathways_api_v2_translate_regulatory_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/translate/grants":{"get":{"tags":["translation"],"summary":"Grant Templates","description":"Get grant application templates for SMA research.","operationId":"grant_templates_api_v2_translate_grants_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/translate/grants/formats":{"get":{"tags":["translation"],"summary":"Grant Formats","description":"List supported grant export formats and their requirements.","operationId":"grant_formats_api_v2_translate_grants_formats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/translate/grants/export/{symbol}":{"get":{"tags":["translation"],"summary":"Export Grant Section","description":"Generate grant-ready text for a target.\n\nFetches convergence score, top claims, screening hits, experiment\nsuggestions, and assay recommendations, then composes structured\nprose sections suitable for the specified grant format.\n\nSupported formats: NIH_R01, NIH_R21, ERC_StG, CURE_SMA.","operationId":"export_grant_section_api_v2_translate_grants_export__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Grant format: NIH_R01, NIH_R21, ERC_StG, CURE_SMA","default":"NIH_R01","title":"Format"},"description":"Grant format: NIH_R01, NIH_R21, ERC_StG, CURE_SMA"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/translate/validation":{"get":{"tags":["translation"],"summary":"Validation Pipeline","description":"Get 5-level hypothesis validation pipeline.","operationId":"validation_pipeline_api_v2_translate_validation_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/translate/validate":{"get":{"tags":["translation"],"summary":"Validate","description":"Run a hypothesis through the validation pipeline gate check.","operationId":"validate_api_v2_translate_validate_get","parameters":[{"name":"hypothesis_id","in":"query","required":true,"schema":{"type":"string","description":"Hypothesis identifier","title":"Hypothesis Id"},"description":"Hypothesis identifier"},{"name":"evidence_score","in":"query","required":true,"schema":{"type":"number","maximum":1.0,"minimum":0,"description":"Composite evidence score (0-1)","title":"Evidence Score"},"description":"Composite evidence score (0-1)"},{"name":"twin_improvement","in":"query","required":true,"schema":{"type":"number","maximum":1.0,"minimum":0,"description":"Digital twin functional improvement (0-1)","title":"Twin Improvement"},"description":"Digital twin functional improvement (0-1)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/discovery/signals":{"get":{"tags":["discovery"],"summary":"List Signals","description":"List breakthrough signals detected by the auto-discovery pipeline.\n\nSignals are ranked by composite_score (novelty × convergence × impact).\nResearchers can filter by type and minimum score threshold.","operationId":"list_signals_api_v2_discovery_signals_get","parameters":[{"name":"signal_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter: claim_spike, hypothesis_confirmation, novel_target","title":"Signal Type"},"description":"Filter: claim_spike, hypothesis_confirmation, novel_target"},{"name":"min_score","in":"query","required":false,"schema":{"type":"number","maximum":1,"minimum":0,"default":0.0,"title":"Min Score"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/discovery/spikes":{"get":{"tags":["discovery"],"summary":"Get Spikes","description":"View claim volume spikes per target in the last N days.\n\nA \"spike\" means a target received significantly more claims than its\nmonthly baseline — indicates active research interest or new findings.","operationId":"get_spikes_api_v2_discovery_spikes_get","parameters":[{"name":"days_back","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days Back"}},{"name":"min_claims","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":3,"title":"Min Claims"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/discovery/confirmations":{"get":{"tags":["discovery"],"summary":"Get Confirmations","description":"Find new claims that confirm existing hypotheses.\n\nShows which hypotheses are receiving fresh supporting evidence.","operationId":"get_confirmations_api_v2_discovery_confirmations_get","parameters":[{"name":"days_back","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days Back"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/discovery/novel":{"get":{"tags":["discovery"],"summary":"Get Novel Targets","description":"Find targets with claims but no hypotheses — potential discoveries.\n\nThese are targets the platform has evidence for but hasn't formalized\ninto testable hypotheses yet. Researchers should review these.","operationId":"get_novel_targets_api_v2_discovery_novel_get","parameters":[{"name":"days_back","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days Back"}},{"name":"min_claims","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":3,"title":"Min Claims"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/discovery/run":{"post":{"tags":["discovery"],"summary":"Trigger Discovery","description":"Trigger the full auto-discovery pipeline (admin only).\n\nDetects claim spikes, hypothesis confirmations, and novel targets,\nthen scores and stores breakthrough signals.","operationId":"trigger_discovery_api_v2_discovery_run_post","parameters":[{"name":"days_back","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days Back"}},{"name":"persist","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Persist"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/convergence":{"get":{"tags":["predictions"],"summary":"List Convergence Scores","description":"List convergence scores for all scored targets.","operationId":"list_convergence_scores_api_v2_convergence_get","parameters":[{"name":"min_score","in":"query","required":false,"schema":{"type":"number","maximum":1,"minimum":0,"default":0.0,"title":"Min Score"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/convergence/{target_id}":{"get":{"tags":["predictions"],"summary":"Get Convergence Score","description":"Get convergence score breakdown for a specific target.","operationId":"get_convergence_score_api_v2_convergence__target_id__get","parameters":[{"name":"target_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Target Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/predictions":{"get":{"tags":["predictions"],"summary":"List Predictions","description":"List prediction cards with optional filters.","operationId":"list_predictions_api_v2_predictions_get","parameters":[{"name":"target","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"min_score","in":"query","required":false,"schema":{"type":"number","maximum":1,"minimum":0,"default":0.0,"title":"Min Score"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/predictions/{prediction_id}":{"get":{"tags":["predictions"],"summary":"Get Prediction","description":"Get a single prediction card with full detail.","operationId":"get_prediction_api_v2_predictions__prediction_id__get","parameters":[{"name":"prediction_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Prediction Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/predictions/{prediction_id}/export":{"get":{"tags":["predictions"],"summary":"Export Prediction","description":"Export prediction card as Markdown (for grant applications).","operationId":"export_prediction_api_v2_predictions__prediction_id__export_get","parameters":[{"name":"prediction_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Prediction Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"markdown","title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/predictions/generate":{"post":{"tags":["predictions"],"summary":"Generate Predictions","description":"Generate prediction cards from convergence scores >= 0.5.","operationId":"generate_predictions_api_v2_predictions_generate_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/predictions/{prediction_id}/status":{"patch":{"tags":["predictions"],"summary":"Update Prediction Status","description":"Update prediction card status.","operationId":"update_prediction_status_api_v2_predictions__prediction_id__status_patch","parameters":[{"name":"prediction_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Prediction Id"}},{"name":"status","in":"query","required":true,"schema":{"type":"string","title":"Status"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gpu/jobs":{"post":{"tags":["gpu"],"summary":"Create Gpu Job","description":"Create a GPU job record.","operationId":"create_gpu_job_api_v2_gpu_jobs_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GpuJobCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["gpu"],"summary":"List Gpu Jobs","description":"List GPU jobs with optional status filter.","operationId":"list_gpu_jobs_api_v2_gpu_jobs_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status","title":"Status"},"description":"Filter by status"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gpu/jobs/{job_id}":{"get":{"tags":["gpu"],"summary":"Get Gpu Job","description":"Get a single GPU job by ID.","operationId":"get_gpu_job_api_v2_gpu_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gpu/splice-summary":{"get":{"tags":["gpu"],"summary":"Splice Summary","description":"Return SpliceAI splice-score statistics and top variants by max delta score.\n\nUsed by the frontend GPU Results section.","operationId":"splice_summary_api_v2_gpu_splice_summary_get","parameters":[{"name":"top_n","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of top variants to return","default":10,"title":"Top N"},"description":"Number of top variants to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/gpu/offtarget-summary":{"get":{"tags":["gpu"],"summary":"Offtarget Summary","description":"Return CRISPR off-target statistics grouped by mismatch count.\n\nUsed by the frontend GPU Results section.","operationId":"offtarget_summary_api_v2_gpu_offtarget_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/ingest/spliceai":{"post":{"tags":["gpu"],"summary":"Ingest Spliceai","description":"Import SpliceAI delta scores into splice_scores table.\n\nUses UPSERT on (chrom, pos, ref, alt) to avoid duplicates.","operationId":"ingest_spliceai_api_v2_ingest_spliceai_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpliceScoreBatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ingest/embeddings":{"post":{"tags":["gpu"],"summary":"Ingest Embeddings","description":"Update target metadata with ESM-2 embedding information.\n\nStores embedding metadata (model, dim, sequence length) in the targets\ntable metadata column for each matching target symbol.","operationId":"ingest_embeddings_api_v2_ingest_embeddings_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbeddingBatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ingest/offtargets":{"post":{"tags":["gpu"],"summary":"Ingest Offtargets","description":"Import Cas-OFFinder off-target results into crispr_offtargets table.","operationId":"ingest_offtargets_api_v2_ingest_offtargets_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OffTargetBatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/news":{"get":{"tags":["news"],"summary":"List Posts","description":"List published news posts, newest first, with pagination.","operationId":"list_posts_api_v2_news_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Per Page"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"featured","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Featured"}},{"name":"lang","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["news"],"summary":"Create Post","description":"Create a new news post. Requires x-admin-key header.","operationId":"create_post_api_v2_news_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePostBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/news/feed/rss":{"get":{"tags":["news"],"summary":"Rss Feed","description":"Generate RSS 2.0 XML feed of published news posts.","operationId":"rss_feed_api_v2_news_feed_rss_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/news/{slug}":{"get":{"tags":["news"],"summary":"Get Post","description":"Get a single post by slug with approved comments.","operationId":"get_post_api_v2_news__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["news"],"summary":"Update Post","description":"Update a news post by slug. Requires x-admin-key header.","operationId":"update_post_api_v2_news__slug__put","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePostBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/news/{slug}/comments":{"post":{"tags":["news"],"summary":"Submit Comment","description":"Submit a comment on a news post. Public endpoint with spam detection.","operationId":"submit_comment_api_v2_news__slug__comments_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/news/admin/comments":{"get":{"tags":["news"],"summary":"List Pending Comments","description":"List comments for admin moderation. Requires x-admin-key header.","operationId":"list_pending_comments_api_v2_news_admin_comments_get","parameters":[{"name":"approved","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Approved"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/news/admin/comments/{comment_id}/approve":{"post":{"tags":["news"],"summary":"Approve Comment","description":"Approve a pending comment. Requires x-admin-key header.","operationId":"approve_comment_api_v2_news_admin_comments__comment_id__approve_post","parameters":[{"name":"comment_id","in":"path","required":true,"schema":{"type":"string","title":"Comment Id"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/news/admin/comments/{comment_id}/reject":{"post":{"tags":["news"],"summary":"Reject Comment","description":"Delete a spam/rejected comment. Requires x-admin-key header.","operationId":"reject_comment_api_v2_news_admin_comments__comment_id__reject_post","parameters":[{"name":"comment_id","in":"path","required":true,"schema":{"type":"string","title":"Comment Id"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/health":{"get":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Nim Health","description":"Check NVIDIA NIM API health and API key status.","operationId":"nim_health_api_v2_nims_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/nims/dock":{"post":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Dock Compound","description":"Dock a compound to a protein target using DiffDock v2.2 NIM.\nDefault target: SMN2 (AlphaFold structure auto-downloaded).","operationId":"dock_compound_api_v2_nims_dock_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DockRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/redock-4ap":{"post":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Redock 4Ap","description":"Re-dock 4-Aminopyridine against SMN2 using DiffDock v2.2.\nValidates our original finding (+0.100) with the improved model.","operationId":"redock_4ap_api_v2_nims_redock_4ap_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/generate-molecules":{"post":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Generate Molecules","description":"Generate novel molecules based on a scaffold using GenMol v1.0 NIM.\nDefault: 4-AP scaffold decoration for SMN2-targeting analogs.","operationId":"generate_molecules_api_v2_nims_generate_molecules_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenMolRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/predict-structure":{"post":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Predict Structure","description":"Predict biomolecular complex structure using OpenFold3 NIM.\nSupports protein, RNA, and ligand inputs.","operationId":"predict_structure_api_v2_nims_predict_structure_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StructureRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/smn2-rna-structure":{"post":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Predict Smn2 Rna","description":"Predict SMN2 pre-mRNA 3D structure around exon 7 using OpenFold3.\nNovel analysis — no prior RNA structure prediction for this region.","operationId":"predict_smn2_rna_api_v2_nims_smn2_rna_structure_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/rna-structure":{"post":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Predict Rna Structure","description":"Predict RNA 3D structure using RNAPro.\n\nNOTE: RNAPro has NO cloud API on build.nvidia.com (returns 404).\nThis endpoint only works when RNAPRO_SELF_URL is configured\n(self-hosted on Vast.ai or similar GPU instance).","operationId":"predict_rna_structure_api_v2_nims_rna_structure_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RNAStructureRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/alphafold2":{"post":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Predict Structure Af2","description":"Predict protein structure using AlphaFold2 NIM.\nUses MSA for high-accuracy structure prediction.\nSlower than ESMfold but more accurate for novel proteins.","operationId":"predict_structure_af2_api_v2_nims_alphafold2_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AF2Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/alphafold2-multimer":{"post":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Predict Complex Af2","description":"Predict protein complex structure using AlphaFold2-Multimer NIM.\nSupports 1-6 protein chains.","operationId":"predict_complex_af2_api_v2_nims_alphafold2_multimer_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AF2MultimerRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/esmfold":{"post":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Predict Structure Esmfold","description":"Fast protein structure prediction using ESMfold NIM.\nNo MSA required — uses protein language model directly.\nMuch faster than AlphaFold2, good for screening many proteins.","operationId":"predict_structure_esmfold_api_v2_nims_esmfold_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ESMfoldRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/design-binder":{"post":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Design Protein Binder","description":"Design a protein binder for a target using RFdiffusion NIM.\nCreates novel protein backbones that bind to specified hotspot residues.\nUseful for designing therapeutic proteins against ROCK2, MAPK14, LIMK1.","operationId":"design_protein_binder_api_v2_nims_design_binder_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sma_platform__api__routes__nvidia_nims__BinderDesignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/design-sequence":{"post":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Design Protein Sequence","description":"Design amino acid sequences for a protein backbone using ProteinMPNN NIM.\nUse after RFdiffusion to get sequences for designed backbones.","operationId":"design_protein_sequence_api_v2_nims_design_sequence_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SequenceDesignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/msa-search":{"post":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Run Msa Search","description":"Run multiple sequence alignment using ColabFold MSA NIM.\nSearches Uniref30, PDB70, colabfold_envdb.\nRequired as input for AlphaFold2 pipeline.","operationId":"run_msa_search_api_v2_nims_msa_search_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MSARequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/esm2-embed":{"post":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Esm2 Embed Sequences","description":"Get protein embeddings using ESM-2 650M NIM.\n\nSTATUS: DEGRADED — NVIDIA returns 500 errors intermittently.\nIncludes automatic retry logic (3 attempts with exponential backoff).","operationId":"esm2_embed_sequences_api_v2_nims_esm2_embed_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ESM2Request"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/design-rock2-binder":{"post":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Design Rock2 Binder","description":"End-to-end binder design pipeline for ROCK2:\n1. Download ROCK2 AlphaFold structure\n2. RFdiffusion: design binder backbones\n3. ProteinMPNN: design sequences for backbones","operationId":"design_rock2_binder_api_v2_nims_design_rock2_binder_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/alphafold/complexes":{"get":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Check Alphafold Complexes","description":"Check AlphaFold DB for SMA protein complex predictions (GTC 2026 expansion).","operationId":"check_alphafold_complexes_api_v2_nims_alphafold_complexes_get","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/nim-summary":{"get":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Get Nim Summary","description":"Return overview stats for GPU computational results page.","operationId":"get_nim_summary_api_v2_nims_nim_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/nims/binders":{"get":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Get Nims Binders","description":"Return all designed binders for GPU results page.","operationId":"get_nims_binders_api_v2_nims_binders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/nims/molecules":{"get":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Get Nims Molecules","description":"Return designed molecules for GPU results page.","operationId":"get_nims_molecules_api_v2_nims_molecules_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/nims/extended-docking":{"get":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Get Nims Extended Docking","description":"Return extended DiffDock docking results.","operationId":"get_nims_extended_docking_api_v2_nims_extended_docking_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":300,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/nims/protein-structures":{"get":{"tags":["nvidia-nims","nvidia-nims"],"summary":"Get Nims Protein Structures","description":"Return protein structures for GPU results page.","operationId":"get_nims_protein_structures_api_v2_nims_protein_structures_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/synergy/predictions":{"get":{"tags":["synergy"],"summary":"Synergy Predictions","description":"Top synergistic drug-target pairs ranked by composite evidence score.\n\nComposite = 0.3*docking + 0.3*literature + 0.2*pathway + 0.2*claim","operationId":"synergy_predictions_api_v2_synergy_predictions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Max results to return","default":20,"title":"Limit"},"description":"Max results to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/synergy/drug/{drug_name}":{"get":{"tags":["synergy"],"summary":"Synergy For Drug","description":"Synergy predictions for a specific drug across all targets.","operationId":"synergy_for_drug_api_v2_synergy_drug__drug_name__get","parameters":[{"name":"drug_name","in":"path","required":true,"schema":{"type":"string","title":"Drug Name"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/synergy/target/{target_symbol}":{"get":{"tags":["synergy"],"summary":"Synergy For Target","description":"Synergy predictions for a specific target across all drugs.","operationId":"synergy_for_target_api_v2_synergy_target__target_symbol__get","parameters":[{"name":"target_symbol","in":"path","required":true,"schema":{"type":"string","title":"Target Symbol"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/synthesis/cards":{"get":{"tags":["cross-paper-synthesis","cross-paper-synthesis"],"summary":"Get Cards","description":"Get cross-paper synthesis cards with optional filtering.","operationId":"get_cards_api_v2_synthesis_cards_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"synthesis_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Synthesis Type"}},{"name":"target","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/synthesis/stats":{"get":{"tags":["cross-paper-synthesis","cross-paper-synthesis"],"summary":"Synthesis Stats","description":"Get synthesis card statistics.","operationId":"synthesis_stats_api_v2_synthesis_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/synthesis/cooccurrences":{"get":{"tags":["cross-paper-synthesis","cross-paper-synthesis"],"summary":"Get Cooccurrences","description":"Get top target co-occurrence pairs (targets mentioned in same paper).","operationId":"get_cooccurrences_api_v2_synthesis_cooccurrences_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/synthesis/bridges":{"get":{"tags":["cross-paper-synthesis","cross-paper-synthesis"],"summary":"Get Bridges","description":"Get transitive bridges: A→B→C chains across different papers.","operationId":"get_bridges_api_v2_synthesis_bridges_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/synthesis/shared-mechanisms":{"get":{"tags":["cross-paper-synthesis","cross-paper-synthesis"],"summary":"Get Shared Mechanisms","description":"Get mechanisms shared across different targets.","operationId":"get_shared_mechanisms_api_v2_synthesis_shared_mechanisms_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/synthesis/temporal":{"get":{"tags":["cross-paper-synthesis","cross-paper-synthesis"],"summary":"Get Temporal Reinforcements","description":"Find when new evidence retroactively strengthens old findings.\n\nFor each target, splits claims into old/new by median publication date,\nthen identifies claim_types where new papers reinforce earlier discoveries.","operationId":"get_temporal_reinforcements_api_v2_synthesis_temporal_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/synthesis/contradictions":{"get":{"tags":["cross-paper-synthesis","cross-paper-synthesis"],"summary":"Get Contradictions","description":"Find claims about the same target that may contradict each other.\n\nGroups claims by target + claim_type, then detects opposing signals\n(positive vs negative effect keywords) from different sources.\nHigher contradiction_score = more balanced contradiction.","operationId":"get_contradictions_api_v2_synthesis_contradictions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/synthesis/surprise":{"get":{"tags":["cross-paper-synthesis","cross-paper-synthesis"],"summary":"Get Surprise Scores","description":"Rank target connections by how NON-OBVIOUS they are.\n\nLow paper overlap + high claim diversity + independent sources + recent\n= high surprise score. Pure math, no LLM calls.","operationId":"get_surprise_scores_api_v2_synthesis_surprise_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/synthesis/run":{"post":{"tags":["cross-paper-synthesis","cross-paper-synthesis"],"summary":"Run Synthesis","description":"Run the full cross-paper synthesis pipeline (admin).\nFinds co-occurrences, transitive bridges, shared mechanisms,\nand optionally uses Claude to generate synthesis cards.","operationId":"run_synthesis_api_v2_synthesis_run_post","parameters":[{"name":"max_cards","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Max Cards"}},{"name":"synthesize","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Synthesize"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/calibration/report":{"get":{"tags":["calibration"],"summary":"Calibration Report","description":"Full confidence calibration report.\n\nEvaluates synergy predictions, hypothesis confidence scores, and claim\ncalibration curves against the 3 approved SMA drugs (nusinersen, risdiplam,\nonasemnogene) and their validated targets (SMN1, SMN2).\n\nReturns an overall grade (A-D), per-system metrics, calibration curves,\nBrier score, and interpretation.","operationId":"calibration_report_api_v2_calibration_report_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/calibration/predictions":{"get":{"tags":["calibration"],"summary":"Calibration Predictions","description":"Calibrate synergy predictions against approved drug-target pairs.\n\nChecks if the 3 approved SMA drugs rank in the top positions when\npredictions are sorted by synergy score. Returns precision@k,\nmean reciprocal rank, and per-drug rank information.","operationId":"calibration_predictions_api_v2_calibration_predictions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/calibration/hypotheses":{"get":{"tags":["calibration"],"summary":"Calibration Hypotheses","description":"Calibrate hypothesis confidence for SMN1/SMN2 targets.\n\nChecks whether hypotheses about the validated SMA targets (SMN1, SMN2)\nhave the highest confidence scores. Returns rank distribution and\nconfidence gap analysis.","operationId":"calibration_hypotheses_api_v2_calibration_hypotheses_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/calibration/curves":{"get":{"tags":["calibration"],"summary":"Calibration Curves","description":"Generate calibration curve data -- predicted confidence vs actual replication rate.\n\nBins all claims by confidence (0-0.2, 0.2-0.4, 0.4-0.6, 0.6-0.8, 0.8-1.0)\nand for each bin computes:\n- mean_confidence: average confidence score in the bin\n- replication_rate: fraction of claims with 2+ independent sources\n- claim_type_consistency_rate: fraction where independent sources assert the same claim type\n- predicted_vs_actual_gap: difference between confidence and replication rate\n\nAlso returns:\n- brier_score: overall calibration metric (0=perfect, lower is better)\n- plot_data: arrays suitable for charting predicted vs actual calibration curves\n- recalibration_suggestions: actionable advice for bins where confidence diverges from evidence","operationId":"calibration_curves_api_v2_calibration_curves_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/calibration/bayesian/report":{"get":{"tags":["calibration"],"summary":"Bayesian Report","description":"Full Bayesian evidence calibration report.\n\nBack-tests convergence scores against known drug outcomes (approved,\nfailed, ongoing) from the drug_outcomes table. Returns calibration\npercentage, grade, separation score, rank correlation, Brier score,\nand calibration curve data.\n\nThis is the primary endpoint for measuring how well the platform's\n5-dimension convergence scoring predicts real-world drug success.","operationId":"bayesian_report_api_v2_calibration_bayesian_report_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/calibration/bayesian/outcomes":{"get":{"tags":["calibration"],"summary":"Bayesian Outcomes","description":"Compare convergence scores of approved vs failed drugs.\n\nGroups drug outcomes by type (success, failure, ongoing) and computes\nmean/median convergence scores per group. Measures separation between\napproved and failed drugs, rank correlation, and prediction accuracy.","operationId":"bayesian_outcomes_api_v2_calibration_bayesian_outcomes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/calibration/bayesian/curve":{"get":{"tags":["calibration"],"summary":"Bayesian Curve","description":"Calibration curve: convergence score bins vs actual drug success rates.\n\nBins drug outcomes by their target's convergence score (0-0.2, 0.2-0.4, etc.)\nand computes the actual success rate in each bin. A well-calibrated system\nshows increasing success rates in higher convergence bins. Also returns\nBrier score and plot-ready data arrays.","operationId":"bayesian_curve_api_v2_calibration_bayesian_curve_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/calibration/bayesian/validate/{target_symbol}":{"get":{"tags":["calibration"],"summary":"Bayesian Validate Target","description":"Validate a specific target's convergence score against its drug outcomes.\n\nFor the given target, compares the convergence score with the actual\nsuccess/failure rate of drugs targeting it. Returns calibration gap,\nverdict (well_calibrated / overconfident / underconfident), and\nper-compound outcome details.","operationId":"bayesian_validate_target_api_v2_calibration_bayesian_validate__target_symbol__get","parameters":[{"name":"target_symbol","in":"path","required":true,"schema":{"type":"string","title":"Target Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/calibration/uncertainty":{"get":{"tags":["calibration"],"summary":"Uncertainty Report","description":"Full uncertainty quantification report for all targets.\n\nComputes Wilson score confidence intervals on the support ratio\n(fraction of high-confidence claims) for every target with >= 3 claims.\nCombines CI tightness, source diversity, and temporal stability into\na composite certainty score with A-D grading.\n\nReturns per-target uncertainty bands, platform summary, and the\nhighest/lowest certainty predictions.","operationId":"uncertainty_report_api_v2_calibration_uncertainty_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/calibration/uncertainty/{target_symbol}":{"get":{"tags":["calibration"],"summary":"Uncertainty Target","description":"Uncertainty quantification for a single target.\n\nReturns:\n- Support ratio with 95% Wilson CI (lower, upper)\n- Claim counts: support / oppose / neutral\n- Source diversity (unique labs)\n- Temporal stability (recency, growth)\n- Composite certainty score and A-D grade\n- Contributing factor breakdown","operationId":"uncertainty_target_api_v2_calibration_uncertainty__target_symbol__get","parameters":[{"name":"target_symbol","in":"path","required":true,"schema":{"type":"string","title":"Target Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/calibration/backtest":{"get":{"tags":["calibration"],"summary":"Backtest Lookback","description":"Run a prospective backtest with the given lookback period.\n\nSimulates running the convergence engine at (now - months) and compares\nwhat it would have predicted against outcomes discovered since then.\n\nExample: GET /calibration/backtest?months=6\nSimulates: \"If we had scored targets 6 months ago, would the top-ranked\ntargets have had positive outcomes since then?\"\n\nReturns: prediction accuracy, precision@5, precision@10, rank correlation,\nper-target matched predictions, and interpretation.","operationId":"backtest_lookback_api_v2_calibration_backtest_get","parameters":[{"name":"months","in":"query","required":false,"schema":{"type":"integer","maximum":60,"minimum":1,"description":"Lookback period in months. The cutoff date is NOW minus this many months.","default":6,"title":"Months"},"description":"Lookback period in months. The cutoff date is NOW minus this many months."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/calibration/backtest/temporal":{"get":{"tags":["calibration"],"summary":"Backtest Temporal","description":"Full temporal backtest curve.\n\nAutomatically determines the data range and runs backtests at multiple\ntimepoints (every step_months months). Shows how predictive accuracy\nevolves over time as more evidence accumulates.\n\nReturns: per-timepoint accuracy, temporal accuracy curve, rank stability\nfor each target, and an overall grade (A-D).","operationId":"backtest_temporal_api_v2_calibration_backtest_temporal_get","parameters":[{"name":"step_months","in":"query","required":false,"schema":{"type":"integer","maximum":24,"minimum":1,"description":"Months between each backtest timepoint.","default":3,"title":"Step Months"},"description":"Months between each backtest timepoint."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/calibration/backtest/report":{"get":{"tags":["calibration"],"summary":"Backtest Full Report","description":"Full prospective backtest report (alias for /backtest/temporal).\n\nComprehensive assessment including: temporal accuracy curve, midpoint\ncomparison, recent predictions, rank stability, and overall grade.\nThis is the primary endpoint for audit item A4.","operationId":"backtest_full_report_api_v2_calibration_backtest_report_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/calibration/backtest/at/{cutoff_date}":{"get":{"tags":["calibration"],"summary":"Backtest At Date","description":"Run convergence scoring at a specific historical cutoff date.\n\nSimulates what the convergence engine would have produced if run\nat the given date, using only claims created before that date.\n\nPath parameter: cutoff_date in YYYY-MM-DD format.\n\nReturns: ranked targets with convergence scores, claim counts,\nand dimension breakdowns.","operationId":"backtest_at_date_api_v2_calibration_backtest_at__cutoff_date__get","parameters":[{"name":"cutoff_date","in":"path","required":true,"schema":{"type":"string","title":"Cutoff Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/enrichment/stats":{"get":{"tags":["enrichment","enrichment"],"summary":"Enrichment Stats","description":"Get current claim-target linking status.\n\nReturns total claims, linked/unlinked counts, link rate,\nand breakdown by subject_type.","operationId":"enrichment_stats_api_v2_enrichment_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/enrichment/run":{"post":{"tags":["enrichment","enrichment"],"summary":"Run Enrichment","description":"Run claim enrichment — scan unlinked claims and link to targets/drugs.\n\nScans predicate text for gene/protein/drug mentions using\ncase-insensitive word-boundary pattern matching.\nRequires admin key.","operationId":"run_enrichment_api_v2_enrichment_run_post","parameters":[{"name":"batch_size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":100,"default":1000,"title":"Batch Size"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/enrichment/dry-run":{"post":{"tags":["enrichment","enrichment"],"summary":"Dry Run Enrichment","description":"Preview enrichment without modifying data.\n\nReturns the same stats as /run plus sample_matches showing\nwhat would be linked.\nRequires admin key.","operationId":"dry_run_enrichment_api_v2_enrichment_dry_run_post","parameters":[{"name":"batch_size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":100,"default":1000,"title":"Batch Size"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/review/targets":{"get":{"tags":["literature-review","literature-review"],"summary":"List Reviewable Targets","description":"List targets with enough claims (>10) for meaningful literature review.\n\nReturns targets sorted by claim count descending, with metadata\nabout evidence volume and source diversity.","operationId":"list_reviewable_targets_api_v2_review_targets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/review/citation-summary/{target_symbol}":{"get":{"tags":["literature-review","literature-review"],"summary":"Citation Summary","description":"Generate a citation-grade evidence summary for a target.\n\nReturns publication-ready text with PMID citations (Vancouver style)\nsuitable for paper introductions, review articles, or grant backgrounds.\n\nThe response includes:\n- Narrative text with inline [1], [2] citations\n- Numbered reference list (Vancouver format)\n- Claim evidence breakdown per type with citation refs\n- Convergence score context\n- Suggested citation for the platform","operationId":"citation_summary_api_v2_review_citation_summary__target_symbol__get","parameters":[{"name":"target_symbol","in":"path","required":true,"schema":{"type":"string","title":"Target Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/review/{target_symbol}":{"get":{"tags":["literature-review","literature-review"],"summary":"Get Target Review","description":"Generate a structured literature review for a target.\n\nUses Claude Sonnet if ANTHROPIC_API_KEY is set (unless force_data_only=true).\nFalls back to data-only aggregation otherwise.\n\nThe review includes:\n- Overview (2-3 sentences)\n- Key findings grouped by evidence type\n- Therapeutic implications\n- Open questions\n- Key references (top 10 papers)","operationId":"get_target_review_api_v2_review__target_symbol__get","parameters":[{"name":"target_symbol","in":"path","required":true,"schema":{"type":"string","title":"Target Symbol"}},{"name":"force_data_only","in":"query","required":false,"schema":{"type":"boolean","description":"Force data-only mode even if ANTHROPIC_API_KEY is set","default":false,"title":"Force Data Only"},"description":"Force data-only mode even if ANTHROPIC_API_KEY is set"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/review/{target_symbol}/data":{"get":{"tags":["literature-review","literature-review"],"summary":"Get Target Data Review","description":"Generate a data-only literature review (no LLM).\n\nPure data aggregation: claim counts, top papers, evidence summary\ngrouped by type. Always available regardless of API key.","operationId":"get_target_data_review_api_v2_review__target_symbol__data_get","parameters":[{"name":"target_symbol","in":"path","required":true,"schema":{"type":"string","title":"Target Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/source-quality/scores":{"get":{"tags":["source-quality"],"summary":"List Source Quality Scores","description":"Score and rank all sources by composite quality score.\n\nEach source is scored across 5 dimensions (0-1 each):\n- journal_quality: top SMA journals = 1.0, known = 0.5, unknown = 0.3\n- study_type: RCT = 1.0, observational = 0.7, review = 0.6, case = 0.4\n- recency: linear decay from 2026 (1.0) to 2010 (0.3)\n- evidence_density: claims per paper, capped at 20 = 1.0\n- sma_specificity: SMA keyword density in title + abstract\n\nComposite = 0.25*journal + 0.20*study_type + 0.20*recency + 0.15*density + 0.20*specificity","operationId":"list_source_quality_scores_api_v2_source_quality_scores_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/source-quality/distribution":{"get":{"tags":["source-quality"],"summary":"Get Quality Distribution","description":"Aggregate quality distribution across all sources.\n\nReturns per-dimension averages, tier breakdown (A/B/C), histogram,\nand top-5 highest-scoring sources.","operationId":"get_quality_distribution_api_v2_source_quality_distribution_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/source-quality/weights":{"get":{"tags":["source-quality"],"summary":"Source Quality Weights","description":"Compute quality weights for all sources based on journal tier, recency, and type.\n\nUses a simplified 3-factor model (vs. the full 5-dimension scoring above):\n- Journal tier: Nature/Science/Cell = 1.0, high-impact specialty = 0.85,\n  standard SMA journals = 0.7, other = 0.5\n- Recency: <2yr = 1.0, 2-5yr = 0.8, 5-10yr = 0.6, >10yr = 0.4\n- Article type: primary = 1.0, review = 0.8, correspondence = 0.5\n\nComposite = 0.40*journal + 0.35*recency + 0.25*type\n\nReturns aggregate statistics: total sources, high-quality count,\ntier and type distributions, average weight.","operationId":"source_quality_weights_api_v2_source_quality_weights_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/source-quality/weights/{source_id}":{"get":{"tags":["source-quality"],"summary":"Source Quality Weight Single","description":"Compute quality weight for a single source by ID.","operationId":"source_quality_weight_single_api_v2_source_quality_weights__source_id__get","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","description":"UUID of the source","title":"Source Id"},"description":"UUID of the source"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/quality/enrich":{"post":{"tags":["paper-quality"],"summary":"Enrich Papers","description":"Batch-enrich source papers with OpenAlex + Crossref quality data.\n\nFinds sources with a DOI but no quality_score yet, fetches external\nmetadata (citations, h-index, retraction status), computes a 0-100\nquality score, and updates the sources table.","operationId":"enrich_papers_api_v2_quality_enrich_post","parameters":[{"name":"batch_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Max papers to enrich","default":50,"title":"Batch Size"},"description":"Max papers to enrich"},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/quality/paper/{identifier}":{"get":{"tags":["paper-quality"],"summary":"Get Paper Quality","description":"Return full quality report for a single paper.\n\nAccepts either a numeric source ID or a DOI string.","operationId":"get_paper_quality_api_v2_quality_paper__identifier__get","parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","description":"Source ID (integer) or DOI string","title":"Identifier"},"description":"Source ID (integer) or DOI string"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/quality/stats":{"get":{"tags":["paper-quality"],"summary":"Get Quality Stats","description":"Return enrichment statistics — how many sources are enriched, score distribution.","operationId":"get_quality_stats_api_v2_quality_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/quality/scan-red-flags":{"post":{"tags":["red-flags"],"summary":"Scan Red Flags","description":"Batch-scan source papers for red flags.\n\nFinds sources with abstracts that haven't been scanned yet,\nruns rule-based + LLM detection, stores results in metadata.red_flags.","operationId":"scan_red_flags_api_v2_quality_scan_red_flags_post","parameters":[{"name":"batch_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Batch Size"}},{"name":"use_llm","in":"query","required":false,"schema":{"type":"boolean","description":"Use LLM for qualitative analysis","default":true,"title":"Use Llm"},"description":"Use LLM for qualitative analysis"},{"name":"llm_provider","in":"query","required":false,"schema":{"type":"string","description":"LLM provider: groq (fast) or gemini","default":"groq","title":"Llm Provider"},"description":"LLM provider: groq (fast) or gemini"},{"name":"rescan","in":"query","required":false,"schema":{"type":"boolean","description":"Re-scan papers that already have red_flags","default":false,"title":"Rescan"},"description":"Re-scan papers that already have red_flags"},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/quality/red-flags/{source_id}":{"get":{"tags":["red-flags"],"summary":"Get Red Flags","description":"Get red flags for a specific paper.","operationId":"get_red_flags_api_v2_quality_red_flags__source_id__get","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","title":"Source Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/quality/red-flags-stats":{"get":{"tags":["red-flags"],"summary":"Red Flags Stats","description":"Aggregate red-flag statistics across all scanned papers.","operationId":"red_flags_stats_api_v2_quality_red_flags_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/red-flags-stats":{"get":{"tags":["red-flags"],"summary":"Red Flags Stats Alias","operationId":"red_flags_stats_alias_api_v2_red_flags_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/red-flags/stats":{"get":{"tags":["red-flags"],"summary":"Red Flags Stats Alias2","operationId":"red_flags_stats_alias2_api_v2_red_flags_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/uncertainty/target/{symbol}":{"get":{"tags":["uncertainty"],"summary":"Get Target Uncertainty","description":"Bootstrap confidence intervals for a single target's convergence score.\n\nResamples claims with replacement N times and computes a simplified\nconvergence score for each resample. Returns mean, std, 95% CI,\nand a 10-bin histogram of the bootstrap distribution.","operationId":"get_target_uncertainty_api_v2_uncertainty_target__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"n_bootstrap","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":50,"description":"Number of bootstrap resamples (higher = more precise, slower).","default":500,"title":"N Bootstrap"},"description":"Number of bootstrap resamples (higher = more precise, slower)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/uncertainty/all":{"get":{"tags":["uncertainty"],"summary":"Get All Uncertainties","description":"Bootstrap uncertainty for all targets with >10 claims.\n\nReturns a list sorted by CI width (descending) — targets with the\nwidest confidence intervals (most uncertain) appear first.","operationId":"get_all_uncertainties_api_v2_uncertainty_all_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/uncertainty/summary":{"get":{"tags":["uncertainty"],"summary":"Get Uncertainty Summary","description":"Overall platform uncertainty report.\n\nShows what fraction of targets have narrow CIs (<0.1) vs wide (>0.3),\nplus the top-5 most and least uncertain targets.","operationId":"get_uncertainty_summary_api_v2_uncertainty_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/uncertainty/intervals":{"get":{"tags":["uncertainty"],"summary":"Get Uncertainty Intervals","description":"Compute 95% confidence intervals for all target convergence scores.\n\nUses the full 5-dimension convergence engine formula (volume,\nlab_independence, method_diversity, temporal_trend, replication)\nwith bootstrap resampling. Every prediction gets error bars.","operationId":"get_uncertainty_intervals_api_v2_uncertainty_intervals_get","parameters":[{"name":"n_bootstrap","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":20,"description":"Number of bootstrap resamples per target.","default":50,"title":"N Bootstrap"},"description":"Number of bootstrap resamples per target."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/uncertainty/intervals/{symbol}":{"get":{"tags":["uncertainty"],"summary":"Get Target Uncertainty Interval","description":"Compute uncertainty interval for a specific target.\n\nReturns the convergence score with 95% CI, e.g.\n\"63% (95% CI: 58-68%)\" instead of just \"63%\".","operationId":"get_target_uncertainty_interval_api_v2_uncertainty_intervals__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"n_bootstrap","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":20,"description":"Number of bootstrap resamples (higher = more precise, slower).","default":100,"title":"N Bootstrap"},"description":"Number of bootstrap resamples (higher = more precise, slower)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/benchmark/extraction":{"get":{"tags":["benchmark"],"summary":"Benchmark Extraction Stats","description":"Get extraction quality metrics from existing gold-standard evaluations.\n\nReturns precision, recall estimate, F1 score, and per-claim-type breakdown.\nRequires evaluations to have been submitted via POST /benchmark/evaluate.","operationId":"benchmark_extraction_stats_api_v2_benchmark_extraction_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/benchmark/gold-standard":{"get":{"tags":["benchmark"],"summary":"Benchmark Gold Standard","description":"Sample claims with their source abstracts for manual gold-standard review.\n\nReturns claims paired with the abstract they were extracted from,\nexcluding claims that have already been evaluated.","operationId":"benchmark_gold_standard_api_v2_benchmark_gold_standard_get","parameters":[{"name":"sample_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Number of claims to sample for review","default":50,"title":"Sample Size"},"description":"Number of claims to sample for review"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/benchmark/evaluate":{"post":{"tags":["benchmark"],"summary":"Benchmark Submit Evaluation","description":"Submit a gold-standard evaluation for a single claim.\n\nRequires admin authentication via X-Admin-Key header.\n\nLabels:\n- **correct**: Claim accurately represents what the abstract states\n- **incorrect**: Claim is wrong, hallucinated, or unsupported by the abstract\n- **partial**: Claim captures the gist but misses key detail or nuance","operationId":"benchmark_submit_evaluation_api_v2_benchmark_evaluate_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/benchmark/reproducibility":{"get":{"tags":["benchmark"],"summary":"Benchmark Reproducibility","description":"Test extraction reproducibility by re-extracting claims from source abstracts.\n\nRe-runs the claim extraction pipeline on a random sample of sources\nthat already have claims, then measures how many of the new claims\nmatch existing ones (token-level Jaccard similarity > 0.6).\n\nNote: This endpoint calls the Claude API for each source in the sample,\nso it may take a few minutes to complete for larger sample sizes.","operationId":"benchmark_reproducibility_api_v2_benchmark_reproducibility_get","parameters":[{"name":"sample_size","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Number of sources to re-extract for reproducibility testing","default":20,"title":"Sample Size"},"description":"Number of sources to re-extract for reproducibility testing"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/benchmark/claim-quality":{"get":{"tags":["benchmark"],"summary":"Benchmark Claim Quality","description":"Auto-evaluate claim extraction quality using multiple signals.\n\nScores claims on 6 dimensions without manual labeling:\n- **specificity**: predicate length vs ideal range\n- **entities**: presence of gene names, measurements, p-values\n- **type_consistency**: claim_type keywords match predicate text\n- **evidence_strength**: excerpt, method, p-value, effect size present\n- **source_attribution**: PMID, journal, entity types present\n- **replication**: claim backed by multiple independent sources\n\nReturns distribution, per-dimension averages, common issues, and\nworst/best scoring samples for review.","operationId":"benchmark_claim_quality_api_v2_benchmark_claim_quality_get","parameters":[{"name":"sample_size","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":10,"description":"Number of claims to sample for automated quality evaluation","default":100,"title":"Sample Size"},"description":"Number of claims to sample for automated quality evaluation"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/benchmark/claim-quality/by-type":{"get":{"tags":["benchmark"],"summary":"Benchmark Claim Quality By Type","description":"Break down automated claim quality scores by claim_type.\n\nReturns per-type average quality, count, min/max scores, and\ntop issues for each claim type in the database.","operationId":"benchmark_claim_quality_by_type_api_v2_benchmark_claim_quality_by_type_get","parameters":[{"name":"sample_size","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":10,"description":"Number of claims to sample for per-type quality breakdown","default":500,"title":"Sample Size"},"description":"Number of claims to sample for per-type quality breakdown"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/biomarker/atlas":{"get":{"tags":["biomarker","biomarker"],"summary":"Get Atlas","description":"Full biomarker atlas: curated reference catalog combined with\ndynamically aggregated claims from the evidence database.\n\nReturns:\n- curated_catalog: expert-curated biomarkers with PMID references\n- catalog_summary: counts by category, type, validation status\n- claims: DB-sourced claims categorized into layers","operationId":"get_atlas_api_v2_biomarker_atlas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/biomarker/atlas/{category}":{"get":{"tags":["biomarker","biomarker"],"summary":"Get Atlas By Category","description":"Filter the curated biomarker catalog by category.\n\nValid categories: molecular, functional, imaging, electrophysiology.\nOptionally filter to only validated biomarkers.\n\nAlso returns matching DB claims from that layer (if it exists).","operationId":"get_atlas_by_category_api_v2_biomarker_atlas__category__get","parameters":[{"name":"category","in":"path","required":true,"schema":{"type":"string","description":"Biomarker category: molecular, functional, imaging, electrophysiology, fluid","title":"Category"},"description":"Biomarker category: molecular, functional, imaging, electrophysiology, fluid"},{"name":"validated_only","in":"query","required":false,"schema":{"type":"boolean","description":"If true, return only validated biomarkers","default":false,"title":"Validated Only"},"description":"If true, return only validated biomarkers"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/biomarker/treatment-response":{"get":{"tags":["biomarker","biomarker"],"summary":"Get Treatment Response","description":"Biomarkers relevant to monitoring treatment response.\n\nReturns both:\n1. Curated pharmacodynamic/efficacy biomarkers from the reference catalog\n2. DB claims mentioning treatment-response keywords (nusinersen,\n   risdiplam, post-treatment, change from baseline, etc.)","operationId":"get_treatment_response_api_v2_biomarker_treatment_response_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/biomarker/target/{symbol}":{"get":{"tags":["biomarker","biomarker"],"summary":"Get Biomarkers For Target","description":"Biomarker claims linked to a specific target.\n\nReturns claims grouped by layer (molecular, imaging, functional,\nelectrophysiology, fluid), with a separate treatment-response subset.","operationId":"get_biomarkers_for_target_api_v2_biomarker_target__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","description":"Target gene/protein symbol (e.g. SMN1, SMN2, NfL)","title":"Symbol"},"description":"Target gene/protein symbol (e.g. SMN1, SMN2, NfL)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/biomarker/layers":{"get":{"tags":["biomarker","biomarker"],"summary":"Get Layer Definitions","description":"Return the biomarker layer definitions (markers and keywords per layer).\n\nUseful for frontend to display layer metadata without querying claims.","operationId":"get_layer_definitions_api_v2_biomarker_layers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/biomarker/catalog":{"get":{"tags":["biomarker","biomarker"],"summary":"Get Catalog","description":"Query the curated SMA biomarker reference catalog.\n\nSupports filtering by category, type, and validation status.\nNo database required — returns instantly from the in-memory catalog.","operationId":"get_catalog_api_v2_biomarker_catalog_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by category: molecular, functional, imaging, electrophysiology","title":"Category"},"description":"Filter by category: molecular, functional, imaging, electrophysiology"},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by type: prognostic, pharmacodynamic, efficacy, monitoring, exploratory","title":"Type"},"description":"Filter by type: prognostic, pharmacodynamic, efficacy, monitoring, exploratory"},{"name":"validated_only","in":"query","required":false,"schema":{"type":"boolean","description":"If true, return only validated biomarkers","default":false,"title":"Validated Only"},"description":"If true, return only validated biomarkers"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/biomarker/catalog/summary":{"get":{"tags":["biomarker","biomarker"],"summary":"Get Catalog Stats","description":"Summary statistics for the curated biomarker catalog.\n\nReturns counts by category, type, and validation status.","operationId":"get_catalog_stats_api_v2_biomarker_catalog_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/bayesian/target/{symbol}":{"get":{"tags":["bayesian"],"summary":"Get Bayesian Score","description":"Bayesian posterior for a single target's therapeutic validity.\n\nUses Beta(1,1) prior updated with claim evidence. Returns posterior\nmean, mode, 95% credible interval, Bayes factor, and evidence sufficiency.","operationId":"get_bayesian_score_api_v2_bayesian_target__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bayesian/all":{"get":{"tags":["bayesian"],"summary":"Get Bayesian All","description":"Bayesian posteriors for all targets, sorted by posterior mean.\n\nOptionally filter by minimum claim count or evidence sufficiency.","operationId":"get_bayesian_all_api_v2_bayesian_all_get","parameters":[{"name":"min_claims","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Minimum claim count to include","default":0,"title":"Min Claims"},"description":"Minimum claim count to include"},{"name":"sufficient_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only return targets with sufficient evidence","default":false,"title":"Sufficient Only"},"description":"Only return targets with sufficient evidence"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/bayesian/compare":{"get":{"tags":["bayesian"],"summary":"Get Bayesian Compare","description":"Compare Bayesian evidence between two targets.\n\nReturns P(A > B) via Monte Carlo sampling, posterior summaries,\nand a human-readable verdict.","operationId":"get_bayesian_compare_api_v2_bayesian_compare_get","parameters":[{"name":"a","in":"query","required":true,"schema":{"type":"string","description":"Symbol of target A (e.g. SMN2)","title":"A"},"description":"Symbol of target A (e.g. SMN2)"},{"name":"b","in":"query","required":true,"schema":{"type":"string","description":"Symbol of target B (e.g. PLS3)","title":"B"},"description":"Symbol of target B (e.g. PLS3)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/prioritize/targets":{"get":{"tags":["prioritization"],"summary":"Rank All Targets","description":"Rank all targets across 5 dimensions: evidence convergence (30%),\nbiological plausibility (20%), interventionability (20%),\nnetwork centrality (15%), and novelty (15%).\n\nReturns targets sorted by composite score with per-dimension breakdown.","operationId":"rank_all_targets_api_v2_prioritize_targets_get","parameters":[{"name":"min_score","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"description":"Filter: only return targets with composite_score >= this value.","title":"Min Score"},"description":"Filter: only return targets with composite_score >= this value."},{"name":"tier","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by tier: tier_1_high, tier_2_medium, tier_3_low, tier_4_insufficient.","title":"Tier"},"description":"Filter by tier: tier_1_high, tier_2_medium, tier_3_low, tier_4_insufficient."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/prioritize/target/{symbol}":{"get":{"tags":["prioritization"],"summary":"Get Target Prioritization","description":"Detailed multi-criteria prioritization for a single target.\n\nReturns composite score, per-dimension scores with detailed breakdowns,\nrank among all targets, and priority tier.","operationId":"get_target_prioritization_api_v2_prioritize_target__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/prioritize/compare":{"get":{"tags":["prioritization"],"summary":"Compare Target Priorities","description":"Side-by-side comparison of multiple targets across all 5 dimensions.\n\nReturns each target's scorecard, dimension leaders, and score gaps.","operationId":"compare_target_priorities_api_v2_prioritize_compare_get","parameters":[{"name":"targets","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated target symbols, e.g. SMN2,PLS3,NCALD","title":"Targets"},"description":"Comma-separated target symbols, e.g. SMN2,PLS3,NCALD"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/prioritization/scores":{"get":{"tags":["prioritization"],"summary":"Rank All Targets Alias","operationId":"rank_all_targets_alias_api_v2_prioritization_scores_get","parameters":[{"name":"min_score","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Min Score"}},{"name":"tier","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/prioritize/v2/targets":{"get":{"tags":["prioritization-v2"],"summary":"Rank All Targets V2","description":"Rank all targets across 6 dimensions: evidence convergence (25%),\ndruggability (20%), structural uniqueness (15%), clinical validation (15%),\nconservation (10%), and novelty (15%).\n\nIntegrates convergence engine scores, DiffDock screening, ESM-2 structural\nanalysis, drug outcomes, and cross-species conservation data.\n\nReturns targets sorted by composite score with per-dimension breakdown,\nstrengths, weaknesses, and tier classification.","operationId":"rank_all_targets_v2_api_v2_prioritize_v2_targets_get","parameters":[{"name":"min_score","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"description":"Filter: only return targets with composite_score >= this value.","title":"Min Score"},"description":"Filter: only return targets with composite_score >= this value."},{"name":"tier","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by tier: tier_1_actionable, tier_2_promising, tier_3_exploratory, tier_4_insufficient.","title":"Tier"},"description":"Filter by tier: tier_1_actionable, tier_2_promising, tier_3_exploratory, tier_4_insufficient."},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"description":"Limit number of results.","title":"Limit"},"description":"Limit number of results."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/prioritize/v2/target/{symbol}":{"get":{"tags":["prioritization-v2"],"summary":"Get Target Profile V2","description":"Deep multi-criteria profile for a single target.\n\nReturns composite score, 6-dimension scores with detailed breakdowns,\nrank among all targets, strengths/weaknesses analysis, and radar chart data.","operationId":"get_target_profile_v2_api_v2_prioritize_v2_target__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/prioritize/v2/compare":{"get":{"tags":["prioritization-v2"],"summary":"Compare Target Priorities V2","description":"Side-by-side comparison of multiple targets across all 6 dimensions.\n\nReturns each target's scorecard, dimension leaders, radar chart data,\nand score gaps from the top-ranked target.","operationId":"compare_target_priorities_v2_api_v2_prioritize_v2_compare_get","parameters":[{"name":"targets","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated target symbols, e.g. SMN2,CORO1C,UBA1","title":"Targets"},"description":"Comma-separated target symbols, e.g. SMN2,CORO1C,UBA1"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/prioritization-v2/scores":{"get":{"tags":["prioritization-v2"],"summary":"Rank All Targets V2 Alias","operationId":"rank_all_targets_v2_alias_api_v2_prioritization_v2_scores_get","parameters":[{"name":"min_score","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Min Score"}},{"name":"tier","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/experiment-value/hypotheses":{"get":{"tags":["experiment-value"],"summary":"Eve Scored Hypotheses","description":"Get all hypotheses ranked by Expected Value of Experiment (EVE).\n\nEVE = P(success) * Impact / (Cost + Time)\n\nReturns hypotheses sorted by EVE score descending, with full breakdown\nof success probability, impact, recommended assay, cost, and timeline.","operationId":"eve_scored_hypotheses_api_v2_experiment_value_hypotheses_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Max hypotheses to score","default":50,"title":"Limit"},"description":"Max hypotheses to score"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/experiment-value/hypothesis/{hypothesis_id}":{"get":{"tags":["experiment-value"],"summary":"Eve Single Hypothesis","description":"Get EVE score for a single hypothesis with full breakdown.","operationId":"eve_single_hypothesis_api_v2_experiment_value_hypothesis__hypothesis_id__get","parameters":[{"name":"hypothesis_id","in":"path","required":true,"schema":{"type":"string","description":"UUID of the hypothesis to score","title":"Hypothesis Id"},"description":"UUID of the hypothesis to score"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/experiment-value/rankings":{"get":{"tags":["experiment-value"],"summary":"Ev Target Rankings","description":"Rank all targets by Expected Value of experiment.\n\nEV = P(success) * Scientific_Impact / (Cost_K / 10)\n\nAnswers: \"If I have $50K and 3 months, which experiment should I run first?\"\n\nOptionally filter by budget and/or timeline constraints. Targets are\nranked by EV score descending (higher = better ROI).","operationId":"ev_target_rankings_api_v2_experiment_value_rankings_get","parameters":[{"name":"budget_k","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1000,"minimum":1},{"type":"null"}],"description":"Max budget in $K — only show targets affordable within this budget","title":"Budget K"},"description":"Max budget in $K — only show targets affordable within this budget"},{"name":"max_weeks","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":52,"minimum":1},{"type":"null"}],"description":"Max timeline in weeks — only show targets achievable within this window","title":"Max Weeks"},"description":"Max timeline in weeks — only show targets achievable within this window"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/experiment-value/target/{symbol}":{"get":{"tags":["experiment-value"],"summary":"Ev Single Target","description":"Get detailed EV score for a single target with full breakdown.\n\nEV = P(success) * Scientific_Impact / (Cost_K / 10)\n\nIf convergence is not provided, it is looked up from the convergence_scores\ntable in the database. Pass ?convergence=high to override.","operationId":"ev_single_target_api_v2_experiment_value_target__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","description":"Target gene symbol (e.g. SMN2, CORO1C, PLS3)","title":"Symbol"},"description":"Target gene symbol (e.g. SMN2, CORO1C, PLS3)"},{"name":"convergence","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Override convergence level: very_high, high, medium, low","title":"Convergence"},"description":"Override convergence level: very_high, high, medium, low"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/assay-ready/top3":{"get":{"tags":["experiment-value"],"summary":"Assay Ready Top3","description":"Get the top 3 EVE-scored hypotheses in full assay-ready format.\n\nReturns complete experiment specifications: biological rationale,\nrecommended assay, model system, readouts, Go/No-Go criteria,\nestimated cost, timeline, and clinical translatability notes.\n\nThis is the primary output for researchers deciding what to test next.","operationId":"assay_ready_top3_api_v2_assay_ready_top3_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/assay-ready/hypothesis/{hypothesis_id}":{"get":{"tags":["experiment-value"],"summary":"Assay Ready Single","description":"Get a single hypothesis in full assay-ready format.\n\nReturns a complete experiment specification that a CRO or wet-lab\nteam can execute directly.","operationId":"assay_ready_single_api_v2_assay_ready_hypothesis__hypothesis_id__get","parameters":[{"name":"hypothesis_id","in":"path","required":true,"schema":{"type":"string","description":"UUID of the hypothesis","title":"Hypothesis Id"},"description":"UUID of the hypothesis"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/patents/landscape":{"get":{"tags":["patents"],"summary":"Patent Landscape Overview","description":"Full SMA patent landscape analysis.\n\nReturns temporal filing trends, mechanism clustering (splicing, gene therapy,\nantisense, small molecule, CRISPR, biomarker, screening, delivery),\ntop assignees, and recent competitive filings.","operationId":"patent_landscape_overview_api_v2_patents_landscape_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/patents/freedom-to-operate":{"get":{"tags":["patents"],"summary":"Patent Fto","description":"Freedom-to-operate assessment for a specific compound.\n\nSearches all SMA patents for mentions of the compound (including known synonyms).\nReturns risk level: 'clear' (no patents), 'caution' (related patents),\nor 'blocked' (direct patent coverage).\n\nExample: /patents/freedom-to-operate?compound=4-aminopyridine","operationId":"patent_fto_api_v2_patents_freedom_to_operate_get","parameters":[{"name":"compound","in":"query","required":true,"schema":{"type":"string","description":"Compound name to check (e.g. '4-aminopyridine')","title":"Compound"},"description":"Compound name to check (e.g. '4-aminopyridine')"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/patents/recent":{"get":{"tags":["patents"],"summary":"Recent Patent Filings","description":"Most recent SMA patent filings.\n\nReturns patents filed within the specified window, with mechanism classification\nand annotations for any that mention our discovery targets (SMN2, PLS3, STMN2,\n4-AP, etc.).","operationId":"recent_patent_filings_api_v2_patents_recent_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":1,"description":"Look back N days","default":365,"title":"Days"},"description":"Look back N days"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/patents/fto":{"get":{"tags":["patents"],"summary":"Fto Summary","description":"Freedom-to-operate summary across all SMA target areas.\n\nReturns a risk-sorted overview of patent coverage for key SMA targets\nincluding SMN2 splicing, gene therapy, modifier genes (NCALD, PLS3),\nnovel targets (CORO1C, UBA1), and repurposing candidates (4-AP, HDAC).\n\nEach entry includes risk level (high/medium/low), patent holders,\nkey patent numbers, expiry ranges, and current status.","operationId":"fto_summary_api_v2_patents_fto_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/patents/fto/{symbol}":{"get":{"tags":["patents"],"summary":"Fto For Target","description":"FTO assessment for a specific target or compound.\n\nReturns patent landscape details for the given target including:\n- Known patent holders and key patent numbers\n- Patent expiry ranges\n- Risk level (high/medium/low/unknown)\n- Count of patents mentioning this target in our database\n- Plain-language recommendation\n\nExample: /patents/fto/CORO1C","operationId":"fto_for_target_api_v2_patents_fto__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","description":"Target gene symbol or compound (e.g. 'CORO1C', 'SMN2', '4-AP')","title":"Symbol"},"description":"Target gene symbol or compound (e.g. 'CORO1C', 'SMN2', '4-AP')"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/modifier/predict":{"get":{"tags":["modifier"],"summary":"Modifier Predict","description":"Predict SMA phenotype severity from SMN2 copies and modifier gene status.\n\nExample: `/modifier/predict?smn2_copies=3&pls3=high&ncald=low`\n\nReturns predicted SMA type, severity score (0-1), confidence level,\ncontributing factors for each modifier, and evidence summary with PMIDs.","operationId":"modifier_predict_api_v2_modifier_predict_get","parameters":[{"name":"smn2_copies","in":"query","required":true,"schema":{"type":"integer","maximum":8,"minimum":0,"description":"Number of SMN2 gene copies (0-8)","title":"Smn2 Copies"},"description":"Number of SMN2 gene copies (0-8)"},{"name":"pls3","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"PLS3 expression level: high, low, normal, absent","title":"Pls3"},"description":"PLS3 expression level: high, low, normal, absent"},{"name":"ncald","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"NCALD expression level: high, low, normal, absent","title":"Ncald"},"description":"NCALD expression level: high, low, normal, absent"},{"name":"naip","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"NAIP status: high, normal, low, absent/deleted","title":"Naip"},"description":"NAIP status: high, normal, low, absent/deleted"},{"name":"serf1","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"SERF1 expression level: high, low, normal","title":"Serf1"},"description":"SERF1 expression level: high, low, normal"},{"name":"gtf2h2","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"GTF2H2 expression level: high, low, normal","title":"Gtf2H2"},"description":"GTF2H2 expression level: high, low, normal"},{"name":"coro1c","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CORO1C expression level: high, low, normal","title":"Coro1C"},"description":"CORO1C expression level: high, low, normal"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/modifier/factors":{"get":{"tags":["modifier"],"summary":"Modifier Factors","description":"Return all known SMA modifier genes with evidence and effect details.\n\nLists PLS3, NCALD, NAIP, SERF1, GTF2H2, CORO1C with their mechanisms,\npublished PMIDs, magnitude of effect, and database claim counts.","operationId":"modifier_factors_api_v2_modifier_factors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/modifier/evidence/{symbol}":{"get":{"tags":["modifier"],"summary":"Modifier Evidence","description":"Get all evidence supporting a specific modifier gene's role in SMA.\n\nReturns published literature references (PMIDs), mechanism details,\nand any related claims from the database.","operationId":"modifier_evidence_api_v2_modifier_evidence__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/experiment/suggest/{target_symbol}":{"get":{"tags":["experiment-design"],"summary":"Experiment Suggestions","description":"Analyze evidence gaps for a target and suggest experiments to fill them.\n\nReturns present evidence types, missing types, and prioritized\nassay recommendations ranked by gap_size * target_importance * cost_efficiency.","operationId":"experiment_suggestions_api_v2_experiment_suggest__target_symbol__get","parameters":[{"name":"target_symbol","in":"path","required":true,"schema":{"type":"string","title":"Target Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/experiment/gaps":{"get":{"tags":["experiment-design"],"summary":"Evidence Gaps","description":"All targets with evidence gaps, sorted by priority.\n\nShows which targets have the biggest gaps in evidence coverage\nand what experiments would be most valuable to fill those gaps.","operationId":"evidence_gaps_api_v2_experiment_gaps_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Max targets to return","default":50,"title":"Limit"},"description":"Max targets to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/experiments/propose/batch":{"get":{"tags":["experiment-design"],"summary":"Propose Batch","description":"Batch-generate experimental proposals for all hypotheses in a tier.\n\nConverts prioritized hypotheses into concrete experimental proposals\nwith assays, model systems, readouts, go/no-go criteria, timelines,\nreagents, and relevant literature.\n\nTier A = top 5 high-conviction, Tier B = 6-15, Tier C = rest.","operationId":"propose_batch_api_v2_experiments_propose_batch_get","parameters":[{"name":"tier","in":"query","required":false,"schema":{"type":"string","description":"Hypothesis tier: A, B, C, or all","default":"A","title":"Tier"},"description":"Hypothesis tier: A, B, C, or all"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/experiments/propose/{hypothesis_id}":{"get":{"tags":["experiment-design"],"summary":"Propose For Hypothesis","description":"Generate a concrete experimental proposal for a single hypothesis.\n\nAnalyzes the hypothesis type (binding, expression, drug efficacy,\nsplicing) and returns a structured proposal including:\n- Suggested assay (SPR, Western, qRT-PCR, iPSC-MN, mouse model)\n- Model system (cell line, organoid, animal model)\n- Primary readout (binding Kd, expression fold-change, survival)\n- Go/no-go threshold\n- Estimated timeline and cost\n- Required reagents/antibodies\n- Relevant prior experiments in the literature\n- Step-by-step escalation path","operationId":"propose_for_hypothesis_api_v2_experiments_propose__hypothesis_id__get","parameters":[{"name":"hypothesis_id","in":"path","required":true,"schema":{"type":"string","title":"Hypothesis Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/dead-ends/patterns":{"get":{"tags":["experiment-design"],"summary":"Dead End Patterns","description":"Known drug failure patterns extracted from drug_outcomes data.\n\nShows which targets and mechanisms are most associated with\ndrug failure — useful for avoiding known dead ends.","operationId":"dead_end_patterns_api_v2_dead_ends_patterns_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/dead-ends/risks":{"get":{"tags":["experiment-design"],"summary":"Dead End Risks","description":"Risk assessment for all active hypotheses based on failure patterns.\n\nHypotheses are scored by overlap with known drug failure profiles.\nHigher risk_score = more overlap with historical failures.","operationId":"dead_end_risks_api_v2_dead_ends_risks_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Max hypotheses to return","default":50,"title":"Limit"},"description":"Max hypotheses to return"},{"name":"min_risk","in":"query","required":false,"schema":{"type":"number","maximum":1.0,"minimum":0.0,"description":"Minimum risk score filter","default":0.0,"title":"Min Risk"},"description":"Minimum risk score filter"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/dead-ends/hypothesis/{hypothesis_id}":{"get":{"tags":["experiment-design"],"summary":"Dead End Hypothesis Risk","description":"Risk assessment for a single hypothesis.\n\nReturns risk_score (0-1), risk_level, and detailed risk_factors\nexplaining why this hypothesis may be heading toward a dead end.","operationId":"dead_end_hypothesis_risk_api_v2_dead_ends_hypothesis__hypothesis_id__get","parameters":[{"name":"hypothesis_id","in":"path","required":true,"schema":{"type":"string","title":"Hypothesis Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/omics/nanopore/search":{"get":{"tags":["omics"],"summary":"Nanopore Search","description":"Search NCBI SRA for Nanopore RNA-seq datasets matching the query.","operationId":"nanopore_search_api_v2_omics_nanopore_search_get","parameters":[{"name":"query","in":"query","required":false,"schema":{"type":"string","description":"Search term for NCBI SRA Nanopore / RNA-seq datasets","default":"SMA SMN2 nanopore direct RNA","title":"Query"},"description":"Search term for NCBI SRA Nanopore / RNA-seq datasets"},{"name":"max_results","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Max Results"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/omics/nanopore/catalog":{"get":{"tags":["omics"],"summary":"Nanopore Catalog","description":"Full catalog of publicly available SMA-relevant RNA-seq data.\n\nSearches both NCBI SRA and ENA, deduplicates, and groups results\ninto categories: direct_rna, cdna_rnaseq, motor_neuron_specific,\nsma_patient_derived, smn2_splicing_focused.","operationId":"nanopore_catalog_api_v2_omics_nanopore_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/omics/nanopore/recommendations":{"get":{"tags":["omics"],"summary":"Nanopore Recommendations","description":"Recommend which public datasets to download and analyse next.\n\nPrioritises: SMA patient motor neuron RNA-seq > SMA mouse model >\ngeneral motor neuron > iPSC-MN.  Each recommendation includes a\nrationale explaining why it is valuable for the platform.","operationId":"nanopore_recommendations_api_v2_omics_nanopore_recommendations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/aso/generate/{region}":{"get":{"tags":["aso"],"summary":"Generate Asos","description":"Generate candidate ASO sequences for a target region.\n\nDesigns antisense oligonucleotides targeting the specified SMN2 regulatory\nelement, scored by target complementarity, GC content, melting temperature,\npredicted binding energy, self-complementarity avoidance, and BBB\npenetration potential. Each candidate includes region-specific chemistry\nrecommendations.","operationId":"generate_asos_api_v2_aso_generate__region__get","parameters":[{"name":"region","in":"path","required":true,"schema":{"type":"string","description":"SMN2 target region: ISS-N1, ISS-N2, ESS_exon7, or element2","title":"Region"},"description":"SMN2 target region: ISS-N1, ISS-N2, ESS_exon7, or element2"},{"name":"n","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Number of ASO candidates to generate (1-50)","default":10,"title":"N"},"description":"Number of ASO candidates to generate (1-50)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/aso/generate":{"get":{"tags":["aso"],"summary":"Generate Aso","description":"Generate novel ASO candidates targeting a SMN2 regulatory region.\n\nDesigns antisense oligonucleotides scored by target complementarity,\nGC content, melting temperature, predicted binding energy (delta-G),\nself-complementarity avoidance, and BBB penetration potential.\n\nThe default target (ISS-N1) is the same region targeted by nusinersen\n(Spinraza), the first FDA-approved ASO therapy for SMA.","operationId":"generate_aso_api_v2_aso_generate_get","parameters":[{"name":"target","in":"query","required":false,"schema":{"type":"string","description":"SMN2 target region: ISS-N1, ISS-N2, ESS_exon7, or element2","default":"ISS-N1","title":"Target"},"description":"SMN2 target region: ISS-N1, ISS-N2, ESS_exon7, or element2"},{"name":"n","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Number of ASO candidates to generate (1-50)","default":20,"title":"N"},"description":"Number of ASO candidates to generate (1-50)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/aso/regions":{"get":{"tags":["aso"],"summary":"List Target Regions","description":"List available ASO target regions on SMN2.\n\nReturns sequence, location, mechanism, antisense complement, and GC\ncontent for each targetable regulatory element. Includes ISS-N1\n(nusinersen target), ISS-N2, exon 7 ESS, and Element 2.","operationId":"list_target_regions_api_v2_aso_regions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/aso/targets":{"get":{"tags":["aso"],"summary":"List Aso Targets","description":"List all known SMN2 regulatory regions targetable by ASOs.\n\nAlias for /aso/regions. Returns sequence, location, mechanism, and\nantisense complement for each region.","operationId":"list_aso_targets_api_v2_aso_targets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/aso/compare":{"get":{"tags":["aso"],"summary":"Compare Aso","description":"Compare a candidate ASO sequence to nusinersen (Spinraza).\n\nProvides side-by-side comparison on length, GC content, melting\ntemperature, predicted binding energy, self-complementarity, BBB\npenetration score, and target overlap with ISS-N1.","operationId":"compare_aso_api_v2_aso_compare_get","parameters":[{"name":"sequence","in":"query","required":true,"schema":{"type":"string","minLength":10,"maxLength":30,"description":"ASO sequence to compare against nusinersen (DNA notation, 5'->3')","title":"Sequence"},"description":"ASO sequence to compare against nusinersen (DNA notation, 5'->3')"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/aso/score":{"get":{"tags":["aso"],"summary":"Score Aso Quick","description":"Quick intrinsic score of an ASO sequence (no target required).\n\nEvaluates GC content, melting temperature, binding energy, length,\nself-complementarity, and BBB penetration potential. Returns pass/fail\nchecks and a letter grade (A-D).\n\nUse POST /aso/score for full target-specific scoring with complementarity\nanalysis and design feedback.","operationId":"score_aso_quick_api_v2_aso_score_get","parameters":[{"name":"sequence","in":"query","required":true,"schema":{"type":"string","minLength":10,"maxLength":30,"description":"ASO sequence in DNA notation (5'->3'), 10-30 nt","title":"Sequence"},"description":"ASO sequence in DNA notation (5'->3'), 10-30 nt"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["aso"],"summary":"Score Aso Full","description":"Score a custom ASO sequence against a SMN2 target region.\n\nEvaluates the ASO on all design criteria: target complementarity,\nGC content (40-60% ideal), melting temperature (nearest-neighbor method),\npredicted binding energy, self-complementarity risk, and BBB penetration\npotential.\n\nReturns detailed metrics, sub-scores, region-specific chemistry\nrecommendations, and design feedback.","operationId":"score_aso_full_api_v2_aso_score_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ASOScoreInput"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/twin/personal/profile":{"post":{"tags":["personal-twin","personal-twin"],"summary":"Create or update patient profile","description":"Create or update a patient profile.\n\nRequires x-admin-key header. If a profile with the given name exists,\nit will be updated; otherwise a new one is created.","operationId":"upsert_profile_api_v2_twin_personal_profile_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileInput"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["personal-twin","personal-twin"],"summary":"Get patient profile","description":"Retrieve a patient profile by name.\n\nRequires x-admin-key header. Returns the full profile including all\nclinical data, therapies, biomarkers, and genetic modifiers.","operationId":"read_profile_api_v2_twin_personal_profile_get","parameters":[{"name":"profile_name","in":"query","required":false,"schema":{"type":"string","description":"Profile name to retrieve","default":"default","title":"Profile Name"},"description":"Profile name to retrieve"},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/twin/personal/analysis":{"get":{"tags":["personal-twin","personal-twin"],"summary":"Run full personal Digital Twin analysis","description":"Run the full personalized Digital Twin analysis.\n\nRequires x-admin-key header. Integrates phenotype prediction, drug\nsimulation, synergy scoring, trial filtering, biomarker recommendations,\nBayesian evidence assessment, and experiment prioritization — all\npersonalized to this patient's genetic and clinical profile.","operationId":"personal_analysis_api_v2_twin_personal_analysis_get","parameters":[{"name":"profile_name","in":"query","required":false,"schema":{"type":"string","description":"Profile to analyze","default":"default","title":"Profile Name"},"description":"Profile to analyze"},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/twin/personal/trials":{"get":{"tags":["personal-twin","personal-twin"],"summary":"Get relevant clinical trials for patient","description":"Filter clinical trials relevant to this patient.\n\nRequires x-admin-key header. Filters from all trials by SMA type,\nage, current therapies, trial status and phase. Results are scored\nand ranked by relevance.","operationId":"personal_trials_api_v2_twin_personal_trials_get","parameters":[{"name":"profile_name","in":"query","required":false,"schema":{"type":"string","description":"Profile to filter trials for","default":"default","title":"Profile Name"},"description":"Profile to filter trials for"},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/twin/personal/optimize":{"get":{"tags":["personal-twin","personal-twin"],"summary":"Therapy optimization suggestions","description":"Suggest therapy optimizations for this patient.\n\nRequires x-admin-key header. Analyzes current therapies for modality\ngaps, simulates additions, ranks by marginal improvement, and provides\nbiomarker monitoring recommendations.","operationId":"personal_optimize_api_v2_twin_personal_optimize_get","parameters":[{"name":"profile_name","in":"query","required":false,"schema":{"type":"string","description":"Profile to optimize","default":"default","title":"Profile Name"},"description":"Profile to optimize"},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/cascade/predict":{"get":{"tags":["cascade"],"summary":"Cascade Predict","description":"Predict the full mutation-to-function cascade for a single variant.\n\nTraces the variant through 5 steps:\n1. Splice impact (SpliceAI GPU scores or rule-based)\n2. Protein change (exon skip → truncation, or missense)\n3. ESM-2 embedding delta (GPU embeddings or domain estimate)\n4. Structure impact (AlphaFold missense or domain annotation)\n5. Functional integration (weighted score → classification)\n\nExample: /cascade/predict?variant=c.840C>T returns the cascade for\nTHE SMA-causing mutation in SMN2.","operationId":"cascade_predict_api_v2_cascade_predict_get","parameters":[{"name":"variant","in":"query","required":true,"schema":{"type":"string","description":"Variant notation: c.840C>T (coding DNA) or p.Gly287Arg / p.G287R (protein)","examples":["c.840C>T","c.859G>C","p.Gly287Arg","p.Y272C"],"title":"Variant"},"description":"Variant notation: c.840C>T (coding DNA) or p.Gly287Arg / p.G287R (protein)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/cascade/batch":{"post":{"tags":["cascade"],"summary":"Cascade Batch","description":"Run the cascade for multiple variants in one call.\n\nBody: {\"variants\": [\"c.840C>T\", \"c.859G>C\", \"p.Gly287Arg\"]}\nMax 100 variants per request.","operationId":"cascade_batch_api_v2_cascade_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCascadeInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/cascade/known":{"get":{"tags":["cascade"],"summary":"Cascade Known","description":"Return pre-computed cascades for well-known SMA variants.\n\nIncludes the critical c.840C>T (THE cause of SMA), known pathogenic\nmissense variants, modifier variants, and any high-impact variants\nidentified from SpliceAI GPU analysis.","operationId":"cascade_known_api_v2_cascade_known_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/cascade/compare":{"get":{"tags":["cascade"],"summary":"Cascade Compare","description":"Side-by-side comparison: wild-type SMN1 vs SMN2 with the variant.\n\nShows exactly where the cascade diverges between the functional SMN1\ngene and the SMN2 copy carrying the specified variant. Identifies the\nprimary point of divergence and quantifies the impact at each step.\n\nExample: /cascade/compare?variant=c.840C>T shows how the C-to-T change\nat exon 7 position 6 causes the entire downstream cascade to collapse.","operationId":"cascade_compare_api_v2_cascade_compare_get","parameters":[{"name":"variant","in":"query","required":true,"schema":{"type":"string","description":"Variant to compare against wild-type SMN1","examples":["c.840C>T","p.Gly287Arg"],"title":"Variant"},"description":"Variant to compare against wild-type SMN1"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/funnel/run":{"post":{"tags":["funnel","funnel"],"summary":"Start Funnel Run","description":"Start a screening funnel pipeline run.\n\nOrchestrates: Generate -> Filter -> ML Proxy -> DiffDock -> Candidates.\nPure SMILES-based drug-likeness estimation (no RDKit required).","operationId":"start_funnel_run_api_v2_funnel_run_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunnelRunRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/funnel/status":{"get":{"tags":["funnel","funnel"],"summary":"Funnel Status","description":"Get status of any running funnel job.","operationId":"funnel_status_api_v2_funnel_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/funnel/results":{"get":{"tags":["funnel","funnel"],"summary":"Funnel Results","description":"Get results from a completed funnel run.","operationId":"funnel_results_api_v2_funnel_results_get","parameters":[{"name":"run_id","in":"query","required":false,"schema":{"type":"string","description":"Run ID or 'latest'","default":"latest","title":"Run Id"},"description":"Run ID or 'latest'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/funnel/summary":{"get":{"tags":["funnel","funnel"],"summary":"Funnel Summary Endpoint","description":"Get summary of all funnel runs with aggregate statistics.","operationId":"funnel_summary_endpoint_api_v2_funnel_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/funnel/estimate":{"post":{"tags":["funnel","funnel"],"summary":"Estimate Single","description":"Estimate drug-likeness properties for a single SMILES (no RDKit).","operationId":"estimate_single_api_v2_funnel_estimate_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/fair/audit":{"get":{"tags":["fair"],"summary":"Fair Audit","description":"Full FAIR compliance audit of the SMA Research Platform.\n\nScores the platform across all 14 FAIR sub-principles (F1-F4, A1-A4,\nI1-I3, R1-R3), returning per-dimension scores, an overall score (0-1),\na letter grade, and specific recommendations for improvement.","operationId":"fair_audit_api_v2_fair_audit_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/fair/recommendations":{"get":{"tags":["fair"],"summary":"Fair Recommendations","description":"Actionable recommendations to improve FAIR compliance.\n\nReturns prioritised recommendations with effort estimates, expected\nimpact, and concrete implementation steps.","operationId":"fair_recommendations_api_v2_fair_recommendations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/fair/data-dictionary":{"get":{"tags":["fair"],"summary":"Fair Data Dictionary","description":"Auto-generated data dictionary for the platform database.\n\nLists all tables, columns, types, constraints, and descriptions.\nIncludes controlled vocabularies and external identifier mappings.\nUses live database introspection when available, falls back to\nstatic schema definitions.","operationId":"fair_data_dictionary_api_v2_fair_data_dictionary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/proxy/train":{"post":{"tags":["docking-proxy"],"summary":"Train the ML docking proxy model","description":"Train or retrain the proxy model on all available DiffDock results.\n\nLoads results from gpu/results/ (v1, multi-target, NIM batch),\nextracts SMILES features, and trains a GradientBoosting or k-NN model.\n\nReturns accuracy metrics (R², MAE), feature importances, and\ncross-validation scores.","operationId":"train_proxy_api_v2_proxy_train_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/proxy/predict":{"post":{"tags":["docking-proxy"],"summary":"Predict docking confidence for one compound","description":"Predict DiffDock confidence for a single compound-target pair.\n\n~1000x faster than running DiffDock (microseconds vs minutes).\nReturns predicted confidence score, uncertainty estimate, and\nbinding interpretation.","operationId":"predict_single_api_v2_proxy_predict_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/proxy/batch":{"post":{"tags":["docking-proxy"],"summary":"Batch predict docking confidence (fast screening)","description":"Predict DiffDock confidence for many compounds at once.\n\nThis is the core fast screening endpoint. Processes thousands of\ncompounds in milliseconds where DiffDock would take days.\nResults are sorted by predicted confidence (best first).","operationId":"predict_batch_api_v2_proxy_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/proxy/info":{"get":{"tags":["docking-proxy"],"summary":"Get proxy model info and accuracy metrics","description":"Return model statistics, training data info, and accuracy metrics.\n\nIncludes R², MAE, feature importances, cross-validation scores,\nand training data distribution.","operationId":"proxy_info_api_v2_proxy_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/proxy/generate":{"post":{"tags":["docking-proxy"],"summary":"Generate random drug-like SMILES","description":"Generate N random drug-like SMILES strings using a character-level\nMarkov chain trained on the screening library.\n\nUses three strategies: scaffold+substituent decoration,\ndual-fragment linking, and pure Markov generation.\n\nThese generated SMILES can be fed into /proxy/batch for\nhigh-throughput virtual screening.","operationId":"generate_smiles_api_v2_proxy_generate_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ml-proxy/train":{"post":{"tags":["ml-proxy"],"summary":"Train the ML docking proxy v2 (Morgan fingerprints)","description":"Train or retrain the v2 proxy model on all available DiffDock results.\n\nUses RDKit Morgan fingerprints (ECFP4, 2048-bit) + target one-hot encoding\nwith a RandomForestRegressor (500 trees). Falls back to GradientBoosting\nwith string features if RDKit is not available.\n\nLoads training data from:\n- gpu/results/10k_screen/diffdock_results.json (4,116 entries, primary)\n- gpu/results/nim_batch/diffdock_results.json (378 entries)\n- gpu/results/diffdock_multi_results.json (120 entries)\n- gpu/results/diffdock_results.json (20 entries)\n\nReturns accuracy metrics (R2, MAE, OOB R2), cross-validation scores,\nfeature importances, and scatter plot data.","operationId":"train_ml_proxy_api_v2_ml_proxy_train_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ml-proxy/predict":{"post":{"tags":["ml-proxy"],"summary":"Predict binding for a list of SMILES (ML proxy v2)","description":"Predict DiffDock confidence for a batch of compounds.\n\n~1000x faster than running DiffDock. Processes thousands of compounds\nin milliseconds where DiffDock would take days. Results are sorted by\npredicted confidence (best first).\n\nUses Morgan fingerprints (ECFP4) for molecular representation --\ncaptures real molecular topology instead of simple character counting.","operationId":"predict_ml_proxy_api_v2_ml_proxy_predict_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MLProxyPredictRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/ml-proxy/status":{"get":{"tags":["ml-proxy"],"summary":"Get ML proxy v2 model status and metrics","description":"Return model statistics, training data info, and accuracy metrics.\n\nIncludes R2, MAE, OOB R2 (RandomForest), feature importances (top 20),\ncross-validation scores, target/source distributions, and scatter plot\ndata (actual vs predicted DiffDock confidence).","operationId":"ml_proxy_status_api_v2_ml_proxy_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/ml-proxy/screen-library":{"post":{"tags":["ml-proxy"],"summary":"Screen the full ChEMBL library with ML proxy v2","description":"Screen all compounds in the molecule_screenings DB table using the\ntrained ML proxy. Returns the top-K predicted binders ranked by\npredicted DiffDock confidence.\n\nThis enables screening the full library (thousands of compounds) in\nseconds instead of weeks with DiffDock. Each compound gets a predicted\nconfidence score, uncertainty estimate, and binding interpretation.","operationId":"screen_library_api_v2_ml_proxy_screen_library_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MLProxyScreenRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/structures":{"get":{"tags":["structures"],"summary":"List Structures","description":"Return predicted structures — one best row per target symbol.","operationId":"list_structures_api_v2_structures_get","parameters":[{"name":"symbol","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Symbol"}},{"name":"source_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Filter"}},{"name":"min_plddt","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Plddt"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":200,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/structures/stats":{"get":{"tags":["structures"],"summary":"Structures Stats","description":"Summary counts for the structures section.","operationId":"structures_stats_api_v2_structures_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/pockets":{"get":{"tags":["pockets"],"summary":"List Pockets","description":"Return pocket predictions for all structures, sorted by top score descending.","operationId":"list_pockets_api_v2_pockets_get","parameters":[{"name":"min_score","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum top pocket score","title":"Min Score"},"description":"Minimum top pocket score"},{"name":"min_probability","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum top pocket probability","title":"Min Probability"},"description":"Minimum top pocket probability"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/pockets/stats":{"get":{"tags":["pockets"],"summary":"Pockets Stats","description":"Summary statistics for pocket predictions.","operationId":"pockets_stats_api_v2_pockets_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/pockets/druggable":{"get":{"tags":["pockets"],"summary":"List Druggable Pockets","description":"Return only highly druggable proteins (top_score > 50 AND top_probability > 0.8).","operationId":"list_druggable_pockets_api_v2_pockets_druggable_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/pockets/{symbol}":{"get":{"tags":["pockets"],"summary":"Get Pockets For Symbol","description":"Return all pocket predictions for a specific target symbol.","operationId":"get_pockets_for_symbol_api_v2_pockets__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admet/summary":{"get":{"tags":["admet"],"summary":"Admet Summary","description":"Overall ADMET statistics for the full compound library.","operationId":"admet_summary_api_v2_admet_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/admet/compounds":{"get":{"tags":["admet"],"summary":"Admet Compounds","description":"Filter compounds by ADMET properties.","operationId":"admet_compounds_api_v2_admet_compounds_get","parameters":[{"name":"bbb","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter by BBB permeability","title":"Bbb"},"description":"Filter by BBB permeability"},{"name":"lipinski","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter by Lipinski compliance","title":"Lipinski"},"description":"Filter by Lipinski compliance"},{"name":"qed_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"description":"Minimum QED score","title":"Qed Min"},"description":"Minimum QED score"},{"name":"qed_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"description":"Maximum QED score","title":"Qed Max"},"description":"Maximum QED score"},{"name":"cns_mpo_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":6,"minimum":0},{"type":"null"}],"description":"Minimum CNS MPO score","title":"Cns Mpo Min"},"description":"Minimum CNS MPO score"},{"name":"mw_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum molecular weight","title":"Mw Max"},"description":"Maximum molecular weight"},{"name":"tpsa_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum TPSA","title":"Tpsa Max"},"description":"Maximum TPSA"},{"name":"target","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by target symbol","title":"Target"},"description":"Filter by target symbol"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/admet/top":{"get":{"tags":["admet"],"summary":"Admet Top","description":"Top N compounds sorted by a chosen ADMET property.","operationId":"admet_top_api_v2_admet_top_get","parameters":[{"name":"n","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Number of top compounds","default":20,"title":"N"},"description":"Number of top compounds"},{"name":"sort","in":"query","required":false,"schema":{"enum":["qed","cns_mpo","tpsa","logp","mw"],"type":"string","description":"Sort field","default":"qed","title":"Sort"},"description":"Sort field"},{"name":"bbb","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Pre-filter by BBB permeability","title":"Bbb"},"description":"Pre-filter by BBB permeability"},{"name":"target","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by target symbol","title":"Target"},"description":"Filter by target symbol"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/screening/virtual":{"post":{"tags":["virtual-screening","virtual-screening"],"summary":"Run Virtual Screening","description":"Run end-to-end generative virtual screening (GTC 2026 Blueprint pattern).\n\nPipeline: GenMol (generate) -> RDKit (filter) -> DiffDock (dock) -> Rank.\nRequires NVIDIA_API_KEY for GenMol and DiffDock NIM calls.","operationId":"run_virtual_screening_api_v2_screening_virtual_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VirtualScreeningRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/binder/targets":{"get":{"tags":["binder-design","binder-design"],"summary":"List Binder Targets","description":"List SMA targets available for protein binder design.","operationId":"list_binder_targets_api_v2_binder_targets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/binder/design":{"post":{"tags":["binder-design","binder-design"],"summary":"Design Protein Binder","description":"Design protein binders for an SMA target using Proteina-Complexa (GTC 2026).\n\nThis is a new therapeutic modality — designed protein binders that can\ntarget SMA-relevant proteins with high specificity.\n\nNOTE: Requires GPU. Returns planned-status if GPU not configured.","operationId":"design_protein_binder_api_v2_binder_design_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/sma_platform__api__routes__binder_design__BinderDesignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/compare/targets":{"get":{"tags":["target-compare","target-compare"],"summary":"Compare Targets","description":"Compare two SMA targets across all dimensions.","operationId":"compare_targets_api_v2_compare_targets_get","parameters":[{"name":"a","in":"query","required":true,"schema":{"type":"string","description":"First target symbol","title":"A"},"description":"First target symbol"},{"name":"b","in":"query","required":true,"schema":{"type":"string","description":"Second target symbol","title":"B"},"description":"Second target symbol"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/report/target/{symbol}":{"get":{"tags":["target-report","target-report"],"summary":"Get Target Report","description":"Get comprehensive report card for an SMA target.\n\nReturns everything the platform knows about this target in one view:\nconvergence, claims, screening hits, structure, conservation, hypotheses.","operationId":"get_target_report_api_v2_report_target__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/advisory/pack":{"get":{"tags":["advisory-pack","advisory-pack"],"summary":"Generate Advisory Pack","description":"Generate a comprehensive Scientific Advisory Pack.\n\n5-section research summary suitable for sharing with\nexternal collaborators, professors, and grant reviewers.","operationId":"generate_advisory_pack_api_v2_advisory_pack_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/analytics/summary":{"get":{"tags":["analytics","analytics"],"summary":"Platform Summary","description":"Comprehensive platform analytics summary.","operationId":"platform_summary_api_v2_analytics_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/reproducibility/test":{"get":{"tags":["reproducibility","reproducibility"],"summary":"Run Reproducibility Tests","description":"Run all reproducibility tests on convergence scores and rankings.","operationId":"run_reproducibility_tests_api_v2_reproducibility_test_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/reproducibility/test/convergence":{"get":{"tags":["reproducibility","reproducibility"],"summary":"Test Convergence","description":"Test convergence score reproducibility (run twice, compare).","operationId":"test_convergence_api_v2_reproducibility_test_convergence_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/reproducibility/test/ranking":{"get":{"tags":["reproducibility","reproducibility"],"summary":"Test Ranking","description":"Test ranking order stability.","operationId":"test_ranking_api_v2_reproducibility_test_ranking_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/reproducibility/test/claims":{"get":{"tags":["reproducibility","reproducibility"],"summary":"Test Claims","description":"Test claim count consistency between scoring and database.","operationId":"test_claims_api_v2_reproducibility_test_claims_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/repurpose/candidates":{"get":{"tags":["cross-disease","cross-disease"],"summary":"List Repurposing Candidates","description":"List cross-disease drug repurposing candidates for SMA.","operationId":"list_repurposing_candidates_api_v2_repurpose_candidates_get","parameters":[{"name":"min_score","in":"query","required":false,"schema":{"type":"number","maximum":1,"minimum":0,"default":0.0,"title":"Min Score"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/repurpose/candidates/target/{symbol}":{"get":{"tags":["cross-disease","cross-disease"],"summary":"Candidates By Target","description":"Get repurposing candidates targeting a specific SMA protein.","operationId":"candidates_by_target_api_v2_repurpose_candidates_target__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/repurpose/candidates/disease/{disease}":{"get":{"tags":["cross-disease","cross-disease"],"summary":"Candidates By Disease","description":"Get repurposing candidates from a specific disease (ALS, DMD, etc.).","operationId":"candidates_by_disease_api_v2_repurpose_candidates_disease__disease__get","parameters":[{"name":"disease","in":"path","required":true,"schema":{"type":"string","title":"Disease"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/timeline/claims":{"get":{"tags":["timeline","timeline"],"summary":"Claims Timeline","description":"Get claim creation timeline grouped by year.","operationId":"claims_timeline_api_v2_timeline_claims_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/timeline/target/{symbol}":{"get":{"tags":["timeline","timeline"],"summary":"Target Timeline","description":"Get evidence timeline for a specific target.","operationId":"target_timeline_api_v2_timeline_target__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/timeline/growth":{"get":{"tags":["timeline","timeline"],"summary":"Platform Growth","description":"Get platform-wide evidence growth metrics.","operationId":"platform_growth_api_v2_timeline_growth_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/combinations/rank":{"get":{"tags":["combinations","combinations"],"summary":"Rank Combinations","description":"Rank all possible SMA therapy combinations by composite score.","operationId":"rank_combinations_api_v2_combinations_rank_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/combinations/top3":{"get":{"tags":["combinations","combinations"],"summary":"Top3 Combinations","description":"Get the top 3 recommended therapy combinations for SMA.","operationId":"top3_combinations_api_v2_combinations_top3_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/network/interactions":{"get":{"tags":["interaction-network","interaction-network"],"summary":"Get Interaction Network","description":"Build the full drug-target interaction network.\n\nReturns nodes (drugs, targets) and edges (interactions) with evidence counts.\nCombines: graph_edges, ChEMBL bioactivity (molecule_screenings), claims,\nand screening funnel results.","operationId":"get_interaction_network_api_v2_network_interactions_get","parameters":[{"name":"min_confidence","in":"query","required":false,"schema":{"type":"number","maximum":1,"minimum":0,"default":0.0,"title":"Min Confidence"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/network/interactions/target/{symbol}":{"get":{"tags":["interaction-network","interaction-network"],"summary":"Get Target Interactions","description":"Get all interactions for a specific target.","operationId":"get_target_interactions_api_v2_network_interactions_target__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/modality/compare/{symbol}":{"get":{"tags":["modality-comparison"],"summary":"Compare Modalities","description":"Compare therapeutic modalities for an SMA target.\n\nReturns all applicable modalities (small molecule, ASO, CRISPR, gene therapy,\nprotein binder) ranked by feasibility, with pros/cons, development timelines,\nand cost estimates for the given target gene.","operationId":"compare_modalities_api_v2_modality_compare__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/modality/compare":{"get":{"tags":["modality-comparison"],"summary":"Compare All","description":"Compare modalities for all SMA targets.\n\nReturns a list of modality comparisons for every target in the platform,\neach ranked by feasibility.","operationId":"compare_all_api_v2_modality_compare_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/organoid/scorecard":{"get":{"tags":["organoid-scorecard","organoid-scorecard"],"summary":"Get Organoid Scorecard","description":"Score testability of all SMA target predictions in organoid/NMJ models.\n\nReturns a ranked list of targets with their best model systems,\ntestability scores, estimated costs, and timelines.","operationId":"get_organoid_scorecard_api_v2_organoid_scorecard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/organoid/scorecard/{symbol}":{"get":{"tags":["organoid-scorecard","organoid-scorecard"],"summary":"Get Target Testability","description":"Score testability for a specific target in available model systems.\n\nReturns recommended models ranked by endpoint overlap, with cost and\ntimeline estimates.","operationId":"get_target_testability_api_v2_organoid_scorecard__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","description":"Target gene/pathway (e.g. SMN2, CORO1C, NMJ_MATURATION)","title":"Symbol"},"description":"Target gene/pathway (e.g. SMN2, CORO1C, NMJ_MATURATION)"},{"name":"prediction_type","in":"query","required":false,"schema":{"type":"string","description":"Prediction type: binding, expression, or function","default":"binding","title":"Prediction Type"},"description":"Prediction type: binding, expression, or function"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/organoid/models":{"get":{"tags":["organoid-scorecard","organoid-scorecard"],"summary":"Get Model Systems","description":"List available SMA model systems with capabilities and constraints.\n\nUseful for the frontend to display model system metadata without\nrunning the full scorecard.","operationId":"get_model_systems_api_v2_organoid_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/collab/export/target/{symbol}":{"get":{"tags":["collaboration","collaboration"],"summary":"Export Target Data","description":"Export all platform data for a target in a researcher-friendly format.\n\nNo authentication required — all data is from public sources.\nSuitable for supplementary materials, grant applications, or collaboration.","operationId":"export_target_data_api_v2_collab_export_target__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/collab/export/claims":{"get":{"tags":["collaboration","collaboration"],"summary":"Export Claims","description":"Export claims in a structured format for external analysis.","operationId":"export_claims_api_v2_collab_export_claims_get","parameters":[{"name":"target","in":"query","required":false,"schema":{"type":"string","description":"Filter by target symbol","title":"Target"},"description":"Filter by target symbol"},{"name":"claim_type","in":"query","required":false,"schema":{"type":"string","description":"Filter by claim type","title":"Claim Type"},"description":"Filter by claim type"},{"name":"min_confidence","in":"query","required":false,"schema":{"type":"number","maximum":1,"minimum":0,"default":0.0,"title":"Min Confidence"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/collab/export/screening-hits":{"get":{"tags":["collaboration","collaboration"],"summary":"Export Screening Hits","description":"Export all positive virtual screening hits.","operationId":"export_screening_hits_api_v2_collab_export_screening_hits_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/collab/export/summary":{"get":{"tags":["collaboration","collaboration"],"summary":"Export Platform Summary","description":"Quick summary of what the platform offers — for new collaborators.","operationId":"export_platform_summary_api_v2_collab_export_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/locus/smn":{"get":{"tags":["smn-locus"],"summary":"Smn Locus Info","description":"Get comprehensive SMN locus information — why copy number alone doesn't predict phenotype.\n\nReturns locus architecture (SMN1 vs SMN2, the critical C>T difference),\nall known phenotype modifiers with their mechanisms, examples of\ngenotype-phenotype discordance, and a summary key message.","operationId":"smn_locus_info_api_v2_locus_smn_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/locus/modifiers":{"get":{"tags":["smn-locus"],"summary":"Phenotype Modifiers","description":"List known phenotype modifiers beyond SMN2 copy number.\n\nCovers SMN2 splicing efficiency, modifier genes (PLS3, NCALD, NAIP),\ngene conversion events, intragenic variants, epigenetics, and\npolygenic background effects — with contribution estimates and\nmechanistic explanations.","operationId":"phenotype_modifiers_api_v2_locus_modifiers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/locus/discordant":{"get":{"tags":["smn-locus"],"summary":"Discordant Cases","description":"Examples of genotype-phenotype discordance in SMA.\n\nReturns clinical scenarios where SMN2 copy number alone fails to\npredict disease severity — including asymptomatic carriers, discordant\nsiblings, unexpectedly mild or severe cases, and their explanations.","operationId":"discordant_cases_api_v2_locus_discordant_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/proprioception/analysis":{"get":{"tags":["proprioception","proprioception"],"summary":"Proprioceptive Analysis","description":"Comprehensive proprioceptive pathway analysis in SMA.","operationId":"proprioceptive_analysis_api_v2_proprioception_analysis_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/proprioception/h-reflex":{"get":{"tags":["proprioception","proprioception"],"summary":"H Reflex Info","description":"H-reflex testing information for SMA proprioception.","operationId":"h_reflex_info_api_v2_proprioception_h_reflex_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/proprioception/segments":{"get":{"tags":["proprioception","proprioception"],"summary":"Segment Map","description":"Spinal cord segment vulnerability mapping.","operationId":"segment_map_api_v2_proprioception_segments_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/models/mouse":{"get":{"tags":["mouse-models","mouse-models"],"summary":"List Mouse Models","description":"List all SMA mouse models with phenotype data.","operationId":"list_mouse_models_api_v2_models_mouse_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/models/mouse/methodology":{"get":{"tags":["mouse-models","mouse-models"],"summary":"Methodology Problems","description":"Motor neuron counting reproducibility problem (0-80% variation).","operationId":"methodology_problems_api_v2_models_mouse_methodology_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/models/mouse/compare":{"get":{"tags":["mouse-models","mouse-models"],"summary":"Compare","description":"Compare two SMA mouse models.","operationId":"compare_api_v2_models_mouse_compare_get","parameters":[{"name":"a","in":"query","required":true,"schema":{"type":"string","title":"A"}},{"name":"b","in":"query","required":true,"schema":{"type":"string","title":"B"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/agent/discover/{target}":{"post":{"tags":["agent","agent"],"summary":"Launch Discovery Campaign","description":"Launch an autonomous drug discovery campaign for the given target.\n\nOrchestrates the full pipeline:\n  1. Check baseline convergence score\n  2. Get candidate compounds from screening library\n  3. Filter by drug-likeness (Lipinski, QED > 0.3, BBB)\n  4. Dock via DiffDock NIM\n  5. Rank by composite score\n  6. Store results + milestones\n  7. Return campaign summary\n\nRuns as background task to avoid HTTP timeouts (docking can take minutes).\nCheck progress via GET /agent/campaigns.\n\nRequires NVIDIA_API_KEY for docking step.","operationId":"launch_discovery_campaign_api_v2_agent_discover__target__post","parameters":[{"name":"target","in":"path","required":true,"schema":{"type":"string","title":"Target"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoveryCampaignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/agent/campaigns":{"get":{"tags":["agent","agent"],"summary":"List Campaigns","description":"List past discovery campaigns (most recent first) and current status.","operationId":"list_campaigns_api_v2_agent_campaigns_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/agent/tools":{"get":{"tags":["agent","agent"],"summary":"List Tools","description":"List available tools for the drug discovery agent.\n\nShows which NVIDIA NIMs are configured and ready, based on\nenvironment variables (NVIDIA_API_KEY, etc.).","operationId":"list_tools_api_v2_agent_tools_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/compounds/ranked":{"get":{"tags":["compound-pipeline","compound-pipeline"],"summary":"Get Ranked Compounds","description":"Get ranked compounds with multi-fidelity scores + confidence intervals.","operationId":"get_ranked_compounds_api_v2_compounds_ranked_get","parameters":[{"name":"target","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Target symbol (e.g. ROCK2, LIMK2). Omit for all targets.","title":"Target"},"description":"Target symbol (e.g. ROCK2, LIMK2). Omit for all targets."},{"name":"tier","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by tier: ready, promising, early","title":"Tier"},"description":"Filter by tier: ready, promising, early"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/compounds/{compound_id}/card":{"get":{"tags":["compound-pipeline","compound-pipeline"],"summary":"Get Compound Card","description":"Get full compound card with radar chart data and recommendation.","operationId":"get_compound_card_api_v2_compounds__compound_id__card_get","parameters":[{"name":"compound_id","in":"path","required":true,"schema":{"type":"string","title":"Compound Id"}},{"name":"target","in":"query","required":true,"schema":{"type":"string","title":"Target"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/compounds/score":{"post":{"tags":["compound-pipeline","compound-pipeline"],"summary":"Run Scoring","description":"Run Bayesian fusion scoring. If target specified, score that target only.","operationId":"run_scoring_api_v2_compounds_score_post","parameters":[{"name":"target","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/compounds/select-batch":{"post":{"tags":["compound-pipeline","compound-pipeline"],"summary":"Select Batch","description":"Select Pareto-optimal batch for wet lab validation.","operationId":"select_batch_api_v2_compounds_select_batch_post","parameters":[{"name":"target","in":"query","required":true,"schema":{"type":"string","title":"Target"}},{"name":"batch_size","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Batch Size"}},{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/compounds/ingest":{"post":{"tags":["compound-pipeline","compound-pipeline"],"summary":"Run Ingestion","description":"Ingest all data sources into compound_results.","operationId":"run_ingestion_api_v2_compounds_ingest_post","parameters":[{"name":"x-admin-key","in":"header","required":true,"schema":{"type":"string","description":"Admin API key for write operations","title":"X-Admin-Key"},"description":"Admin API key for write operations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/compounds/pipeline-summary":{"get":{"tags":["compound-pipeline","compound-pipeline"],"summary":"Pipeline Summary","description":"Overall pipeline stats across all targets.","operationId":"pipeline_summary_api_v2_compounds_pipeline_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/compounds/report/{target}":{"get":{"tags":["compound-pipeline","compound-pipeline"],"summary":"Get Target Report","description":"Generate and download PDF validation report for a target.","operationId":"get_target_report_api_v2_compounds_report__target__get","parameters":[{"name":"target","in":"path","required":true,"schema":{"type":"string","title":"Target"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/compounds/nanobodies":{"get":{"tags":["compound-pipeline","compound-pipeline"],"summary":"Get Nanobodies","description":"Get all mBER-designed VHH nanobodies with ipTM scores.","operationId":"get_nanobodies_api_v2_compounds_nanobodies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v2/health":{"get":{"summary":"Health","operationId":"health_api_v2_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robots.txt":{"get":{"summary":"Robots Txt","operationId":"robots_txt_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap Xml","operationId":"sitemap_xml_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/links":{"get":{"summary":"Links Page","description":"Serve index.html for /links — SPA handles the section routing.","operationId":"links_page_links_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/llms.txt":{"get":{"summary":"Llms Txt","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/{section}":{"get":{"summary":"Serve Section","operationId":"serve_section__section__get","parameters":[{"name":"section","in":"path","required":true,"schema":{"type":"string","title":"Section"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{section}/{rest}":{"get":{"summary":"Serve Section Deep","description":"Serve index.html for deep-linked SPA routes like /news/{slug}.\n\nHandles multi-segment paths under known SPA sections so that\nURLs shared via RSS, social media, etc. resolve correctly\ninstead of returning 404.","operationId":"serve_section_deep__section___rest__get","parameters":[{"name":"section","in":"path","required":true,"schema":{"type":"string","title":"Section"}},{"name":"rest","in":"path","required":true,"schema":{"type":"string","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AF2MultimerRequest":{"properties":{"sequences":{"items":{"type":"string"},"type":"array","title":"Sequences"},"algorithm":{"type":"string","title":"Algorithm","default":"jackhmmer"},"relax_prediction":{"type":"boolean","title":"Relax Prediction","default":true}},"type":"object","required":["sequences"],"title":"AF2MultimerRequest","description":"AlphaFold2-Multimer complex structure prediction."},"AF2Request":{"properties":{"sequence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sequence"},"target_symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Symbol"},"algorithm":{"type":"string","title":"Algorithm","default":"jackhmmer"},"relax_prediction":{"type":"boolean","title":"Relax Prediction","default":true}},"type":"object","title":"AF2Request","description":"AlphaFold2 single-protein structure prediction."},"ASOScoreInput":{"properties":{"sequence":{"type":"string","maxLength":30,"minLength":10,"title":"Sequence","description":"ASO sequence in DNA notation (5'->3'), 10-30 nt","examples":["TCACTTTCATAATGCTGG"]},"target":{"type":"string","title":"Target","description":"Target region key: ISS-N1, ISS-N2, ESS_exon7, or element2","default":"ISS-N1"}},"type":"object","required":["sequence"],"title":"ASOScoreInput","description":"Request body for scoring a custom ASO sequence."},"BatchCascadeInput":{"properties":{"variants":{"items":{"type":"string"},"type":"array","title":"Variants"}},"type":"object","required":["variants"],"title":"BatchCascadeInput"},"BatchDockRequest":{"properties":{"compounds":{"items":{"$ref":"#/components/schemas/sma_platform__api__routes__diffdock_local__CompoundInput"},"type":"array","title":"Compounds"},"target_pdb":{"type":"string","title":"Target Pdb"},"gpu_instance_url":{"type":"string","title":"Gpu Instance Url"},"num_poses":{"type":"integer","title":"Num Poses","default":3}},"type":"object","required":["compounds","target_pdb","gpu_instance_url"],"title":"BatchDockRequest"},"BatchRequest":{"properties":{"compounds":{"items":{"$ref":"#/components/schemas/CompoundEntry"},"type":"array","maxItems":100000,"minItems":1,"title":"Compounds","description":"List of compounds to screen"},"target":{"type":"string","title":"Target","description":"SMA target protein. One of: SMN2, SMN1, PLS3, STMN2, NCALD, UBA1, CORO1C","default":"SMN2"}},"type":"object","required":["compounds"],"title":"BatchRequest"},"BatchVariantInput":{"properties":{"variants":{"items":{"type":"string"},"type":"array","title":"Variants"}},"type":"object","required":["variants"],"title":"BatchVariantInput"},"ChannelCreate":{"properties":{"gene":{"type":"string","title":"Gene"},"channel_name":{"type":"string","title":"Channel Name"},"channel_type":{"type":"string","title":"Channel Type"},"vmem_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vmem Role"},"sma_expression":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sma Expression"},"sma_impact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sma Impact"},"therapeutic_target":{"type":"boolean","title":"Therapeutic Target","default":false},"drug_candidates":{"items":{"type":"string"},"type":"array","title":"Drug Candidates","default":[]},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","default":{}}},"type":"object","required":["gene","channel_name","channel_type"],"title":"ChannelCreate"},"ChatMessage":{"properties":{"role":{"type":"string","pattern":"^(user|assistant)$","title":"Role"},"content":{"type":"string","maxLength":5000,"minLength":1,"title":"Content"}},"type":"object","required":["role","content"],"title":"ChatMessage"},"ChatRequest":{"properties":{"message":{"type":"string","maxLength":1000,"minLength":2,"title":"Message"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"},"history":{"items":{"$ref":"#/components/schemas/ChatMessage"},"type":"array","maxItems":10,"title":"History"}},"type":"object","required":["message"],"title":"ChatRequest"},"CommentBody":{"properties":{"author_name":{"type":"string","maxLength":200,"minLength":1,"title":"Author Name"},"author_email":{"anyOf":[{"type":"string","maxLength":254},{"type":"null"}],"title":"Author Email"},"content":{"type":"string","maxLength":5000,"minLength":1,"title":"Content"}},"type":"object","required":["author_name","content"],"title":"CommentBody"},"CompoundEntry":{"properties":{"smiles":{"type":"string","title":"Smiles","description":"SMILES string"},"name":{"type":"string","title":"Name","description":"Optional compound name/ID","default":""}},"type":"object","required":["smiles"],"title":"CompoundEntry"},"ContactMessage":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"message":{"type":"string","title":"Message"}},"type":"object","required":["name","email","message"],"title":"ContactMessage"},"CreatePostBody":{"properties":{"title":{"type":"string","maxLength":500,"minLength":1,"title":"Title"},"slug":{"type":"string","maxLength":200,"minLength":1,"title":"Slug"},"content":{"type":"string","minLength":1,"title":"Content"},"category":{"type":"string","title":"Category","default":"discovery"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"author":{"type":"string","title":"Author","default":"SMA Research Platform"},"featured":{"type":"boolean","title":"Featured","default":false},"published":{"type":"boolean","title":"Published","default":true}},"type":"object","required":["title","slug","content"],"title":"CreatePostBody"},"CustomEditInput":{"properties":{"sequence":{"type":"string","title":"Sequence"},"position":{"type":"integer","title":"Position"},"alt_allele":{"type":"string","title":"Alt Allele"},"region":{"type":"string","title":"Region","default":"custom"},"description":{"type":"string","title":"Description","default":"Custom edit"}},"type":"object","required":["sequence","position","alt_allele"],"title":"CustomEditInput"},"DestroyRequest":{"properties":{"instance_id":{"type":"string","title":"Instance Id"}},"type":"object","required":["instance_id"],"title":"DestroyRequest"},"DiscoveryCampaignRequest":{"properties":{"scaffold":{"type":"string","title":"Scaffold","description":"Starting molecule scaffold (SMILES). Default: 4-AP.","default":"Nc1ccncc1"},"goal":{"type":"string","title":"Goal","description":"Natural language description of campaign goal.","default":"Find novel binding compounds with BBB permeability"},"max_candidates":{"type":"integer","maximum":200.0,"minimum":5.0,"title":"Max Candidates","description":"Maximum number of candidates to process.","default":50}},"type":"object","title":"DiscoveryCampaignRequest"},"DockInput":{"properties":{"compound_id":{"type":"string","title":"Compound Id","default":"custom"},"mw":{"type":"number","title":"Mw"},"logp":{"type":"number","title":"Logp"},"hbd":{"type":"integer","title":"Hbd","default":2},"hba":{"type":"integer","title":"Hba","default":4},"tpsa":{"type":"number","title":"Tpsa","default":60.0},"rotatable_bonds":{"type":"integer","title":"Rotatable Bonds","default":5},"aromatic_rings":{"type":"integer","title":"Aromatic Rings","default":2},"pocket":{"type":"string","title":"Pocket","default":"SMN2_SPLICE_SITE"},"bbb_permeable":{"type":"boolean","title":"Bbb Permeable","default":false},"pchembl":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pchembl"}},"type":"object","required":["mw","logp"],"title":"DockInput"},"DockRequest":{"properties":{"smiles":{"type":"string","title":"Smiles"},"target":{"type":"string","title":"Target","default":"SMN2"},"num_poses":{"type":"integer","title":"Num Poses","default":10},"pdb_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pdb Content"}},"type":"object","required":["smiles"],"title":"DockRequest"},"DrugCreate":{"properties":{"name":{"type":"string","title":"Name"},"brand_names":{"items":{"type":"string"},"type":"array","title":"Brand Names","default":[]},"drug_type":{"type":"string","title":"Drug Type","default":"small_molecule"},"mechanism":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mechanism"},"targets":{"items":{"type":"string"},"type":"array","title":"Targets","default":[]},"approval_status":{"type":"string","title":"Approval Status","default":"preclinical"},"approved_for":{"items":{"type":"string"},"type":"array","title":"Approved For","default":[]},"manufacturer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manufacturer"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","default":{}}},"type":"object","required":["name"],"title":"DrugCreate"},"DynamicDrugQuery":{"properties":{"drug_name":{"type":"string","title":"Drug Name"},"molecular_weight":{"type":"number","title":"Molecular Weight"},"logp":{"type":"number","title":"Logp"},"route":{"type":"string","title":"Route"},"drug_type":{"type":"string","title":"Drug Type","default":"unknown"},"mechanism":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mechanism"},"persist":{"type":"boolean","title":"Persist","default":false}},"type":"object","required":["drug_name","molecular_weight","logp","route"],"title":"DynamicDrugQuery"},"ESM2Request":{"properties":{"sequences":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sequences"},"target_symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Symbol"}},"type":"object","title":"ESM2Request","description":"ESM-2 protein embeddings."},"ESMfoldRequest":{"properties":{"sequence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sequence"},"target_symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Symbol"}},"type":"object","title":"ESMfoldRequest","description":"ESMfold fast structure prediction."},"EmbeddingBatch":{"properties":{"embeddings":{"items":{"$ref":"#/components/schemas/EmbeddingRecord"},"type":"array","title":"Embeddings"}},"type":"object","required":["embeddings"],"title":"EmbeddingBatch"},"EmbeddingRecord":{"properties":{"symbol":{"type":"string","title":"Symbol"},"uniprot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uniprot Id"},"sequence_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sequence Length"},"embedding_dim":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Embedding Dim"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},"type":"object","required":["symbol"],"title":"EmbeddingRecord"},"EvaluationRequest":{"properties":{"claim_id":{"type":"string","title":"Claim Id","description":"UUID of the claim being evaluated"},"gold_label":{"type":"string","pattern":"^(correct|incorrect|partial)$","title":"Gold Label","description":"Evaluation label: 'correct', 'incorrect', or 'partial'"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Optional reviewer notes"}},"type":"object","required":["claim_id","gold_label"],"title":"EvaluationRequest","description":"Request body for submitting a gold-standard evaluation."},"FunnelRunRequest":{"properties":{"n_generate":{"type":"integer","title":"N Generate","default":100000},"target":{"type":"string","title":"Target","default":"SMN2"}},"type":"object","title":"FunnelRunRequest"},"GenMolRequest":{"properties":{"scaffold_smiles":{"type":"string","title":"Scaffold Smiles","default":"Nc1ccncc1"},"num_molecules":{"type":"integer","title":"Num Molecules","default":50},"mode":{"type":"string","title":"Mode","default":"scaffold_decoration"}},"type":"object","title":"GenMolRequest"},"GenerateRequest":{"properties":{"n":{"type":"integer","maximum":1000000.0,"minimum":1.0,"title":"N","description":"Number of random SMILES to generate","default":10000},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed for reproducibility"}},"type":"object","title":"GenerateRequest"},"GpuJobCreate":{"properties":{"job_type":{"type":"string","title":"Job Type"},"status":{"type":"string","title":"Status","default":"pending"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"gpu_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gpu Type"},"cost_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cost Usd"},"results":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Results"}},"type":"object","required":["job_type"],"title":"GpuJobCreate"},"GuideDesignInput":{"properties":{"symbol":{"type":"string","title":"Symbol"},"sequence":{"type":"string","title":"Sequence"},"max_guides":{"type":"integer","title":"Max Guides","default":20}},"type":"object","required":["symbol","sequence"],"title":"GuideDesignInput"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HitInput":{"properties":{"smiles":{"type":"string","title":"Smiles"},"target":{"type":"string","title":"Target"},"docking_confidence":{"type":"number","title":"Docking Confidence","default":0.0}},"type":"object","required":["smiles","target"],"title":"HitInput"},"HitListInput":{"properties":{"hits":{"items":{"$ref":"#/components/schemas/HitInput"},"type":"array","title":"Hits"}},"type":"object","required":["hits"],"title":"HitListInput"},"InterventionCreate":{"properties":{"name":{"type":"string","title":"Name"},"modality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Modality"},"target_vmem_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Vmem State"},"mechanism":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mechanism"},"evidence_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence Level"},"feasibility":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Feasibility"},"sma_specific_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sma Specific Notes"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","default":{}}},"type":"object","required":["name"],"title":"InterventionCreate"},"MLProxyPredictRequest":{"properties":{"smiles":{"items":{"type":"string"},"type":"array","maxItems":100000,"minItems":1,"title":"Smiles","description":"List of SMILES strings to predict binding for"},"target":{"type":"string","title":"Target","description":"SMA target protein. One of: SMN2, SMN1, PLS3, STMN2, NCALD, UBA1, CORO1C","default":"SMN2"}},"type":"object","required":["smiles"],"title":"MLProxyPredictRequest"},"MLProxyScreenRequest":{"properties":{"target":{"type":"string","title":"Target","description":"SMA target protein. One of: SMN2, SMN1, PLS3, STMN2, NCALD, UBA1, CORO1C","default":"SMN2"},"top_k":{"type":"integer","maximum":10000.0,"minimum":10.0,"title":"Top K","description":"Number of top predicted binders to return","default":1000}},"type":"object","title":"MLProxyScreenRequest"},"MSARequest":{"properties":{"sequence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sequence"},"target_symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Symbol"},"databases":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Databases"}},"type":"object","title":"MSARequest","description":"MSA Search."},"MarkReadBody":{"properties":{"agent_name":{"type":"string","maxLength":100,"minLength":1,"title":"Agent Name"}},"type":"object","required":["agent_name"],"title":"MarkReadBody"},"OffTarget":{"properties":{"guide_sequence":{"type":"string","title":"Guide Sequence"},"chrom":{"type":"string","title":"Chrom"},"position":{"type":"integer","title":"Position"},"matched_sequence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matched Sequence"},"strand":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Strand"},"mismatches":{"type":"integer","title":"Mismatches","default":0}},"type":"object","required":["guide_sequence","chrom","position"],"title":"OffTarget"},"OffTargetBatch":{"properties":{"offtargets":{"items":{"$ref":"#/components/schemas/OffTarget"},"type":"array","title":"Offtargets"}},"type":"object","required":["offtargets"],"title":"OffTargetBatch"},"PostMessageBody":{"properties":{"agent_name":{"type":"string","maxLength":100,"minLength":1,"title":"Agent Name"},"message_type":{"type":"string","maxLength":50,"minLength":1,"title":"Message Type"},"title":{"type":"string","maxLength":500,"minLength":1,"title":"Title"},"content":{"type":"string","minLength":1,"title":"Content"},"targets":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Targets"},"priority":{"type":"string","pattern":"^(low|normal|high|critical)$","title":"Priority","default":"normal"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["agent_name","message_type","title","content"],"title":"PostMessageBody"},"PredictRequest":{"properties":{"smiles":{"type":"string","title":"Smiles","description":"SMILES string of the compound"},"target":{"type":"string","title":"Target","description":"SMA target protein. One of: SMN2, SMN1, PLS3, STMN2, NCALD, UBA1, CORO1C","default":"SMN2"}},"type":"object","required":["smiles"],"title":"PredictRequest"},"ProfileInput":{"properties":{"profile_name":{"type":"string","title":"Profile Name","description":"Profile identifier","default":"default"},"sma_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sma Type","description":"SMA type: type0, type1, type2, type3, type4, presymptomatic, unknown"},"smn2_copies":{"anyOf":[{"type":"integer","maximum":8.0,"minimum":0.0},{"type":"null"}],"title":"Smn2 Copies","description":"Number of SMN2 gene copies (0-8)"},"age_years":{"anyOf":[{"type":"integer","maximum":150.0,"minimum":0.0},{"type":"null"}],"title":"Age Years","description":"Current age in years"},"age_at_diagnosis_months":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Age At Diagnosis Months","description":"Age at SMA diagnosis in months"},"current_therapies":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Current Therapies","description":"List of current therapies (strings or {name, dose, start_date} objects)"},"therapy_history":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Therapy History","description":"List of past therapies (strings or {name, dose, start_date, end_date} objects)"},"functional_scores":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Functional Scores","description":"Functional assessment scores, e.g. {HFMSE: 42, RULM: 28}"},"biomarkers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Biomarkers","description":"Tracked biomarkers, e.g. {NfL: {value: 12.5, unit: 'pg/mL', date: '2026-01'}}"},"genetic_modifiers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Genetic Modifiers","description":"Modifier gene status, e.g. {PLS3: 'high', NCALD: 'low'}"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Free-text clinical notes"}},"type":"object","title":"ProfileInput","description":"Patient profile input — all fields optional except profile_name."},"RNAStructureRequest":{"properties":{"rna_sequence":{"type":"string","title":"Rna Sequence"},"name":{"type":"string","title":"Name","default":"SMN2_ISS_N1"}},"type":"object","required":["rna_sequence"],"title":"RNAStructureRequest"},"SearchMode":{"type":"string","enum":["semantic","keyword","hybrid"],"title":"SearchMode"},"SequenceDesignRequest":{"properties":{"backbone_pdb":{"type":"string","title":"Backbone Pdb"},"num_sequences":{"type":"integer","title":"Num Sequences","default":10},"temperature":{"type":"number","title":"Temperature","default":0.1},"fixed_residues":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Fixed Residues"}},"type":"object","required":["backbone_pdb"],"title":"SequenceDesignRequest","description":"ProteinMPNN sequence design."},"SimulationInput":{"properties":{"drugs":{"items":{"type":"string"},"type":"array","title":"Drugs"}},"type":"object","required":["drugs"],"title":"SimulationInput"},"SmilesInput":{"properties":{"smiles":{"type":"string","title":"Smiles"}},"type":"object","required":["smiles"],"title":"SmilesInput"},"SpliceScore":{"properties":{"chrom":{"type":"string","title":"Chrom"},"pos":{"type":"integer","title":"Pos"},"ref":{"type":"string","title":"Ref"},"alt":{"type":"string","title":"Alt"},"ds_ag":{"type":"number","title":"Ds Ag","default":0.0},"ds_al":{"type":"number","title":"Ds Al","default":0.0},"ds_dg":{"type":"number","title":"Ds Dg","default":0.0},"ds_dl":{"type":"number","title":"Ds Dl","default":0.0},"max_delta":{"type":"number","title":"Max Delta","default":0.0}},"type":"object","required":["chrom","pos","ref","alt"],"title":"SpliceScore"},"SpliceScoreBatch":{"properties":{"scores":{"items":{"$ref":"#/components/schemas/SpliceScore"},"type":"array","title":"Scores"}},"type":"object","required":["scores"],"title":"SpliceScoreBatch"},"StructureRequest":{"properties":{"protein_sequence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Protein Sequence"},"rna_sequence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rna Sequence"},"ligand_smiles":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ligand Smiles"}},"type":"object","title":"StructureRequest"},"TargetCreate":{"properties":{"symbol":{"type":"string","title":"Symbol"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"target_type":{"type":"string","title":"Target Type","default":"gene"},"organism":{"type":"string","title":"Organism","default":"Homo sapiens"},"identifiers":{"additionalProperties":true,"type":"object","title":"Identifiers","default":{}},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["symbol"],"title":"TargetCreate"},"TemporalInput":{"properties":{"drugs":{"items":{"type":"string"},"type":"array","title":"Drugs"},"duration_months":{"type":"integer","title":"Duration Months","default":12},"step_months":{"type":"integer","title":"Step Months","default":1}},"type":"object","required":["drugs"],"title":"TemporalInput"},"UpdatePostBody":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"author":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author"},"featured":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Featured"},"published":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Published"}},"type":"object","title":"UpdatePostBody"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VirtualScreeningRequest":{"properties":{"scaffold_smiles":{"type":"string","title":"Scaffold Smiles","description":"Starting molecule (default: 4-AP)","default":"Nc1ccncc1"},"target":{"type":"string","title":"Target","description":"SMA target to dock against","default":"SMN2"},"n_generate":{"type":"integer","maximum":500.0,"minimum":10.0,"title":"N Generate","description":"Number of molecules to generate","default":50},"pdb_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pdb Content","description":"PDB content for docking target"}},"type":"object","title":"VirtualScreeningRequest"},"sma_platform__api__routes__binder_design__BinderDesignRequest":{"properties":{"target":{"type":"string","title":"Target","description":"SMA target protein name","default":"SMN2"},"n_designs":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"N Designs","description":"Number of binder designs","default":10},"pdb_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pdb Content","description":"Custom PDB content"}},"type":"object","title":"BinderDesignRequest"},"sma_platform__api__routes__diffdock_local__CompoundInput":{"properties":{"name":{"type":"string","title":"Name"},"sdf_content":{"type":"string","title":"Sdf Content"}},"type":"object","required":["name","sdf_content"],"title":"CompoundInput"},"sma_platform__api__routes__nvidia_nims__BinderDesignRequest":{"properties":{"target_pdb":{"type":"string","title":"Target Pdb"},"hotspot_residues":{"items":{"type":"string"},"type":"array","title":"Hotspot Residues"},"binder_length":{"type":"integer","title":"Binder Length","default":100},"num_designs":{"type":"integer","title":"Num Designs","default":10}},"type":"object","required":["target_pdb","hotspot_residues"],"title":"BinderDesignRequest","description":"RFdiffusion binder design."},"sma_platform__api__routes__rna_binding__CompoundInput":{"properties":{"name":{"type":"string","title":"Name"},"mw":{"type":"number","title":"Mw"},"logp":{"type":"number","title":"Logp"},"hba":{"type":"integer","title":"Hba","default":5},"hbd":{"type":"integer","title":"Hbd","default":2},"aromatic_rings":{"type":"integer","title":"Aromatic Rings","default":3},"rotatable_bonds":{"type":"integer","title":"Rotatable Bonds","default":4}},"type":"object","required":["name","mw","logp"],"title":"CompoundInput"}}}}