NL2SQL API
FastAPI REST service for the NL2SQL engine (nl2sql-engine). At startup it
loads the .env next to nl2sql.yaml (never overriding a variable already
set), builds one engine with NL2SQL.from_config() from the same config as the
CLI (NL2SQL_CONFIG, else ./nl2sql.yaml), calls engine.check(), and serves
it under /api/v1. A datasource marked required: true that cannot connect
stops it from starting; any other one that fails is left out.
Running the API
pip install nl2sql-api
NL2SQL_CONFIG=nl2sql-demo/nl2sql.yaml nl2sql-api --host 127.0.0.1 --port 8000 [--reload]
# or: python -m nl2sql_api.server ..., or: uvicorn nl2sql_api.main:app
Interactive docs: Swagger UI at /docs, ReDoc at /redoc, the schema at
/openapi.json.
The API's own settings are the api section of nl2sql.yaml; the engine
ignores it:
api:
role_header: X-NL2SQL-Role # a header a trusted proxy sets on every request
role: null # or one static role for every request
trust_body_role: false # local testing only: the body's user_context
cors_origins: [] # browser origins allowed to call the API
The API does not authenticate callers and never takes the RBAC role from the
request body unless api.trust_body_role is on (it logs a warning). With no
role source, /api/v1/query and /api/v1/query/stream answer HTTP 401.
The routes that change datasources, LLMs or the index need a role listed in
policies.admin_roles (default [admin]), else HTTP 403. With no role setting
at all they answer loopback clients only.
The Docker image (packages/api/Dockerfile) reads /etc/nl2sql/nl2sql.yaml:
mount a config folder there, and a volume for storage.path.
Endpoints
POST /api/v1/query- Ask a question as the configured rolePOST /api/v1/query/stream- The same, as Server-Sent Events: each step as it runs, the result manifest, the answer as it is written, then the/queryresponseGET /api/v1/health- Liveness checkGET /api/v1/ready- Readiness check (does not yet check dependencies)POST /api/v1/datasource- Register a datasource in the running process (configis onedatasourcesentry:id,type,connection, ...)GET /api/v1/datasource- List the datasources, with their status and masked connectionsGET /api/v1/datasource/{datasource_id}- One datasourceDELETE /api/v1/datasource/{datasource_id}- Take a datasource out of the running processPUT /api/v1/settings/llm- Replace the wholellmsection in the running process (admin only; 422 with the config error)GET /api/v1/llm- Each agent and the model it runs onGET /api/v1/llm/{agent}- One agent's modelPOST /api/v1/index/{datasource_id}- Index one datasource's schemaPOST /api/v1/index-all- Index every configured datasourceDELETE /api/v1/index- Clear the vector storeGET /api/v1/index/status- Index health (status, entries by type, embedding model, problems)
Reference: https://github.com/nadeem4/nl2sql/blob/main/docs/api/rest/index.md.
Metadata
Release files for nl2sql-api 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nl2sql_api-0.6.0.tar.gz | 30.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nl2sql_api-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 51.0 kB
Release files / nl2sql_api-0.6.0.tar.gz
| Download URL | nl2sql_api-0.6.0.tar.gz |
|---|---|
| Size | 30.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ee6fa458a6d37722ec6334e1a1b1aa09b65c274cc8cad31dfb875aecd6adda6d
|
|
BLAKE2b-256 checksum How to use checksums |
98d1790cc734fdc0da8ae0a114014c2696b22f745be771b96a113d4c239c3696
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / nl2sql_api-0.6.0-py3-none-any.whl
| Download URL | nl2sql_api-0.6.0-py3-none-any.whl |
|---|---|
| Size | 21.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2fcad84b8399b64ba87fdcb78278936598e6632b928fb8c69dfee182279d0b55
|
|
BLAKE2b-256 checksum How to use checksums |
28cc727da92c2af6a5cb33f0b52791b905c23f9495251bd1e6a30ef57c71bccf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|