{"openapi":"3.1.0","info":{"title":"ModelSEED API","description":"Modern REST API backend for the ModelSEED metabolic modeling platform. Replaces the legacy Perl-based ProbModelSEED JSON-RPC service.","version":"0.1.0"},"paths":{"/api/models":{"get":{"tags":["Models"],"summary":"List Models","description":"List all metabolic models for the authenticated user.\n\nIf no path is provided, defaults to /{username}/modelseed/.\nReturns ModelStats-shaped objects.","operationId":"list_models_api_models_get","parameters":[{"name":"path","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace path to list models from","title":"Path"},"description":"Workspace path to list models from"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Models Api Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Models"],"summary":"Delete Model","description":"Delete a model from the workspace.","operationId":"delete_model_api_models_delete","parameters":[{"name":"ref","in":"query","required":true,"schema":{"type":"string","description":"Workspace reference to the model to delete","title":"Ref"},"description":"Workspace reference to the model to delete"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Delete Model Api Models Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/data":{"get":{"tags":["Models"],"summary":"Get Model","description":"Get full model data including reactions, compounds, genes, compartments, biomasses.","operationId":"get_model_api_models_data_get","parameters":[{"name":"ref","in":"query","required":true,"schema":{"type":"string","description":"Workspace reference to the model folder","title":"Ref"},"description":"Workspace reference to the model folder"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Model Api Models Data Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/copy":{"post":{"tags":["Models"],"summary":"Copy Model","description":"Copy a model to a new location in the workspace.","operationId":"copy_model_api_models_copy_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CopyModelRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Copy Model Api Models Copy Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/export":{"get":{"tags":["Models"],"summary":"Export Model","description":"Export a model in the specified format.\n\nSupported formats: json, sbml, cobrapy.","operationId":"export_model_api_models_export_get","parameters":[{"name":"ref","in":"query","required":true,"schema":{"type":"string","description":"Workspace reference to the model","title":"Ref"},"description":"Workspace reference to the model"},{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Export format: json, sbml, cobrapy","default":"json","title":"Format"},"description":"Export format: json, sbml, cobrapy"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Export Model Api Models Export Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/gapfills":{"get":{"tags":["Models"],"summary":"List Gapfills","description":"List gapfilling solutions for a model.","operationId":"list_gapfills_api_models_gapfills_get","parameters":[{"name":"ref","in":"query","required":true,"schema":{"type":"string","description":"Workspace reference to the model","title":"Ref"},"description":"Workspace reference to the model"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Gapfills Api Models Gapfills Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/gapfills/manage":{"post":{"tags":["Models"],"summary":"Manage Gapfills","description":"Manage gapfilling solutions (integrate/unintegrate/delete).","operationId":"manage_gapfills_api_models_gapfills_manage_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManageGapfillsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Manage Gapfills Api Models Gapfills Manage Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/fba":{"get":{"tags":["Models"],"summary":"List Fba Studies","description":"List FBA studies associated with a model.","operationId":"list_fba_studies_api_models_fba_get","parameters":[{"name":"ref","in":"query","required":true,"schema":{"type":"string","description":"Workspace reference to the model","title":"Ref"},"description":"Workspace reference to the model"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Fba Studies Api Models Fba Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/fba/data":{"get":{"tags":["Models"],"summary":"Get Fba Detail","description":"Get full FBA result including flux data.\n\nThe /fba endpoint returns only summaries (objective, media, date).\nThis endpoint fetches the actual FBA workspace object with reaction flux values.","operationId":"get_fba_detail_api_models_fba_data_get","parameters":[{"name":"ref","in":"query","required":true,"schema":{"type":"string","description":"Workspace reference to the model folder","title":"Ref"},"description":"Workspace reference to the model folder"},{"name":"fba_id","in":"query","required":true,"schema":{"type":"string","description":"FBA result ID, e.g. 'fba.0'","title":"Fba Id"},"description":"FBA result ID, e.g. 'fba.0'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Fba Detail Api Models Fba Data Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/edits":{"get":{"tags":["Models"],"summary":"List Model Edits","description":"List edit history for a model. Currently returns empty (history not tracked).","operationId":"list_model_edits_api_models_edits_get","parameters":[{"name":"ref","in":"query","required":true,"schema":{"type":"string","description":"Workspace reference to the model","title":"Ref"},"description":"Workspace reference to the model"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Model Edits Api Models Edits Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/edit":{"post":{"tags":["Models"],"summary":"Edit Model","description":"Edit a model (add/remove/modify reactions, compounds, biomass).\n\nAll edits are applied atomically -- either all succeed or none.","operationId":"edit_model_api_models_edit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditModelRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditModelResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workspace/ls":{"post":{"tags":["Workspace"],"summary":"Workspace Ls","description":"List workspace contents.","operationId":"workspace_ls_api_workspace_ls_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WSListRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Workspace Ls Api Workspace Ls Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workspace/get":{"post":{"tags":["Workspace"],"summary":"Workspace Get","description":"Get workspace objects or metadata.","operationId":"workspace_get_api_workspace_get_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WSGetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Workspace Get Api Workspace Get Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workspace/create":{"post":{"tags":["Workspace"],"summary":"Workspace Create","description":"Create workspace objects.","operationId":"workspace_create_api_workspace_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WSCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Workspace Create Api Workspace Create Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workspace/copy":{"post":{"tags":["Workspace"],"summary":"Workspace Copy","description":"Copy or move workspace objects.\n\nWhen recursive=True, uses manual copy that fetches and re-creates\ninner objects. PATRIC workspace copy doesn't reliably copy\nShock-stored data within folders.","operationId":"workspace_copy_api_workspace_copy_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WSCopyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Workspace Copy Api Workspace Copy Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workspace/delete":{"post":{"tags":["Workspace"],"summary":"Workspace Delete","description":"Delete workspace objects.","operationId":"workspace_delete_api_workspace_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WSDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Workspace Delete Api Workspace Delete Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workspace/metadata":{"post":{"tags":["Workspace"],"summary":"Workspace Update Metadata","description":"Update workspace object metadata.","operationId":"workspace_update_metadata_api_workspace_metadata_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WSUpdateMetadataRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Workspace Update Metadata Api Workspace Metadata Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workspace/download-url":{"post":{"tags":["Workspace"],"summary":"Workspace Download Url","description":"Get download URLs for workspace objects.","operationId":"workspace_download_url_api_workspace_download_url_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WSDownloadUrlRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Workspace Download Url Api Workspace Download Url Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workspace/permissions":{"post":{"tags":["Workspace"],"summary":"Workspace Permissions","description":"List permissions on workspace objects.","operationId":"workspace_permissions_api_workspace_permissions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WSPermissionsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Workspace Permissions Api Workspace Permissions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs":{"get":{"tags":["Jobs"],"summary":"Check Jobs","description":"Check status of jobs.\n\nReturns a mapping of job_id -> Task for the authenticated user.\nFrontend polls this every 4 seconds.","operationId":"check_jobs_api_jobs_get","parameters":[{"name":"ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated job IDs to filter","title":"Ids"},"description":"Comma-separated job IDs to filter"},{"name":"include_completed","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Completed"}},{"name":"include_failed","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Failed"}},{"name":"include_running","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Running"}},{"name":"include_queued","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Queued"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object","additionalProperties":true},"title":"Response Check Jobs Api Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/reconstruct":{"post":{"tags":["Jobs"],"summary":"Reconstruct Model","description":"Dispatch model reconstruction to a job script.\n\nReturns the job ID.","operationId":"reconstruct_model_api_jobs_reconstruct_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconstructionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string","title":"Response Reconstruct Model Api Jobs Reconstruct Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/gapfill":{"post":{"tags":["Jobs"],"summary":"Gapfill Model","description":"Dispatch gapfilling to a job script.\n\nReturns the job ID.","operationId":"gapfill_model_api_jobs_gapfill_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GapfillRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string","title":"Response Gapfill Model Api Jobs Gapfill Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/fba":{"post":{"tags":["Jobs"],"summary":"Run Fba","description":"Dispatch FBA to a job script.\n\nReturns the job ID.","operationId":"run_fba_api_jobs_fba_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FBARequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string","title":"Response Run Fba Api Jobs Fba Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/merge":{"post":{"tags":["Jobs"],"summary":"Merge Models","description":"Dispatch model merging to a job script.\n\nReturns the job ID.","operationId":"merge_models_api_jobs_merge_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergeModelsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string","title":"Response Merge Models Api Jobs Merge Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jobs/manage":{"post":{"tags":["Jobs"],"summary":"Manage Jobs","description":"Manage jobs (cancel/delete/rerun).","operationId":"manage_jobs_api_jobs_manage_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManageJobsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object","title":"Response Manage Jobs Api Jobs Manage Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media/public":{"get":{"tags":["Media"],"summary":"List Public Media","description":"List public media from the shared media path.\n\nMedia are listed from /chenry/public/modelsupport/media.\nNo authentication required — public media is world-readable.","operationId":"list_public_media_api_media_public_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response List Public Media Api Media Public Get"}}}}}}},"/api/media/mine":{"get":{"tags":["Media"],"summary":"List My Media","description":"List the authenticated user's custom media.","operationId":"list_my_media_api_media_mine_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response List My Media Api Media Mine Get"}}}}}}},"/api/media/export":{"get":{"tags":["Media"],"summary":"Export Media","description":"Export a media condition as a parsed object.\n\nFrontend reads: compounds[].{id, name, concentration, minFlux, maxFlux},\nisDefined, isMinimal, name, id.","operationId":"export_media_api_media_export_get","parameters":[{"name":"ref","in":"query","required":true,"schema":{"type":"string","description":"Workspace reference to the media","title":"Ref"},"description":"Workspace reference to the media"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Export Media Api Media Export Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/biochem/stats":{"get":{"tags":["Biochemistry"],"summary":"Get Stats","description":"Get biochemistry database statistics (no auth required).","operationId":"get_stats_api_biochem_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Stats Api Biochem Stats Get"}}}}}}},"/api/biochem/reactions":{"get":{"tags":["Biochemistry"],"summary":"Get Reactions","description":"Get details for specific reactions by ID.","operationId":"get_reactions_api_biochem_reactions_get","parameters":[{"name":"ids","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated reaction IDs (e.g. rxn00001,rxn00002)","title":"Ids"},"description":"Comma-separated reaction IDs (e.g. rxn00001,rxn00002)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Reactions Api Biochem Reactions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/biochem/compounds":{"get":{"tags":["Biochemistry"],"summary":"Get Compounds","description":"Get details for specific compounds by ID.","operationId":"get_compounds_api_biochem_compounds_get","parameters":[{"name":"ids","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated compound IDs (e.g. cpd00001,cpd00002)","title":"Ids"},"description":"Comma-separated compound IDs (e.g. cpd00001,cpd00002)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Compounds Api Biochem Compounds Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/biochem/search":{"get":{"tags":["Biochemistry"],"summary":"Search Biochem","description":"Search compounds or reactions by name or ID.","operationId":"search_biochem_api_biochem_search_get","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","description":"Search term (name or ID)","title":"Query"},"description":"Search term (name or ID)"},{"name":"type","in":"query","required":false,"schema":{"type":"string","description":"Type to search: 'compounds' or 'reactions'","default":"compounds","title":"Type"},"description":"Type to search: 'compounds' or 'reactions'"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"description":"Max results","default":50,"title":"Limit"},"description":"Max results"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Search Biochem Api Biochem Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rast/jobs":{"get":{"tags":["RAST"],"summary":"List Rast Jobs","description":"List the authenticated user's RAST annotation jobs.\n\nWraps MSSS `MSSeedSupportServer.list_rast_jobs` over JSON-RPC.\n\nAuth: only RAST tokens are accepted by MSSS upstream. PATRIC tokens\nare rejected with \"Username not found\"; this endpoint catches that\nand returns 401 with a clear message.\n\nStatus codes:\n  200: list of job dicts\n  401: missing/invalid token, or PATRIC token used (RAST-only)\n  502: MSSS reachable but returned an error\n  503: MODELSEED_MSSS_URL not configured","operationId":"list_rast_jobs_api_rast_jobs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response List Rast Jobs Api Rast Jobs Get"}}}}}}},"/api/rast/genome":{"get":{"tags":["RAST"],"summary":"Get Rast Genome","description":"Fetch a RAST-annotated genome and return it as a KBase Genome dict.\n\nCalls MSSeedSupportServer's `getRastGenomeData` over JSON-RPC, then\ntranslates the response into the KBase Genome shape that our\nreconstruction pipeline expects (mirrors what BV-BRC genome lookup\nproduces; see `BVBRCUtils.build_kbase_genome_from_api()`).\n\nAuth: only RAST tokens are accepted by MSSS. PATRIC tokens fail\nupstream with \"Username not found\"; this endpoint forwards that\nfailure as a 502.\n\nStatus codes:\n  200: KBase Genome dict\n  401: missing/invalid token (handled by auth dependency)\n  502: MSSS reachable but returned an error\n  503: MODELSEED_MSSS_URL not configured","operationId":"get_rast_genome_api_rast_genome_get","parameters":[{"name":"genome_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"The RAST genome ID inside the job (e.g. '85962.43').","title":"Genome Id"},"description":"The RAST genome ID inside the job (e.g. '85962.43')."},{"name":"job_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional RAST job ID for traceability. If omitted, derived from the RAST response's `source` field.","title":"Job Id"},"description":"Optional RAST job ID for traceability. If omitted, derived from the RAST response's `source` field."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get Rast Genome Api Rast Genome Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/health":{"get":{"tags":["System"],"summary":"Health Check","description":"Health check endpoint.","operationId":"health_check_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"BiomassChange":{"properties":{"biomass_id":{"type":"string","title":"Biomass Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"compound_changes":{"items":{"$ref":"#/components/schemas/BiomassCompoundChange"},"type":"array","title":"Compound Changes","default":[]}},"type":"object","required":["biomass_id"],"title":"BiomassChange","description":"Changes to a biomass reaction."},"BiomassCompoundChange":{"properties":{"compound_id":{"type":"string","title":"Compound Id"},"coefficient":{"type":"number","title":"Coefficient"}},"type":"object","required":["compound_id","coefficient"],"title":"BiomassCompoundChange","description":"Modify a compound's coefficient in a biomass reaction."},"BiomassToAdd":{"properties":{"name":{"type":"string","title":"Name","default":"New Biomass"},"compounds":{"items":{"$ref":"#/components/schemas/BiomassCompoundChange"},"type":"array","title":"Compounds","default":[]}},"type":"object","title":"BiomassToAdd","description":"Add a new biomass reaction."},"CompoundToAdd":{"properties":{"compound_id":{"type":"string","title":"Compound Id"},"compartment":{"type":"string","title":"Compartment","default":"c0"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"formula":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Formula"},"charge":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Charge"}},"type":"object","required":["compound_id"],"title":"CompoundToAdd","description":"Add a compound from the ModelSEED biochemistry database."},"CompoundToModify":{"properties":{"compound_id":{"type":"string","title":"Compound Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"formula":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Formula"},"charge":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Charge"}},"type":"object","required":["compound_id"],"title":"CompoundToModify","description":"Modify an existing compound in the model."},"CopyModelRequest":{"properties":{"model":{"type":"string","title":"Model"},"destination":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Destination"},"destname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Destname"},"copy_genome":{"type":"boolean","title":"Copy Genome","default":false},"to_kbase":{"type":"boolean","title":"To Kbase","default":false},"workspace_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Url"},"kbase_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kbase Username"},"kbase_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kbase Password"},"plantseed":{"type":"boolean","title":"Plantseed","default":false}},"type":"object","required":["model"],"title":"CopyModelRequest","description":"Request to copy a model."},"EditModelRequest":{"properties":{"model":{"type":"string","title":"Model"},"reactions_to_add":{"items":{"$ref":"#/components/schemas/ReactionToAdd"},"type":"array","title":"Reactions To Add","default":[]},"reactions_to_remove":{"items":{"type":"string"},"type":"array","title":"Reactions To Remove","default":[]},"reactions_to_modify":{"items":{"$ref":"#/components/schemas/ReactionToModify"},"type":"array","title":"Reactions To Modify","default":[]},"compounds_to_add":{"items":{"$ref":"#/components/schemas/CompoundToAdd"},"type":"array","title":"Compounds To Add","default":[]},"compounds_to_remove":{"items":{"type":"string"},"type":"array","title":"Compounds To Remove","default":[]},"compounds_to_modify":{"items":{"$ref":"#/components/schemas/CompoundToModify"},"type":"array","title":"Compounds To Modify","default":[]},"biomass_changes":{"items":{"$ref":"#/components/schemas/BiomassChange"},"type":"array","title":"Biomass Changes","default":[]},"biomasses_to_add":{"items":{"$ref":"#/components/schemas/BiomassToAdd"},"type":"array","title":"Biomasses To Add","default":[]},"biomasses_to_remove":{"items":{"type":"string"},"type":"array","title":"Biomasses To Remove","default":[]}},"type":"object","required":["model"],"title":"EditModelRequest","description":"Request to edit a model. All operations applied atomically."},"EditModelResponse":{"properties":{"model":{"type":"string","title":"Model"},"reactions_added":{"items":{"type":"string"},"type":"array","title":"Reactions Added","default":[]},"reactions_removed":{"items":{"type":"string"},"type":"array","title":"Reactions Removed","default":[]},"reactions_modified":{"items":{"type":"string"},"type":"array","title":"Reactions Modified","default":[]},"compounds_added":{"items":{"type":"string"},"type":"array","title":"Compounds Added","default":[]},"compounds_removed":{"items":{"type":"string"},"type":"array","title":"Compounds Removed","default":[]},"compounds_modified":{"items":{"type":"string"},"type":"array","title":"Compounds Modified","default":[]},"biomasses_added":{"items":{"type":"string"},"type":"array","title":"Biomasses Added","default":[]},"biomasses_modified":{"items":{"type":"string"},"type":"array","title":"Biomasses Modified","default":[]},"biomasses_removed":{"items":{"type":"string"},"type":"array","title":"Biomasses Removed","default":[]},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings","default":[]}},"type":"object","required":["model"],"title":"EditModelResponse","description":"Summary of all edits applied."},"FBARequest":{"properties":{"model":{"type":"string","minLength":1,"title":"Model"},"media":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media"}},"type":"object","required":["model"],"title":"FBARequest","description":"Request to run flux balance analysis."},"GapfillRequest":{"properties":{"model":{"type":"string","minLength":1,"title":"Model"},"template_type":{"type":"string","title":"Template Type","default":"gn"},"media":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media"}},"type":"object","required":["model"],"title":"GapfillRequest","description":"Request to gapfill a model."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ManageGapfillsRequest":{"properties":{"model":{"type":"string","title":"Model"},"commands":{"additionalProperties":{"type":"string"},"type":"object","title":"Commands"},"selected_solutions":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Selected Solutions"}},"type":"object","required":["model","commands"],"title":"ManageGapfillsRequest","description":"Request to manage gapfill solutions."},"ManageJobsRequest":{"properties":{"jobs":{"items":{"type":"string"},"type":"array","title":"Jobs"},"action":{"type":"string","title":"Action"},"errors":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Errors"},"reports":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Reports"}},"type":"object","required":["jobs","action"],"title":"ManageJobsRequest","description":"Request to manage jobs."},"MergeModelsRequest":{"properties":{"models":{"items":{"prefixItems":[{"type":"string"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},"type":"array","minItems":1,"title":"Models"},"output_file":{"type":"string","minLength":1,"title":"Output File"},"output_path":{"type":"string","minLength":1,"title":"Output Path"}},"type":"object","required":["models","output_file","output_path"],"title":"MergeModelsRequest","description":"Request to merge multiple models."},"ReactionToAdd":{"properties":{"reaction_id":{"type":"string","title":"Reaction Id"},"compartment":{"type":"string","title":"Compartment","default":"c0"},"direction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Direction"},"gpr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gpr"}},"type":"object","required":["reaction_id"],"title":"ReactionToAdd","description":"Add a reaction from the ModelSEED biochemistry database."},"ReactionToModify":{"properties":{"reaction_id":{"type":"string","title":"Reaction Id"},"direction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Direction"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"gpr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gpr"}},"type":"object","required":["reaction_id"],"title":"ReactionToModify","description":"Modify an existing reaction in the model."},"ReconstructionRequest":{"properties":{"genome":{"type":"string","minLength":1,"title":"Genome"},"genome_fasta":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Genome Fasta"},"rast_job_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Rast Job Id"},"rast_genome_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Rast Genome Id"},"template_type":{"type":"string","title":"Template Type","default":"auto"},"atp_safe":{"type":"boolean","title":"Atp Safe","default":true},"gapfill":{"type":"boolean","title":"Gapfill","default":false},"media":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media"},"output_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Path"}},"type":"object","required":["genome"],"title":"ReconstructionRequest","description":"Request to build a model from a genome.\n\nThree input modes (mutually exclusive, exactly one must be primary):\n  - `genome`: BV-BRC genome ID (e.g. \"83332.12\"). Default path.\n  - `genome_fasta`: protein FASTA content. Skips BV-BRC lookup; submits\n    to RAST for annotation. `genome` is treated as a display name.\n  - `rast_job_id`: ID of an existing RAST annotation job. Skips both\n    BV-BRC lookup and RAST submission; fetches the already-annotated\n    genome via MSSS and feeds it directly into reconstruction.\n\nThe `genome` field is required (BV-BRC ID or display name). When\n`genome_fasta` or `rast_job_id` is set, `genome` is just a label."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WSCopyRequest":{"properties":{"objects":{"items":{"items":{"type":"string"},"type":"array"},"type":"array","title":"Objects"},"move":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Move"},"recursive":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Recursive"},"overwrite":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Overwrite"}},"type":"object","required":["objects"],"title":"WSCopyRequest","description":"Request to copy workspace objects.\n\nEach object pair is [source, destination]."},"WSCreateRequest":{"properties":{"objects":{"items":{"items":{},"type":"array"},"type":"array","title":"Objects"},"createUploadNodes":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Createuploadnodes"},"overwrite":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Overwrite"}},"type":"object","required":["objects"],"title":"WSCreateRequest","description":"Request to create workspace objects.\n\nEach object is [path, type, metadata, data]."},"WSDeleteRequest":{"properties":{"objects":{"items":{"type":"string"},"type":"array","title":"Objects"},"deleteDirectories":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Deletedirectories"},"force":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Force"}},"type":"object","required":["objects"],"title":"WSDeleteRequest","description":"Request to delete workspace objects."},"WSDownloadUrlRequest":{"properties":{"objects":{"items":{"type":"string"},"type":"array","title":"Objects"}},"type":"object","required":["objects"],"title":"WSDownloadUrlRequest","description":"Request to get download URLs."},"WSGetRequest":{"properties":{"objects":{"items":{"type":"string"},"type":"array","title":"Objects"},"metadata_only":{"type":"boolean","title":"Metadata Only","default":false}},"type":"object","required":["objects"],"title":"WSGetRequest","description":"Request to get workspace objects."},"WSListRequest":{"properties":{"paths":{"items":{"type":"string"},"type":"array","title":"Paths"},"recursive":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Recursive"},"excludeDirectories":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Excludedirectories"}},"type":"object","required":["paths"],"title":"WSListRequest","description":"Request to list workspace contents."},"WSPermissionsRequest":{"properties":{"objects":{"items":{"type":"string"},"type":"array","title":"Objects"}},"type":"object","required":["objects"],"title":"WSPermissionsRequest","description":"Request to list permissions."},"WSUpdateMetadataRequest":{"properties":{"objects":{"items":{"items":{},"type":"array"},"type":"array","title":"Objects"}},"type":"object","required":["objects"],"title":"WSUpdateMetadataRequest","description":"Request to update workspace object metadata.\n\nEach entry is [path, metadata_dict]."}},"securitySchemes":{"PatricToken":{"type":"apiKey","in":"header","name":"Authorization","description":"PATRIC/BV-BRC authentication token. Get yours: log in to bv-brc.org, open browser console (F12), run copy(TOKEN)."}}},"security":[{"PatricToken":[]}]}