CECs_annotating_agent / schema_tool.txt
Qianhui19's picture
Upload schema_tool.txt
6bc1e38 verified
openapi: 3.0.1
info:
title: SQL Executor for Dual Databases
description: |
Execute read-only SQL queries on two specialized databases and return structured JSON results:
- pubchemlite: Compound basic information database (core table: pubchemlite_exposomics_20251226)
- invitrodb_v4_3: In vitro toxicity experiment database (core tables: assay, chemical, mc0, assay_component)
(Adapted for local/server Flask API, only SELECT queries supported, write/modify operations prohibited)
version: 1.0.0
servers:
- url: http://192.168.0.179:5000
description: Main API Server
paths:
/execute_sql:
post:
summary: Execute SELECT query on specified database
operationId: executeSqlPost
description: |
Execute read-only SELECT queries on pubchemlite or invitrodb_v4_3 database.
Notes:
1. Only SELECT operation is allowed (INSERT/UPDATE/DELETE/DROP are prohibited);
2. For fields with special characters (e.g. pred_CCS_A2_[M+H]+ in pubchemlite), escape []/+ with backslash (\) or use backticks (`);
3. Avoid Python format characters (%, A, s, d) in SQL to prevent parsing errors;
4. Add LIMIT clause to avoid large result sets (recommended LIMIT 100).
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
db_identifier:
type: string
description: Target database identifier (case-sensitive)
enum: [pubchemlite, invitrodb_v4_3]
example: "pubchemlite"
x-validation: "Must be one of the specified enum values"
sql:
type: string
description: |
Valid MySQL SELECT query (only):
## pubchemlite (core table: pubchemlite_exposomics_20251226)
Key fields:
- Basic info: Identifier, CompoundName, MolecularFormula, SMILES, XLogP
- Literature/Patent: PubMed_Count, Patent_Count
- Toxicity/Property: SafetyInfo, ToxicityInfo, MonoisotopicMass
- Predicted CCS: pred_CCS_A2_[M+H]+, pred_CCS_A2_[M+Na]+, pred_CCS_A2_[M-H]- (escape special chars!)
## invitrodb_v4_3 (core tables)
- assay: aid, assay_name, organism, tissue, ncbi_taxon_id
- chemical: chid, casn, chnm (chemical name), dsstox_substance_id
- mc0: m0id, acid, spid, conc (concentration μM), rval (response value)
- assay_component: acid, assay_component_name (toxicity type)
examples:
pubchemlite_example:
summary: Query compound basic info (with escaped special field)
value: "SELECT Identifier, CompoundName, `pred_CCS_A2_[M+H]+` FROM pubchemlite_exposomics_20251226 WHERE PubMed_Count > 5 LIMIT 10"
invitrodb_example:
summary: Query human in vitro toxicity data
value: "SELECT c.chnm, a.assay_name, m.conc, m.rval FROM chemical c JOIN mc0 m ON c.dsstox_substance_id = m.dsstox_substance_id JOIN assay a ON m.aid = a.aid WHERE a.ncbi_taxon_id = 9606 LIMIT 10"
required:
- db_identifier
- sql
x-error-tips: |
1. Missing required parameters: Ensure both db_identifier and sql are provided;
2. Invalid db_identifier: Only pubchemlite/invitrodb_v4_3 are allowed;
3. SQL syntax error: Check field/table names and special character escaping.
responses:
'200':
description: Query executed successfully (returns array of records)
content:
application/json:
schema:
type: object
properties:
status:
type: string
enum: [success, error]
description: Execution status
data:
type: array
items:
type: object
description: Query results (key = field name, value = field value)
additionalProperties: true
message:
type: string
description: Error message (empty if success)
examples:
pubchemlite_response:
summary: pubchemlite query success
value:
status: "success"
data: [
{
"Identifier": "CID12345",
"CompoundName": "Aspirin",
"MolecularFormula": "C9H8O4",
"pred_CCS_A2_[M+H]+": 181.05
}
]
message: ""
invitrodb_response:
summary: invitrodb_v4_3 query success
value:
status: "success"
data: [
{
"chnm": "Aspirin",
"assay_name": "Cell Viability Assay",
"conc": 10.0,
"rval": 25.8
}
]
message: ""
'400':
description: Bad Request (client-side error)
content:
application/json:
schema:
type: object
properties:
status:
type: string
default: "error"
message:
type: string
examples:
invalid_db_identifier:
summary: Incorrect database identifier
value:
status: "error"
message: "Parameter error: db_identifier only supports pubchemlite/invitrodb_v4_3"
special_char_error:
summary: Unescaped special characters in SQL
value:
status: "error"
message: "SQL parsing error: pred_CCS_A2_[M+H]+ needs escaping (recommended: `pred_CCS_A2_[M+H]+` or pred_CCS_A2_\\[M+H\\]+)"
format_char_conflict:
summary: Python format character conflict
value:
status: "error"
message: "Request processing failed: unsupported format character 'A' (please avoid %/A/s/d format characters in SQL)"
cross_db_field:
summary: Cross-database field query
value:
status: "error"
message: "SQL syntax error: CompoundName field does not exist in invitrodb_v4_3 database (this field is only supported in pubchemlite)"
'500':
description: Server Error (database/server-side error)
content:
application/json:
schema:
type: object
properties:
status:
type: string
default: "error"
message:
type: string
examples:
db_connection_failed:
summary: Database connection timeout
value:
status: "error"
message: "Database connection failed: pubchemlite database connection timeout, please check database configuration"
table_not_exist:
summary: Table does not exist in target database
value:
status: "error"
message: "Database execution error: assay table does not exist in pubchemlite database (this table is only supported in invitrodb_v4_3)"
sql_timeout:
summary: SQL query timeout
value:
status: "error"
message: "SQL execution timeout: please add LIMIT to restrict returned rows (recommended LIMIT 100)"
parameters: []
components:
schemas: {}