{"openapi": "3.1.0", "info": {"title": "FAIR-TPs Public API", "version": "v1", "description": "Public read-only access to FAIR-TPs transformation-product data. Representations: application/json (default) and application/xml."}, "paths": {"/api/v1/meta": {"get": {"operationId": "api_v1_routers_meta_service_meta", "summary": "Service metadata", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ServiceMeta"}}, "application/xml": {"schema": {"$ref": "#/components/schemas/ServiceMeta"}}}}, "405": {"description": "Method Not Allowed", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "406": {"description": "Not Acceptable", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "500": {"description": "Internal Server Error", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}}, "description": "Version and supported representations for this API.", "tags": ["meta"]}}, "/api/v1/compounds": {"get": {"operationId": "api_v1_routers_compounds_list_compounds", "summary": "Search compounds", "parameters": [{"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Name, title, IUPAC name or synonym.", "title": "Q"}, "required": false, "description": "Name, title, IUPAC name or synonym."}, {"in": "query", "name": "page", "schema": {"default": 1, "description": "1-based page number.", "maximum": 100000, "minimum": 1, "title": "Page", "type": "integer"}, "required": false, "description": "1-based page number."}, {"in": "query", "name": "page_size", "schema": {"default": 20, "description": "Items per page.", "maximum": 100, "minimum": 1, "title": "Page Size", "type": "integer"}, "required": false, "description": "Items per page."}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CompoundList"}}, "application/xml": {"schema": {"$ref": "#/components/schemas/CompoundList"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "429": {"description": "Too Many Requests", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "503": {"description": "Service Unavailable", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "405": {"description": "Method Not Allowed", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "406": {"description": "Not Acceptable", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "500": {"description": "Internal Server Error", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}}, "description": "Search public compounds by name, title, IUPAC name or synonym (case-insensitive). Each compound appears once.", "tags": ["compounds"]}}, "/api/v1/compounds/{inchikey}": {"get": {"operationId": "api_v1_routers_compounds_get_compound", "summary": "Get one compound", "parameters": [{"in": "path", "name": "inchikey", "schema": {"title": "Inchikey", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CompoundDetail"}}, "application/xml": {"schema": {"$ref": "#/components/schemas/CompoundDetail"}}}}, "404": {"description": "Not Found", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "429": {"description": "Too Many Requests", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "503": {"description": "Service Unavailable", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "405": {"description": "Method Not Allowed", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "406": {"description": "Not Acceptable", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "500": {"description": "Internal Server Error", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}}, "description": "Retrieve a single public compound by InChIKey.", "tags": ["compounds"]}}, "/api/v1/compounds/{inchikey}/connections": {"get": {"operationId": "api_v1_routers_compounds_list_connections", "summary": "List a compound's transformations", "parameters": [{"in": "path", "name": "inchikey", "schema": {"title": "Inchikey", "type": "string"}, "required": true}, {"in": "query", "name": "direction", "schema": {"default": "both", "description": "both, outgoing (compound is the substrate), or incoming.", "title": "Direction", "type": "string"}, "required": false, "description": "both, outgoing (compound is the substrate), or incoming."}, {"in": "query", "name": "dataset", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Exact dataset reference.", "title": "Dataset"}, "required": false, "description": "Exact dataset reference."}, {"in": "query", "name": "biosystem", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "One biosystem, matched whole.", "title": "Biosystem"}, "required": false, "description": "One biosystem, matched whole."}, {"in": "query", "name": "enzyme", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "One enzyme, matched whole.", "title": "Enzyme"}, "required": false, "description": "One enzyme, matched whole."}, {"in": "query", "name": "page", "schema": {"default": 1, "description": "1-based page number.", "maximum": 100000, "minimum": 1, "title": "Page", "type": "integer"}, "required": false, "description": "1-based page number."}, {"in": "query", "name": "page_size", "schema": {"default": 20, "description": "Items per page.", "maximum": 100, "minimum": 1, "title": "Page Size", "type": "integer"}, "required": false, "description": "Items per page."}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConnectionList"}}, "application/xml": {"schema": {"$ref": "#/components/schemas/ConnectionList"}}}}, "404": {"description": "Not Found", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "429": {"description": "Too Many Requests", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "503": {"description": "Service Unavailable", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "405": {"description": "Method Not Allowed", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "406": {"description": "Not Acceptable", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "500": {"description": "Internal Server Error", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}}, "description": "Public transformation reactions involving this compound. Each entry names the substrate and the product in the reaction's own direction, and says which of the two this compound is.", "tags": ["compounds"]}}, "/api/v1/pathways/shortest": {"get": {"operationId": "api_v1_routers_pathways_shortest_pathway", "summary": "Shortest transformation pathway", "parameters": [{"in": "query", "name": "source", "schema": {"description": "InChIKey of the starting compound.", "title": "Source", "type": "string"}, "required": true, "description": "InChIKey of the starting compound."}, {"in": "query", "name": "target", "schema": {"description": "InChIKey of the compound to reach.", "title": "Target", "type": "string"}, "required": true, "description": "InChIKey of the compound to reach."}, {"in": "query", "name": "max_depth", "schema": {"default": 20, "description": "Longest pathway to search for, in reactions.", "maximum": 20, "minimum": 1, "title": "Max Depth", "type": "integer"}, "required": false, "description": "Longest pathway to search for, in reactions."}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PathwayResult"}}, "application/xml": {"schema": {"$ref": "#/components/schemas/PathwayResult"}}}}, "404": {"description": "Not Found", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "429": {"description": "Too Many Requests", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "503": {"description": "Service Unavailable", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "405": {"description": "Method Not Allowed", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "406": {"description": "Not Acceptable", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "500": {"description": "Internal Server Error", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}}, "description": "The shortest chain of transformation reactions from one compound to another. Both compounds are named by InChIKey.", "tags": ["pathways"]}}, "/api/v1/search/substructure": {"get": {"operationId": "api_v1_routers_search_substructure_search", "summary": "Search compounds by SMARTS substructure", "parameters": [{"in": "query", "name": "smarts", "schema": {"description": "A single SMARTS pattern.", "title": "Smarts", "type": "string"}, "required": true, "description": "A single SMARTS pattern."}, {"in": "query", "name": "dataset", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Exact dataset reference.", "title": "Dataset"}, "required": false, "description": "Exact dataset reference."}, {"in": "query", "name": "biosystem", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "One biosystem, matched whole.", "title": "Biosystem"}, "required": false, "description": "One biosystem, matched whole."}, {"in": "query", "name": "page", "schema": {"default": 1, "description": "1-based page number.", "maximum": 100000, "minimum": 1, "title": "Page", "type": "integer"}, "required": false, "description": "1-based page number."}, {"in": "query", "name": "page_size", "schema": {"default": 20, "description": "Items per page.", "maximum": 100, "minimum": 1, "title": "Page Size", "type": "integer"}, "required": false, "description": "Items per page."}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CompoundList"}}, "application/xml": {"schema": {"$ref": "#/components/schemas/CompoundList"}}}}, "414": {"description": "Request-URI Too Long", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "429": {"description": "Too Many Requests", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "503": {"description": "Service Unavailable", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "405": {"description": "Method Not Allowed", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "406": {"description": "Not Acceptable", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "500": {"description": "Internal Server Error", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}}, "description": "Compounds whose structure contains the given SMARTS pattern. The pattern is matched against every candidate compound before the result is paged, so the count is the complete match set. This is the most expensive endpoint in the API.", "tags": ["search"]}}, "/api/v1/search/substructure/batch": {"get": {"operationId": "api_v1_routers_search_substructure_batch_search", "summary": "Search compounds by several SMARTS patterns at once", "parameters": [{"in": "query", "name": "smarts", "schema": {"description": "A SMARTS pattern. Repeat for each one.", "items": {"type": "string"}, "title": "Smarts", "type": "array"}, "required": true, "description": "A SMARTS pattern. Repeat for each one."}, {"in": "query", "name": "dataset", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Exact dataset reference.", "title": "Dataset"}, "required": false, "description": "Exact dataset reference."}, {"in": "query", "name": "biosystem", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "One biosystem, matched whole.", "title": "Biosystem"}, "required": false, "description": "One biosystem, matched whole."}, {"in": "query", "name": "page", "schema": {"default": 1, "description": "1-based page number.", "maximum": 100000, "minimum": 1, "title": "Page", "type": "integer"}, "required": false, "description": "1-based page number."}, {"in": "query", "name": "page_size", "schema": {"default": 20, "description": "Items per page.", "maximum": 100, "minimum": 1, "title": "Page Size", "type": "integer"}, "required": false, "description": "Items per page."}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CompoundList"}}, "application/xml": {"schema": {"$ref": "#/components/schemas/CompoundList"}}}}, "414": {"description": "Request-URI Too Long", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "429": {"description": "Too Many Requests", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "503": {"description": "Service Unavailable", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "405": {"description": "Method Not Allowed", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "406": {"description": "Not Acceptable", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}, "500": {"description": "Internal Server Error", "content": {"application/problem+json": {"schema": {"$ref": "#/components/schemas/Problem"}}, "application/problem+xml": {"schema": {"$ref": "#/components/schemas/Problem"}}}}}, "description": "Compounds matching any of the given SMARTS patterns, ranked by how many distinct patterns each one matched. Repeat the `smarts` parameter once per pattern. Every pattern is matched against every candidate compound before the result is paged, so the count is the complete match set. This is the most expensive endpoint in the API.", "tags": ["search"]}}}, "components": {"schemas": {"ServiceMeta": {"description": "Safe public service metadata only.\n\nDeliberately omits deployment SHA, hostname, and Python/Django/Neo4j\nversions: those are operational details, not part of a scientific contract.", "properties": {"api_version": {"title": "Api Version", "type": "string"}, "service": {"title": "Service", "type": "string"}, "supported_formats": {"items": {"type": "string"}, "title": "Supported Formats", "type": "array"}, "documentation": {"title": "Documentation", "type": "string"}}, "required": ["api_version", "service", "supported_formats", "documentation"], "title": "ServiceMeta", "type": "object"}, "Problem": {"description": "RFC 9457 problem document.\n\nDeclared as a schema so the OpenAPI document describes error responses as\nprecisely as successful ones. `code` is the stable member to branch on;\n`title` and `detail` are prose and may be reworded.", "properties": {"type": {"title": "Type", "type": "string"}, "title": {"title": "Title", "type": "string"}, "status": {"title": "Status", "type": "integer"}, "detail": {"title": "Detail", "type": "string"}, "code": {"title": "Code", "type": "string"}, "instance": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Instance"}, "errors": {"anyOf": [{"items": {"$ref": "#/components/schemas/ProblemErrorItem"}, "type": "array"}, {"type": "null"}], "title": "Errors"}}, "required": ["type", "title", "status", "detail", "code"], "title": "Problem", "type": "object"}, "ProblemErrorItem": {"description": "One field-level validation failure. Never echoes the submitted value.", "properties": {"field": {"title": "Field", "type": "string"}, "code": {"title": "Code", "type": "string"}, "message": {"title": "Message", "type": "string"}}, "required": ["field", "code", "message"], "title": "ProblemErrorItem", "type": "object"}, "CompoundList": {"properties": {"meta": {"$ref": "#/components/schemas/Meta"}, "data": {"items": {"$ref": "#/components/schemas/CompoundSummary"}, "title": "Data", "type": "array"}}, "required": ["meta", "data"], "title": "CompoundList", "type": "object"}, "CompoundSummary": {"description": "Lightweight list item. Deliberately excludes synonyms (unbounded).", "properties": {"inchikey": {"title": "Inchikey", "type": "string"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "title": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Title"}, "iupac_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Iupac Name"}, "molecular_formula": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Molecular Formula"}, "pubchem_cid": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pubchem Cid"}, "mass": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Mass"}, "xlogp": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Xlogp"}}, "required": ["inchikey"], "title": "CompoundSummary", "type": "object"}, "Meta": {"description": "Pagination/envelope metadata.", "properties": {"api_version": {"title": "Api Version", "type": "string"}, "count": {"title": "Count", "type": "integer"}, "page": {"title": "Page", "type": "integer"}, "page_size": {"title": "Page Size", "type": "integer"}, "total_pages": {"title": "Total Pages", "type": "integer"}}, "required": ["api_version", "count", "page", "page_size", "total_pages"], "title": "Meta", "type": "object"}, "CompoundDetail": {"description": "Full public compound representation.", "properties": {"inchikey": {"title": "Inchikey", "type": "string"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "title": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Title"}, "iupac_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Iupac Name"}, "synonyms": {"default": [], "items": {"type": "string"}, "title": "Synonyms", "type": "array"}, "molecular_formula": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Molecular Formula"}, "pubchem_cid": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pubchem Cid"}, "smiles": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Smiles"}, "canonical_smiles": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Canonical Smiles"}, "isomeric_smiles": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Isomeric Smiles"}, "inchi": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Inchi"}, "exact_mass": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Exact Mass"}, "monoisotopic_mass": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Monoisotopic Mass"}, "molecular_weight": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Molecular Weight"}, "xlogp": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Xlogp"}}, "required": ["inchikey"], "title": "CompoundDetail", "type": "object"}, "Connection": {"description": "One public transformation touching the compound that was asked about.\n\n`substrate` and `product` are the reaction's own direction and never move:\nthe substrate is transformed into the product. `direction` says which of\nthe two the queried compound is, so a client never has to compare\nidentifiers to find out.", "properties": {"direction": {"title": "Direction", "type": "string"}, "substrate": {"$ref": "#/components/schemas/ConnectionEndpoint"}, "product": {"$ref": "#/components/schemas/ConnectionEndpoint"}, "transformation": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Transformation"}, "biosystems": {"default": [], "items": {"type": "string"}, "title": "Biosystems", "type": "array"}, "enzymes": {"default": [], "items": {"type": "string"}, "title": "Enzymes", "type": "array"}, "dataset_reference": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Dataset Reference"}, "evidence": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Evidence"}, "evidence_doi": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Evidence Doi"}, "mass_diff": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Mass Diff"}, "xlogp_diff": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Xlogp Diff"}}, "required": ["direction", "substrate", "product"], "title": "Connection", "type": "object"}, "ConnectionEndpoint": {"description": "One end of a reaction. Compact on purpose: a connection page would be\ndominated by repeated compound records otherwise, and the full\nrepresentation is one request away at /api/v1/compounds/{inchikey}.", "properties": {"inchikey": {"title": "Inchikey", "type": "string"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "molecular_formula": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Molecular Formula"}, "pubchem_cid": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pubchem Cid"}}, "required": ["inchikey"], "title": "ConnectionEndpoint", "type": "object"}, "ConnectionList": {"properties": {"meta": {"$ref": "#/components/schemas/Meta"}, "data": {"items": {"$ref": "#/components/schemas/Connection"}, "title": "Data", "type": "array"}}, "required": ["meta", "data"], "title": "ConnectionList", "type": "object"}, "PathNode": {"description": "One compound on a pathway, in order from source to target.", "properties": {"position": {"title": "Position", "type": "integer"}, "inchikey": {"title": "Inchikey", "type": "string"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "molecular_formula": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Molecular Formula"}, "pubchem_cid": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pubchem Cid"}}, "required": ["position", "inchikey"], "title": "PathNode", "type": "object"}, "PathStep": {"description": "One reaction along a pathway.\n\nThe same fields a connection carries, normalised by the same code, so a step\ncan never disagree with the connection listing about the same reaction.\n`step` counts from 1 at the source end.", "properties": {"step": {"title": "Step", "type": "integer"}, "substrate": {"$ref": "#/components/schemas/ConnectionEndpoint"}, "product": {"$ref": "#/components/schemas/ConnectionEndpoint"}, "transformation": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Transformation"}, "biosystems": {"default": [], "items": {"type": "string"}, "title": "Biosystems", "type": "array"}, "enzymes": {"default": [], "items": {"type": "string"}, "title": "Enzymes", "type": "array"}, "dataset_reference": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Dataset Reference"}, "evidence": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Evidence"}, "evidence_doi": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Evidence Doi"}, "mass_diff": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Mass Diff"}, "xlogp_diff": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Xlogp Diff"}}, "required": ["step", "substrate", "product"], "title": "PathStep", "type": "object"}, "Pathway": {"properties": {"length": {"title": "Length", "type": "integer"}, "nodes": {"items": {"$ref": "#/components/schemas/PathNode"}, "title": "Nodes", "type": "array"}, "steps": {"items": {"$ref": "#/components/schemas/PathStep"}, "title": "Steps", "type": "array"}}, "required": ["length", "nodes", "steps"], "title": "Pathway", "type": "object"}, "PathwayResult": {"description": "The answer to one shortest-pathway question.\n\n`found` is false, `path_length` null and `pathways` empty when the two\ncompounds exist but nothing connects them within the depth searched. That is\na result, not an error.", "properties": {"source": {"title": "Source", "type": "string"}, "target": {"title": "Target", "type": "string"}, "max_depth": {"title": "Max Depth", "type": "integer"}, "found": {"title": "Found", "type": "boolean"}, "traversal": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Traversal"}, "path_length": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Path Length"}, "pathway_count": {"default": 0, "title": "Pathway Count", "type": "integer"}, "pathways": {"default": [], "items": {"$ref": "#/components/schemas/Pathway"}, "title": "Pathways", "type": "array"}}, "required": ["source", "target", "max_depth", "found"], "title": "PathwayResult", "type": "object"}}}, "servers": []}