{"openapi": "3.0.3", "info": {"title": "EVd3x External API", "version": "1.0.0", "description": "Read-only API for EVd3x analysis modules. Use API key authentication."}, "servers": [{"url": "http://evd3x.com"}], "security": [{"ApiKeyAuth": []}], "components": {"securitySchemes": {"ApiKeyAuth": {"type": "apiKey", "in": "header", "name": "Authorization", "description": "Bearer token format: Authorization: Bearer <API_KEY>. X-API-Key is also accepted."}, "AdminTokenAuth": {"type": "apiKey", "in": "header", "name": "X-Admin-Token", "description": "Admin token for key lifecycle endpoints."}}, "schemas": {"V1Envelope": {"type": "object", "properties": {"data": {"description": "Endpoint payload."}, "meta": {"type": "object"}, "warnings": {"type": "array", "items": {"type": "string"}}, "error": {"type": ["object", "null"]}}}}}, "paths": {"/api/v1/network/search": {"get": {"summary": "Network/search facade", "responses": {"200": {"description": "OK"}}}, "post": {"summary": "Network/search facade (POST)", "responses": {"200": {"description": "OK"}}}}, "/api/v1/details": {"get": {"summary": "Node/system detail facade", "responses": {"200": {"description": "OK"}}}}, "/api/v1/pathways/enrichment": {"get": {"summary": "Pathway enrichment facade", "responses": {"200": {"description": "OK"}}}}, "/api/v1/disease/analysis": {"get": {"summary": "Disease analysis facade", "responses": {"200": {"description": "OK"}}}}, "/api/v1/ev/evidence": {"get": {"summary": "EV-evidence-first facade", "responses": {"200": {"description": "OK"}}}}, "/api/v1/cell-specificity": {"post": {"summary": "Cell specificity facade", "responses": {"200": {"description": "OK"}}}}, "/api/v1/cell-communication": {"post": {"summary": "Cell communication facade", "responses": {"200": {"description": "OK"}}}}, "/api/v1/lr/analysis": {"get": {"summary": "Ligand-receptor analysis facade", "responses": {"200": {"description": "OK"}}}}, "/api/v1/ppi/network": {"get": {"summary": "PPI network facade", "responses": {"200": {"description": "OK"}}}}, "/api/v1/platform/stats": {"get": {"summary": "Platform stats facade", "responses": {"200": {"description": "OK"}}}}, "/api/v1/reverse/disease": {"get": {"summary": "Reverse disease ranking facade", "responses": {"200": {"description": "OK"}}}}, "/api/v1/reverse/cell-communication": {"get": {"summary": "Reverse cell-communication ranking facade", "responses": {"200": {"description": "OK"}}}}, "/api/v1/admin/keys": {"get": {"summary": "List API keys (admin)", "security": [{"AdminTokenAuth": []}], "responses": {"200": {"description": "OK"}}}}, "/api/v1/admin/keys/generate": {"post": {"summary": "Generate API key (admin)", "security": [{"AdminTokenAuth": []}], "responses": {"200": {"description": "OK"}}}}, "/api/v1/admin/keys/{key_id}/revoke": {"post": {"summary": "Revoke API key (admin)", "security": [{"AdminTokenAuth": []}], "responses": {"200": {"description": "OK"}}}}, "/api/v1/docs": {"get": {"summary": "API quick reference payload", "security": [], "responses": {"200": {"description": "OK"}}}}, "/api/v1/openapi.json": {"get": {"summary": "OpenAPI schema", "security": [], "responses": {"200": {"description": "OK"}}}}}}