This page maps the FastAPI routers to their endpoints, with brief descriptions and auth notes.
Routers Overviewο
zyra.api.routers.cli
GET /cli/commands
β Discovery: stages, commands, and argument schemas (with examples)GET /cli/examples
β Curated example request bodies and pipelinesPOST /cli/run
β Execute a CLI command (sync or async)GET /examples
β Interactive examples page (Upload β Run β Download, WS streaming)Auth: Requires API key header when
ZYRA_API_KEY
is set (except/docs
and/redoc
)
zyra.api.routers.search
GET /search
β Perform discovery across sources (local/profile/OGC); JSON outputGET /search/profiles
β List bundled discovery profilesPOST /search
β Discovery with JSON body; setanalyze: true
for LLM-assisted summary and picksAuth: Requires API key header when enabled
zyra.api.routers.files
POST /upload
β Multipart file upload; returns{file_id, path}
Auth: Requires API key header when enabled
Notes: Uploaded files are written under
ZYRA_UPLOAD_DIR
(default/tmp/zyra_uploads
)
zyra.api.routers.jobs
GET /jobs/{job_id}
β Job status (stdout, stderr, exit_code, output_file, resolved_input_paths)DELETE /jobs/{job_id}
β Cancel a queued jobGET /jobs/{job_id}/manifest
β JSON list of job artifacts (name, path, size, mtime, media_type)GET /jobs/{job_id}/download
β Download an artifact; supports?file=NAME
and?zip=1
Auth: Requires API key header when enabled
Notes: Results under
ZYRA_RESULTS_DIR/{job_id}
; TTL viaZYRA_RESULTS_TTL_SECONDS
; periodic prune via cleanup loop
zyra.api.routers.ws
WS /ws/jobs/{job_id}
β Live JSON messages for logs/progress/final payloadQuery params:
api_key
(whenZYRA_API_KEY
is set) β requiredstream=stdout,stderr,progress
β filter which keys to stream
Auth: Fail-fast on bad/missing key (closes with code 1008, no data)
Modes: Redis pub/sub or in-memory pub/sub parity
Auth Recapο
HTTP endpoints (CLI, Files, Jobs) require the API key header when configured
WebSocket requires
?api_key=
in the URL when configured/examples
page can be gated withZYRA_REQUIRE_KEY_FOR_EXAMPLES=1
OpenAPI docs remain readable without a key
Common Workflowsο
Upload β Run β Download
POST /upload
(storefile_id
)POST /cli/run
(usefile_id:<id>
placeholder in args) β async returnsjob_id
Stream:
ws://.../ws/jobs/{job_id}?api_key=<key>&stream=progress
GET /jobs/{job_id}
untilstatus=succeeded
;GET /jobs/{job_id}/download
to fetch artifact
Discovery and Examples
GET /cli/commands
for per-command schemas and examplesGET /cli/examples
for curated examples; try them in/examples
Environment Variables (selected)ο
Auth:
ZYRA_API_KEY
,ZYRA_API_KEY_HEADER
,ZYRA_REQUIRE_KEY_FOR_EXAMPLES
CORS:
ZYRA_CORS_ALLOW_ALL
,ZYRA_CORS_ORIGINS
Uploads:
ZYRA_UPLOAD_DIR
Results:
ZYRA_RESULTS_DIR
,ZYRA_RESULTS_TTL_SECONDS
,ZYRA_RESULTS_CLEAN_INTERVAL_SECONDS
Streaming:
ZYRA_USE_REDIS
,ZYRA_REDIS_URL
,ZYRA_QUEUE