{"openapi":"3.1.0","info":{"title":"AquaVir-KB API","description":"A comprehensive knowledge base of aquatic invertebrate viruses across 5 phyla (Arthropoda, Mollusca, Cnidaria, Echinodermata, Porifera), integrating release-filtered isolate records, genomic annotations, protein structures (AlphaFold / ESMFold / PDB), enrichment data (KEGG, InterPro, UniProt, STRING, PRIDE, ViralZone), literature mining (Europe PMC, bioRxiv), and ecological observations (GBIF, OBIS). Exploratory prediction tables, when present, are not manual-reviewed evidence and are not exposed as validated claims.\n\nThis API powers the AquaVir-KB web frontend and is also available for scripting, notebooks, and third-party integrations.","contact":{"name":"AquaVir-KB Team","url":"https://aquavir-kb.org/"},"license":{"name":"Creative Commons Attribution 4.0 International (CC BY 4.0)","url":"https://creativecommons.org/licenses/by/4.0/"},"version":"2.0.0"},"paths":{"/api/health":{"get":{"tags":["Stats"],"summary":"Health Check","description":"Health-check endpoint reporting database connectivity, table record\ncounts, and server uptime.  Intended for monitoring / load-balancer\nprobes and quick sanity checks from the frontend.","operationId":"health_check_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/sync/status":{"get":{"tags":["Sync"],"summary":"Get Sync Status","description":"Return the latest sync status for automation checks.","operationId":"get_sync_status_api_sync_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/sync/history":{"get":{"tags":["Sync"],"summary":"Get Sync History","description":"Return recent sync history entries.","operationId":"get_sync_history_api_sync_history_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sync/notifications":{"get":{"tags":["Sync"],"summary":"Get Notification History","description":"Return recent notification delivery attempts.","operationId":"get_notification_history_api_sync_notifications_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stats":{"get":{"tags":["Stats"],"summary":"Get Stats","description":"Return aggregated database statistics for the homepage dashboard.\n\nThis endpoint returns counts at THREE scopes, all clearly labelled:\n\n* ``strict_target_*`` -- scoped to ``analysis_strict_target_isolates``\n  (release-filtered records; not necessarily manual-reviewed).\n* ``target_*`` -- scoped to ``analysis_target_isolates``\n  (broad target set; excludes only serious conflicts).\n* ``total_*`` -- raw table counts (the full database).\n\nBackward-compatible aliases: ``viral_isolates``, ``aquatic_invertebrate_hosts`` (formerly ``crustacean_hosts``),\nand ``virus_species`` all alias the *strict_target_* values.\n\nThe ``scope_note`` field explains the difference for reviewers.","operationId":"get_stats_api_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/quality/metadata":{"get":{"tags":["Stats"],"summary":"Get Metadata Quality","description":"Summarize metadata completeness and curation backlog.","operationId":"get_metadata_quality_api_quality_metadata_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/hosts":{"get":{"tags":["Core Data"],"summary":"Get Hosts","description":"Return host autocomplete records.","operationId":"get_hosts_api_hosts_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/hosts/by-phylum":{"get":{"tags":["Core Data"],"summary":"Get Hosts By Phylum","description":"Return virus/host statistics grouped by host phylum.","operationId":"get_hosts_by_phylum_api_hosts_by_phylum_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{"items":{"$ref":"#/components/schemas/HostPhylumStats"},"type":"array","title":"Response Get Hosts By Phylum Api Hosts By Phylum Get"}}}}}}},"/api/expansion/status":{"get":{"tags":["Stats"],"summary":"Get Expansion Status","description":"Return expansion progress tracking metrics.","operationId":"get_expansion_status_api_expansion_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/ExpansionStats"}}}}}}},"/api/infection-records":{"get":{"tags":["Core Data"],"summary":"Get Infection Records","description":"Return virus-host infection/association records, optionally filtered by phylum.","operationId":"get_infection_records_api_infection_records_get","parameters":[{"name":"phylum","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by host phylum","title":"Phylum"},"description":"Filter by host phylum"}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InfectionRecordResponse"},"title":"Response Get Infection Records Api Infection Records Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/hosts/detail":{"get":{"tags":["Core Data"],"summary":"Get Hosts Detail","description":"Return detailed host species information, optionally filtered.","operationId":"get_hosts_detail_api_hosts_detail_get","parameters":[{"name":"phylum","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by host phylum","title":"Phylum"},"description":"Filter by host phylum"},{"name":"scope_status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by scope status","title":"Scope Status"},"description":"Filter by scope status"}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/HostDetailResponse"},"title":"Response Get Hosts Detail Api Hosts Detail Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/suggestions":{"get":{"tags":["Core Data"],"summary":"Get Suggestions","description":"Return lightweight suggestions for homepage auto-complete.","operationId":"get_suggestions_api_suggestions_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"type":"string","pattern":"^(virus|host)$","default":"virus","title":"Kind"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Auto-complete query","title":"Q"},"description":"Auto-complete query"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"default":8,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search/facets":{"get":{"tags":["Core Data"],"summary":"Get Search Facets","description":"Return aggregated facet counts for search filter panels (phylum, family, completeness).","operationId":"get_search_facets_api_search_facets_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search":{"get":{"tags":["Core Data"],"summary":"Search Viruses","description":"Search virus records with multi-dimensional filtering.\n\nSupports combined keyword search (virus name, accession, canonical name),\nhost species, country, sequence completeness, and collection year range.\nPaginated with total count.  When no keyword is provided, returns all\nrelease-filtered strict-target isolates sorted by accession.\n\nQuery parameters serve as filters; all are optional.  When multiple\nfilters are supplied they are combined with AND logic.\n\nExample:\n    GET /api/search?q=white+spot&host=Penaeus+vannamei&page=1&page_size=10\n    -> {\"total\": 25, \"page\": 1, \"page_size\": 10, \"results\": [...]}","operationId":"search_viruses_api_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search keyword (virus name, accession, canonical name). Supports FTS if available.","title":"Q"},"description":"Search keyword (virus name, accession, canonical name). Supports FTS if available."},{"name":"host","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by aquatic invertebrate host scientific name","title":"Host"},"description":"Filter by aquatic invertebrate host scientific name"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by collection country","title":"Country"},"description":"Filter by collection country"},{"name":"completeness","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sequence completeness: complete_genome, partial_sequence, gene_fragment, EST","title":"Completeness"},"description":"Sequence completeness: complete_genome, partial_sequence, gene_fragment, EST"},{"name":"year_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Earliest collection year (inclusive)","title":"Year From"},"description":"Earliest collection year (inclusive)"},{"name":"year_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Latest collection year (inclusive)","title":"Year To"},"description":"Latest collection year (inclusive)"},{"name":"phylum","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by host phylum (Arthropoda, Mollusca, Cnidaria, etc.)","title":"Phylum"},"description":"Filter by host phylum (Arthropoda, Mollusca, Cnidaria, etc.)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Result page number (1-indexed)","default":1,"title":"Page"},"description":"Result page number (1-indexed)"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of results per page","default":20,"title":"Page Size"},"description":"Number of results per page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/virus/{accession}":{"get":{"tags":["Core Data"],"summary":"Get Virus Detail","description":"Retrieve full details for a single virus isolate by NCBI accession.\n\nReturns the complete isolate record joined with its canonical virus\nname (from virus_master), host information, sample collection\nmetadata (country, province, city, coordinates, date), and linked\nliterature reference.  Also includes:\n  - NCBI nucleotide URL for the accession\n  - Whether a local FASTA sequence file is available\n  - Up to 10 virulence evidence records\n  - Up to 10 temperature evidence records\n\nParameters\n----------\naccession : str\n    NCBI / INSDC sequence accession (e.g. \"AF332093\").\n\nRaises 404 if the accession is not found in the release-filtered strict-target set.\n\nExample:\n    GET /api/virus/AF332093\n    -> {\"accession\": \"AF332093\", \"virus_name\": \"WSSV\", ...}","operationId":"get_virus_detail_api_virus__accession__get","parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/virus/{accession}/sequence":{"get":{"tags":["Core Data"],"summary":"Get Virus Sequence","description":"Return cached FASTA sequence for one accession.","operationId":"get_virus_sequence_api_virus__accession__sequence_get","parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/virus/{accession}/proteins":{"get":{"tags":["Proteins"],"summary":"Get Virus Proteins","description":"Return annotated protein/CDS records for one virus isolate.","operationId":"get_virus_proteins_api_virus__accession__proteins_get","parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proteins/search":{"get":{"tags":["Proteins"],"summary":"Search Proteins","description":"Search protein annotations across all virus species.\n\nSupports filtering by protein name / gene symbol (keyword search),\nvirus species, and functional category.  Returns paginated results\nwith structure availability flags.\n\nParameters\n----------\nq : str\n    Keyword to match against protein_name, gene_symbol, or protein_accession.\nvirus : str\n    Canonical virus species name to narrow results.\ncategory : str\n    Functional category filter (e.g. \"structural\", \"replication\").\npage : int\n    Page number (1-indexed), default 1.\npage_size : int\n    Results per page (1-100), default 20.\n\nExample:\n    GET /api/proteins/search?q=VP28&virus=WSSV&page=1&page_size=10\n    -> {\"total\": 3, \"page\": 1, \"page_size\": 10, \"results\": [...]}","operationId":"search_proteins_api_proteins_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Protein keyword","default":"","title":"Q"},"description":"Protein keyword"},{"name":"virus","in":"query","required":false,"schema":{"type":"string","description":"Virus name filter","default":"","title":"Virus"},"description":"Virus name filter"},{"name":"category","in":"query","required":false,"schema":{"type":"string","description":"Functional category filter","default":"","title":"Category"},"description":"Functional category filter"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/PaginatedProteinResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/core_genes":{"get":{"tags":["Proteins"],"summary":"Get Core Genes","description":"List core / conserved gene analysis across virus species.\n\nReturns genes grouped by virus species with conservation statistics.\nCore genes are defined as those with >= 80% conservation rate.\n\nParameters\n----------\nvirus : str\n    Optional species name filter.\nmin_conservation : float\n    Minimum conservation rate percentage (0-100), default 50.\n\nExample:\n    GET /api/core_genes?virus=WSSV&min_conservation=70\n    -> {\"total_genes\": 15, \"total_species\": 1, \"by_virus\": [...], \"genes\": [...]}","operationId":"get_core_genes_api_core_genes_get","parameters":[{"name":"virus","in":"query","required":false,"schema":{"type":"string","description":"Filter by canonical virus species name","default":"","title":"Virus"},"description":"Filter by canonical virus species name"},{"name":"min_conservation","in":"query","required":false,"schema":{"type":"number","maximum":100.0,"minimum":0.0,"description":"Minimum conservation rate (%) threshold","default":50.0,"title":"Min Conservation"},"description":"Minimum conservation rate (%) threshold"}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stats/proteins":{"get":{"tags":["Stats"],"summary":"Get Protein Stats","description":"Return protein annotation summary statistics.","operationId":"get_protein_stats_api_stats_proteins_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/rdrp":{"get":{"tags":["RDRP"],"summary":"Get Rdrp List","description":"List RNA-dependent RNA polymerase (RDRP) annotations across all species.\n\nReturns paginated RDRP records with protein details, parent isolate\naccession, and a flag indicating whether a 3D structure is available.\n\nParameters\n----------\nspecies : str\n    Optional filter to restrict results to a single virus species.\npage : int\n    Page number (1-indexed), default 1.\npage_size : int\n    Results per page (1-200), default 20.\n\nExample:\n    GET /api/rdrp?species=WSSV&page=1&page_size=20\n    -> {\"total\": 45, \"page\": 1, \"page_size\": 20, \"results\": [...]}","operationId":"get_rdrp_list_api_rdrp_get","parameters":[{"name":"species","in":"query","required":false,"schema":{"type":"string","description":"Filter by canonical virus species name","default":"","title":"Species"},"description":"Filter by canonical virus species name"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number (1-indexed)","default":1,"title":"Page"},"description":"Page number (1-indexed)"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Results per page (max 200)","default":20,"title":"Page Size"},"description":"Results per page (max 200)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{"$ref":"#/components/schemas/PaginatedRDRPResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rdrp/species":{"get":{"tags":["RDRP"],"summary":"Get Rdrp Species","description":"List all virus species that have at least one RDRP annotation.\n\nReturns species name, genome type, RDRP count, and isolate count,\nsorted by RDRP count descending.\n\nExample:\n    GET /api/rdrp/species\n    -> [{\"species\": \"WSSV\", \"genome_type\": \"dsDNA\", \"rdrp_count\": 1, \"isolate_count\": 45}, ...]","operationId":"get_rdrp_species_api_rdrp_species_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/rdrp/blast/status":{"get":{"tags":["RDRP"],"summary":"Get Rdrp Blast Status","description":"Return local BLAST+ availability and RDRP database status.","operationId":"get_rdrp_blast_status_api_rdrp_blast_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/rdrp/blast/build":{"post":{"tags":["RDRP"],"summary":"Build Rdrp Blast Database Api","description":"Export RDRP proteins and build a local NCBI BLAST protein database.","operationId":"build_rdrp_blast_database_api_api_rdrp_blast_build_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rdrp/blast":{"post":{"tags":["RDRP"],"summary":"Blast Rdrp Sequence","description":"Run local BLASTP/BLASTX against the built-in RDRP protein database.","operationId":"blast_rdrp_sequence_api_rdrp_blast_post","parameters":[{"name":"program","in":"query","required":false,"schema":{"type":"string","pattern":"^(blastp|blastx)$","default":"blastp","title":"Program"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"evalue","in":"query","required":false,"schema":{"type":"number","exclusiveMinimum":0.0,"default":1e-05,"title":"Evalue"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rdrp/search_sequence":{"post":{"tags":["RDRP"],"summary":"Search Rdrp By Sequence","description":"Search database RDRP proteins by amino-acid k-mer similarity.","operationId":"search_rdrp_by_sequence_api_rdrp_search_sequence_post","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"k","in":"query","required":false,"schema":{"type":"integer","maximum":8,"minimum":3,"default":5,"title":"K"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rdrp/{accession}":{"get":{"tags":["RDRP"],"summary":"Get Rdrp By Accession","description":"Return RDRP protein records linked to a nucleotide accession.","operationId":"get_rdrp_by_accession_api_rdrp__accession__get","parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rdrp/export/{species}":{"get":{"tags":["RDRP"],"summary":"Export Rdrp Fasta Api","description":"API endpoint.","operationId":"export_rdrp_fasta_api_api_rdrp_export__species__get","parameters":[{"name":"species","in":"path","required":true,"schema":{"type":"string","title":"Species"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stats/sequences":{"get":{"tags":["Stats"],"summary":"Get Sequence Stats","description":"API endpoint.","operationId":"get_sequence_stats_api_stats_sequences_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/stats_by_country":{"get":{"tags":["Stats"],"summary":"Get Stats By Country Legacy","description":"Compatibility route used by the map template.","operationId":"get_stats_by_country_legacy_api_stats_by_country_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/collection_points":{"get":{"tags":["Core Data"],"summary":"Get Collection Points","description":"Return exact map points by default. Inferred centroids require opt-in.","operationId":"get_collection_points_api_collection_points_get","parameters":[{"name":"include_inferred","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Inferred"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/timeline":{"get":{"tags":["Core Data"],"summary":"Get Timeline","description":"API endpoint.","operationId":"get_timeline_api_timeline_get","parameters":[{"name":"by_virus","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"By Virus"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/top_viruses":{"get":{"tags":["Stats"],"summary":"Get Top Viruses","description":"Return the most frequent virus names.","operationId":"get_top_viruses_api_top_viruses_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}},{"name":"filter_noise","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Filter Noise"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/top_hosts":{"get":{"tags":["Stats"],"summary":"Get Top Hosts","description":"Return the most frequent host names.","operationId":"get_top_hosts_api_top_hosts_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export":{"get":{"tags":["Downloads"],"summary":"Export Search","description":"API endpoint.","operationId":"export_search_api_export_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"host","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"completeness","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completeness"}},{"name":"year_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Year From"}},{"name":"year_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Year To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/virulence":{"get":{"tags":["Core Data"],"summary":"Get Virulence Profiles","description":"Return manually reviewed virulence/pathogenicity evidence records (paginated).","operationId":"get_virulence_profiles_api_virulence_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":1000,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/temperature":{"get":{"tags":["Core Data"],"summary":"Get Temperature Profiles","description":"Return manually reviewed temperature evidence records (paginated).","operationId":"get_temperature_profiles_api_temperature_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":1000,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stats/genomes":{"get":{"tags":["Stats"],"summary":"Get Genome Stats","description":"Return genome summary distributions.","operationId":"get_genome_stats_api_stats_genomes_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/phylogeny":{"get":{"tags":["Core Data"],"summary":"Get Phylogeny Tree","description":"Return a placeholder phylogeny response when no reviewed tree is available.","operationId":"get_phylogeny_tree_api_phylogeny_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/network":{"get":{"tags":["Core Data"],"summary":"Get Host Virus Network","description":"Return host-virus links from release-filtered strict-target records.","operationId":"get_host_virus_network_api_network_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/download/{filename}":{"get":{"tags":["Downloads"],"summary":"Download File","description":"Download a generated public file.","operationId":"download_file_api_download__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/downloads/{path}":{"get":{"tags":["Downloads"],"summary":"Download Public Asset","description":"Backward-compatible public download route with an explicit allowlist.","operationId":"download_public_asset_downloads__path__get","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stats/province":{"get":{"tags":["Stats"],"summary":"Get Stats By Province","description":"Return province-level counts from release-filtered geography fields.","operationId":"get_stats_by_province_api_stats_province_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"type":"string","default":"China","title":"Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stats_by_province":{"get":{"tags":["Stats"],"summary":"Get Stats By Province Legacy","description":"Compatibility route used by the map template.","operationId":"get_stats_by_province_legacy_api_stats_by_province_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"type":"string","default":"China","title":"Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/families":{"get":{"tags":["Core Data"],"summary":"Get Families","description":"Return taxonomic families represented in strict target isolates.","operationId":"get_families_api_families_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/family/{family_name}":{"get":{"tags":["Pages"],"summary":"Family Page","description":"Render family summary page.","operationId":"family_page_family__family_name__get","parameters":[{"name":"family_name","in":"path","required":true,"schema":{"type":"string","title":"Family Name"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/family/{family_name}":{"get":{"tags":["Core Data"],"summary":"Get Family Detail","description":"Return summary statistics for a family.","operationId":"get_family_detail_api_family__family_name__get","parameters":[{"name":"family_name","in":"path","required":true,"schema":{"type":"string","title":"Family Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/family/{family_name}/genome_structure":{"get":{"tags":["Core Data"],"summary":"Get Genome Structure","description":"Return genome protein coordinates for a family.","operationId":"get_genome_structure_api_family__family_name__genome_structure_get","parameters":[{"name":"family_name","in":"path","required":true,"schema":{"type":"string","title":"Family Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/phylogeny/families":{"get":{"tags":["Core Data"],"summary":"Get Phylogeny Families","description":"Return families eligible for phylogeny display.","operationId":"get_phylogeny_families_api_phylogeny_families_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/stats/completeness":{"get":{"tags":["Stats"],"summary":"Get Completeness Heatmap","description":"Return metadata completeness by family.","operationId":"get_completeness_heatmap_api_stats_completeness_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/stats/completeness_release":{"get":{"tags":["Stats"],"summary":"Get Release Completeness Heatmap","description":"Return release-quality metadata completeness based on analysis views.","operationId":"get_release_completeness_heatmap_api_stats_completeness_release_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/status":{"get":{"tags":["Stats"],"summary":"Get Api Status","description":"Return API/database status information.","operationId":"get_api_status_api_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/":{"get":{"tags":["Pages"],"summary":"Serve Homepage","description":"Render the database homepage.","operationId":"serve_homepage__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/viruses":{"get":{"tags":["Pages"],"summary":"Serve Viruses Browse","description":"Render virus browse page with filters.","operationId":"serve_viruses_browse_viruses_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","default":"canonical_name","title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","default":"asc","title":"Sort Order"}},{"name":"family","in":"query","required":false,"schema":{"type":"string","title":"Family"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Per Page"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/proteins":{"get":{"tags":["Pages"],"summary":"Serve Proteins Redirect","description":"Redirect /proteins to /stats (protein stats are shown there).","operationId":"serve_proteins_redirect_proteins_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/hosts":{"get":{"tags":["Pages"],"summary":"Serve Hosts Browse","description":"Render host browse page with filters.","operationId":"serve_hosts_browse_hosts_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/search":{"get":{"tags":["Pages"],"summary":"Serve Search","description":"Render the searchable isolate table.","operationId":"serve_search_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"host","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host"}},{"name":"family","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Family"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"completeness","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completeness"}},{"name":"year_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Year From"}},{"name":"year_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Year To"}},{"name":"phylum","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phylum"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/virus/{accession}":{"get":{"tags":["Pages"],"summary":"Serve Virus Detail","description":"API endpoint.","operationId":"serve_virus_detail_virus__accession__get","parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stats":{"get":{"tags":["Pages"],"summary":"Serve Stats","description":"Render the statistics page.","operationId":"serve_stats_stats_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/map":{"get":{"tags":["Pages"],"summary":"Serve Map","description":"Render the geographic map page.","operationId":"serve_map_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/network":{"get":{"tags":["Pages"],"summary":"Serve Network","description":"Render the host-virus network page.","operationId":"serve_network_network_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/phylogeny":{"get":{"tags":["Pages"],"summary":"Serve Phylogeny","description":"Render the phylogeny page.","operationId":"serve_phylogeny_phylogeny_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/rdrp":{"get":{"tags":["Pages"],"summary":"Serve Rdrp","description":"Render the RDRP page.","operationId":"serve_rdrp_rdrp_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/download":{"get":{"tags":["Pages"],"summary":"Serve Download","description":"Render the download page.","operationId":"serve_download_download_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/host/{host_id}":{"get":{"tags":["Pages"],"summary":"Serve Host Detail","description":"Render host detail page.","operationId":"serve_host_detail_host__host_id__get","parameters":[{"name":"host_id","in":"path","required":true,"schema":{"type":"integer","title":"Host Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enrichment/status":{"get":{"tags":["Enrichment"],"summary":"Get Enrichment Status","description":"Get source-derived enrichment index counts across external sources.","operationId":"get_enrichment_status_api_enrichment_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/enrichment/kegg":{"get":{"tags":["Enrichment"],"summary":"Get Kegg Annotations","description":"Get source-derived KEGG annotations for strict-release viral proteins.","operationId":"get_kegg_annotations_api_enrichment_kegg_get","parameters":[{"name":"protein_id","in":"query","required":false,"schema":{"type":"integer","title":"Protein Id"}},{"name":"ec_number","in":"query","required":false,"schema":{"type":"string","title":"Ec Number"}},{"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; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enrichment/kegg/pathways":{"get":{"tags":["Enrichment"],"summary":"Get Kegg Pathways","description":"Get source-derived KEGG pathway index with KO counts.","operationId":"get_kegg_pathways_api_enrichment_kegg_pathways_get","parameters":[{"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; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enrichment/viralzone":{"get":{"tags":["Enrichment"],"summary":"Get Viralzone Families","description":"Get ViralZone family factsheets.","operationId":"get_viralzone_families_api_enrichment_viralzone_get","parameters":[{"name":"family_name","in":"query","required":false,"schema":{"type":"string","title":"Family Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enrichment/interpro":{"get":{"tags":["Enrichment"],"summary":"Get Interpro Annotations","description":"Get source-derived InterPro domain annotations.","operationId":"get_interpro_annotations_api_enrichment_interpro_get","parameters":[{"name":"uniprot_id","in":"query","required":false,"schema":{"type":"string","title":"Uniprot Id"}},{"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; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enrichment/geo-sra":{"get":{"tags":["Enrichment"],"summary":"Get Geo Sra Datasets","description":"Get GEO/SRA transcriptomics datasets.","operationId":"get_geo_sra_datasets_api_enrichment_geo_sra_get","parameters":[{"name":"virus_name","in":"query","required":false,"schema":{"type":"string","title":"Virus Name"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enrichment/gbif":{"get":{"tags":["Enrichment"],"summary":"Get Gbif Occurrences","description":"Get source-derived GBIF host occurrence context for strict-release hosts.","operationId":"get_gbif_occurrences_api_enrichment_gbif_get","parameters":[{"name":"host_name","in":"query","required":false,"schema":{"type":"string","title":"Host Name"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enrichment/europe-pmc":{"get":{"tags":["Enrichment"],"summary":"Get Europe Pmc Literature","description":"Get Europe PMC enriched literature.","operationId":"get_europe_pmc_literature_api_enrichment_europe_pmc_get","parameters":[{"name":"pmid","in":"query","required":false,"schema":{"type":"string","title":"Pmid"}},{"name":"match_status","in":"query","required":false,"schema":{"type":"string","title":"Match Status"}},{"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; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enrichment/pride":{"get":{"tags":["Enrichment"],"summary":"Get Pride Datasets","description":"Get PRIDE proteomics datasets.","operationId":"get_pride_datasets_api_enrichment_pride_get","parameters":[{"name":"virus_name","in":"query","required":false,"schema":{"type":"string","title":"Virus Name"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/protein/{protein_id}/structure":{"get":{"tags":["Proteins"],"summary":"Get Protein Structure","description":"Retrieve 3D structure data for a specific protein.\n\nQueries UniProt-derived structures (AlphaFold DB, PDB) and locally\npredicted structures (ESMFold).  Also finds structures linked via\nsequence clusters (viral_proteins_nr).  Returns the best structure\n(highest pLDDT) alongside all available structures grouped by source.\n\nParameters\n----------\nprotein_id : int\n    Internal protein ID (primary key of viral_proteins).\n\nRaises 404 if the protein is not found.\n\nExample:\n    GET /api/protein/42/structure\n    -> {\"status\": \"success\", \"protein_id\": 42, \"uniprot_structures\": [...], ...}","operationId":"get_protein_structure_api_protein__protein_id__structure_get","parameters":[{"name":"protein_id","in":"path","required":true,"schema":{"type":"integer","title":"Protein Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/structure/predict":{"post":{"tags":["Proteins"],"summary":"Predict Structure","description":"Submit a protein sequence for ESMFold structure prediction.\n\nThe prediction runs asynchronously in a background thread.\nPoll GET /api/structure/predict/{task_id} for results.\n\nParameters\n----------\nsequence : str\n    Amino-acid sequence (one-letter code) to predict.\nsequence_id : str\n    Optional identifier for the sequence (e.g. \"VP28_WSSV\").\n\nExample:\n    POST /api/structure/predict\n    {\"sequence\": \"MGRV...\", \"sequence_id\": \"test\"}\n    -> {\"status\": \"queued\", \"task_id\": \"550e8400-...\", \"message\": \"...\"}","operationId":"predict_structure_api_structure_predict_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_predict_structure_api_structure_predict_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/structure/predict/{task_id}":{"get":{"tags":["Proteins"],"summary":"Get Structure Prediction Status","description":"Return the status of an async ESMFold structure prediction task.","operationId":"get_structure_prediction_status_api_structure_predict__task_id__get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/structure/pdb/{structure_id}":{"get":{"tags":["Downloads"],"summary":"Get Structure Pdb","description":"Retrieve raw PDB file content for the 3D viewer.\n\nFetches the PDB data for either an ESMFold prediction or an\nAlphaFold / PDB structure by its internal ID.\n\nParameters\n----------\nstructure_id : int\n    Internal structure record ID.\ntype : str\n    Structure source type: \"esmfold\" (default) or \"alphafold\".\n\nReturns the PDB content as a JSON-wrapped string, or detail if\nthe file is available locally.\n\nExample:\n    GET /api/structure/pdb/5?type=esmfold\n    -> {\"status\": \"success\", \"structure_id\": 5, \"pdb_content\": \"ATOM ...\"}","operationId":"get_structure_pdb_api_structure_pdb__structure_id__get","parameters":[{"name":"structure_id","in":"path","required":true,"schema":{"type":"integer","title":"Structure Id"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"esmfold","title":"Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/structure/stats":{"get":{"tags":["Stats"],"summary":"Get Structure Stats","description":"Return protein structure coverage statistics.\n\nProvides counts of total proteins, AlphaFold structures,\nESMFold predictions, proteins with any structure, coverage\npercentage, and the pLDDT distribution for ESMFold models\n(very_high >= 90, high 70-90, medium 50-70, low < 50).\n\nExample:\n    GET /api/structure/stats\n    -> {\"status\": \"success\", \"total_proteins\": 4520, ...}","operationId":"get_structure_stats_api_structure_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}}}}},"/api/enrichment/alphafold":{"get":{"tags":["Enrichment"],"summary":"Get Alphafold Structures","description":"Get predicted protein structures (AlphaFold DB + ESMFold via protein_structures).","operationId":"get_alphafold_structures_api_enrichment_alphafold_get","parameters":[{"name":"uniprot_id","in":"query","required":false,"schema":{"type":"string","title":"Uniprot Id"}},{"name":"min_confidence","in":"query","required":false,"schema":{"type":"number","title":"Min Confidence"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":100,"title":"Limit"}},{"name":"source","in":"query","required":false,"schema":{"type":"string","title":"Source"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enrichment/string":{"get":{"tags":["Enrichment"],"summary":"Get String Interactions","description":"Get STRING protein interaction data.","operationId":"get_string_interactions_api_enrichment_string_get","parameters":[{"name":"protein","in":"query","required":false,"schema":{"type":"string","title":"Protein"}},{"name":"min_score","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Min Score"}},{"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; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enrichment/biorxiv":{"get":{"tags":["Enrichment"],"summary":"Get Biorxiv Preprints","description":"Get bioRxiv/medRxiv preprints.","operationId":"get_biorxiv_preprints_api_enrichment_biorxiv_get","parameters":[{"name":"relevant_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Relevant Only"}},{"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; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enrichment/host-ecology":{"get":{"tags":["Enrichment"],"summary":"Get Host Ecology","description":"Get host species ecological traits and biology profiles.","operationId":"get_host_ecology_api_enrichment_host_ecology_get","parameters":[{"name":"scientific_name","in":"query","required":false,"schema":{"type":"string","title":"Scientific Name"}},{"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; charset=utf-8":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/enrichment":{"get":{"tags":["Pages"],"summary":"Serve Enrichment Hub","description":"API endpoint.","operationId":"serve_enrichment_hub_enrichment_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/enrichment/domains":{"get":{"tags":["Pages"],"summary":"Serve Domains Page","description":"API endpoint.","operationId":"serve_domains_page_enrichment_domains_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/enrichment/structures":{"get":{"tags":["Pages"],"summary":"Serve Structures Page","description":"Render protein structure enrichment page.","operationId":"serve_structures_page_enrichment_structures_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/enrichment/ppi":{"get":{"tags":["Pages"],"summary":"Serve Ppi Page","description":"API endpoint.","operationId":"serve_ppi_page_enrichment_ppi_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/enrichment/literature":{"get":{"tags":["Pages"],"summary":"Serve Literature Page","description":"API endpoint.","operationId":"serve_literature_page_enrichment_literature_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/enrichment/pride":{"get":{"tags":["Pages"],"summary":"Serve Pride Page","description":"API endpoint.","operationId":"serve_pride_page_enrichment_pride_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/enrichment/preprints":{"get":{"tags":["Pages"],"summary":"Serve Preprints Page","description":"API endpoint.","operationId":"serve_preprints_page_enrichment_preprints_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/enrichment/kegg":{"get":{"tags":["Pages"],"summary":"Serve Kegg Page","description":"Render KEGG pathway enrichment page.","operationId":"serve_kegg_page_enrichment_kegg_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/enrichment/geo-sra":{"get":{"tags":["Pages"],"summary":"Serve Geo Sra Page","description":"Render GEO/SRA datasets enrichment page.","operationId":"serve_geo_sra_page_enrichment_geo_sra_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/enrichment/host-ecology":{"get":{"tags":["Pages"],"summary":"Serve Host Ecology Page","description":"Render host ecology enrichment page.","operationId":"serve_host_ecology_page_enrichment_host_ecology_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/enrichment/viralzone":{"get":{"tags":["Pages"],"summary":"Serve Viralzone Page","description":"Render ViralZone enrichment page.","operationId":"serve_viralzone_page_enrichment_viralzone_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/about":{"get":{"tags":["Pages"],"summary":"Serve About","description":"Render about page with live stats from database.","operationId":"serve_about_about_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/compliance":{"get":{"tags":["Pages"],"summary":"Serve Compliance","description":"Render data standards compliance page.","operationId":"serve_compliance_compliance_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/structures":{"get":{"tags":["Pages"],"summary":"Serve Structures","description":"Render protein structures browser page.","operationId":"serve_structures_structures_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/family":{"get":{"tags":["Pages"],"summary":"Redirect Family","description":"Redirect family page to taxonomy browser.","operationId":"redirect_family_family_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/domains":{"get":{"tags":["Pages"],"summary":"Redirect Domains","description":"Redirect domains page to help.","operationId":"redirect_domains_domains_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/ppi_network":{"get":{"tags":["Pages"],"summary":"Redirect Ppi Network","description":"Redirect PPI network page to help.","operationId":"redirect_ppi_network_ppi_network_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/virus_compare":{"get":{"tags":["Pages"],"summary":"Redirect Virus Compare","description":"Redirect virus compare page to help.","operationId":"redirect_virus_compare_virus_compare_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/blast":{"get":{"tags":["Pages"],"summary":"Blast Page","description":"BLAST search page.","operationId":"blast_page_blast_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/msa":{"get":{"tags":["Pages"],"summary":"Redirect Msa","description":"Redirect MSA page to help.","operationId":"redirect_msa_msa_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/browse/viruses":{"get":{"tags":["Pages"],"summary":"Serve Viruses Redirect","description":"Redirect /browse/viruses to /viruses with preserved query params.","operationId":"serve_viruses_redirect_browse_viruses_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","default":"canonical_name","title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","default":"asc","title":"Sort Order"}},{"name":"family","in":"query","required":false,"schema":{"type":"string","title":"Family"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Per Page"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/browse/taxonomy":{"get":{"tags":["Pages"],"summary":"Serve Taxonomy","description":"Render taxonomy browser page.","operationId":"serve_taxonomy_browse_taxonomy_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/compare":{"get":{"tags":["Pages"],"summary":"Serve Compare","description":"Render virus comparison page.","operationId":"serve_compare_compare_get","parameters":[{"name":"v","in":"query","required":false,"schema":{"type":"string","default":"","title":"V"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/literature/{lit_id}":{"get":{"tags":["Pages"],"summary":"Serve Literature Detail","description":"Render literature detail page.","operationId":"serve_literature_detail_literature__lit_id__get","parameters":[{"name":"lit_id","in":"path","required":true,"schema":{"type":"integer","title":"Lit Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Body_predict_structure_api_structure_predict_post":{"properties":{"sequence":{"type":"string","title":"Sequence"},"sequence_id":{"type":"string","title":"Sequence Id","default":""}},"type":"object","required":["sequence"],"title":"Body_predict_structure_api_structure_predict_post"},"ExpansionStats":{"properties":{"total_virus_species":{"type":"integer","title":"Total Virus Species","description":"Total virus species in database"},"phyla_covered":{"type":"integer","title":"Phyla Covered","description":"Distinct host phyla covered"},"target_hosts_by_phylum":{"additionalProperties":{"type":"integer"},"type":"object","title":"Target Hosts By Phylum","description":"Target host count by phylum"},"evidence_coverage_pct":{"type":"number","title":"Evidence Coverage Pct","description":"Percentage of infection records with confirmed association method"},"species_with_structures":{"type":"integer","title":"Species With Structures","description":"Virus species with at least one 3D structure"}},"type":"object","required":["total_virus_species","phyla_covered","target_hosts_by_phylum","evidence_coverage_pct","species_with_structures"],"title":"ExpansionStats","description":"Expansion progress tracking for the aquatic invertebrate expansion (v2.0)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HostDetailResponse":{"properties":{"host_id":{"type":"integer","title":"Host Id","description":"Internal primary key"},"scientific_name":{"type":"string","title":"Scientific Name","description":"Host scientific name"},"phylum":{"type":"string","title":"Phylum","description":"Taxonomic phylum"},"class":{"type":"string","title":"Class","description":"Taxonomic class","default":""},"host_scope_status":{"type":"string","title":"Host Scope Status","description":"Host scope classification"},"virus_count":{"type":"integer","title":"Virus Count","description":"Distinct virus species associated with this host"},"aquaculture_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aquaculture Status","description":"Aquaculture relevance status"}},"type":"object","required":["host_id","scientific_name","phylum","host_scope_status","virus_count"],"title":"HostDetailResponse","description":"Detailed information for a single host species."},"HostPhylumStats":{"properties":{"phylum":{"type":"string","title":"Phylum","description":"Host taxonomic phylum"},"virus_species_count":{"type":"integer","title":"Virus Species Count","description":"Distinct virus species count"},"isolate_count":{"type":"integer","title":"Isolate Count","description":"Distinct viral isolate count"},"host_species_count":{"type":"integer","title":"Host Species Count","description":"Distinct host species count"}},"type":"object","required":["phylum","virus_species_count","isolate_count","host_species_count"],"title":"HostPhylumStats","description":"Aggregated virus/host statistics grouped by host phylum."},"InfectionRecordResponse":{"properties":{"infection_id":{"type":"integer","title":"Infection Id","description":"Primary key of infection record"},"virus_name":{"type":"string","title":"Virus Name","description":"Virus name (canonical or original)"},"host_name":{"type":"string","title":"Host Name","description":"Host scientific name"},"host_phylum":{"type":"string","title":"Host Phylum","description":"Host taxonomic phylum"},"host_class":{"type":"string","title":"Host Class","description":"Host taxonomic class"},"association_method":{"type":"string","title":"Association Method","description":"Host association method"},"detection_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detection Method","description":"Detection/diagnostic method used"},"evidence_strength":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence Strength","description":"Evidence strength rating"}},"type":"object","required":["infection_id","virus_name","host_name","host_phylum","host_class","association_method"],"title":"InfectionRecordResponse","description":"A single virus-host infection/association record."},"PaginatedProteinResponse":{"properties":{"total":{"type":"integer","title":"Total","description":"Total number of matching proteins across all pages"},"page":{"type":"integer","title":"Page","description":"Current page number (1-indexed)"},"page_size":{"type":"integer","title":"Page Size","description":"Number of results per page"},"results":{"items":{"$ref":"#/components/schemas/ProteinResponse"},"type":"array","title":"Results","description":"List of protein records for the current page"}},"type":"object","required":["total","page","page_size"],"title":"PaginatedProteinResponse","description":"Wrapper for the paginated protein search endpoint response."},"PaginatedRDRPResponse":{"properties":{"total":{"type":"integer","title":"Total","description":"Total number of matching RDRP records across all pages"},"page":{"type":"integer","title":"Page","description":"Current page number (1-indexed)"},"page_size":{"type":"integer","title":"Page Size","description":"Number of results per page"},"results":{"items":{"$ref":"#/components/schemas/RDRPResponse"},"type":"array","title":"Results","description":"List of RDRP records for the current page"}},"type":"object","required":["total","page","page_size"],"title":"PaginatedRDRPResponse","description":"Wrapper for the paginated RDRP list endpoint response."},"ProteinResponse":{"properties":{"protein_id":{"type":"integer","title":"Protein Id","description":"Internal primary key of the protein record"},"protein_accession":{"type":"string","title":"Protein Accession","description":"Cross-database protein accession (e.g. GenBank protein ID)","default":""},"protein_name":{"type":"string","title":"Protein Name","description":"Descriptive name of the protein product","default":""},"gene_symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gene Symbol","description":"Gene symbol / locus abbreviation"},"locus_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locus Tag","description":"Locus tag assigned during annotation"},"aa_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Aa Length","description":"Length of the amino-acid sequence"},"functional_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Functional Category","description":"Functional classification (e.g. structural, replication, host_modulation)"},"functional_annotation_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Functional Annotation Status","description":"Curation/status label for the functional annotation"},"accession":{"type":"string","title":"Accession","description":"NCBI / INSDC nucleotide accession of the parent isolate","default":""},"virus_name":{"type":"string","title":"Virus Name","description":"Canonical virus species name","default":""},"_has_structure":{"type":"boolean","title":" Has Structure","description":"Whether at least one 3D structure (AlphaFold / ESMFold / PDB) is associated with this protein","default":false}},"type":"object","required":["protein_id"],"title":"ProteinResponse","description":"Single protein annotation as returned by the protein search endpoint."},"RDRPResponse":{"properties":{"protein_id":{"type":"integer","title":"Protein Id","description":"Internal primary key of the RDRP protein record"},"protein_accession":{"type":"string","title":"Protein Accession","description":"Cross-database protein accession","default":""},"protein_name":{"type":"string","title":"Protein Name","description":"Name of the RDRP / polymerase protein","default":""},"gene_symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gene Symbol","description":"Gene symbol (e.g. RdRp, L, Pol)"},"virus_species":{"type":"string","title":"Virus Species","description":"Canonical virus species name","default":""},"accession":{"type":"string","title":"Accession","description":"NCBI nucleotide accession of the parent isolate","default":""},"genome_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Genome Type","description":"Genome type (ssRNA, dsRNA, ssDNA, etc.)"},"aa_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Aa Length","description":"Amino-acid length of the RDRP protein"},"functional_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Functional Category","description":"Functional classification"},"functional_annotation_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Functional Annotation Status","description":"Curation/status label for the functional annotation"},"_has_structure":{"type":"boolean","title":" Has Structure","description":"Whether a 3D structure is available for this RDRP","default":false}},"type":"object","required":["protein_id"],"title":"RDRPResponse","description":"An RNA-dependent RNA polymerase (RDRP) protein record."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"tags":[{"name":"Core Data","description":"Virus isolates, hosts, families, search and detail retrieval"},{"name":"Proteins","description":"Viral protein annotations, core/conserved genes, and 3D structures"},{"name":"RDRP","description":"RNA-dependent RNA polymerase annotations, BLAST search, and species overview"},{"name":"Enrichment","description":"External data source integrations: KEGG, InterPro, UniProt, ViralZone, STRING, PRIDE, GEO/SRA, GBIF, Europe PMC, bioRxiv, host ecology, and AlphaFold structures"},{"name":"Stats","description":"Aggregated database statistics: overall counts, protein stats, genome stats, completeness, and structure coverage"},{"name":"Downloads","description":"File download endpoints for FASTA sequences, exports, and PDB files"},{"name":"Sync","description":"Data synchronization status and history for automated ingestion pipelines"},{"name":"Pages","description":"Server-side rendered HTML pages (Jinja2 templates)"}]}