GET /query?query=SELECT+*+WHERE+{+?s+?p+?o+}
Accept: application/sparql-results+json
POST /query
Content-Type: application/sparql-query
SELECT * WHERE { ?s ?p ?o } LIMIT 10
POST /update
Content-Type: application/sparql-update
Authorization: Bearer <write-key>
INSERT DATA { <http://ex.org/s> <http://ex.org/p> "value" }
POST /store
Content-Type: text/turtle
Authorization: Bearer <write-key>
@prefix ex: <http://example.org/> .
ex:s ex:p ex:o .
Supported formats: text/turtle, application/n-triples, application/n-quads, application/rdf+xml
GET /store
Accept: application/n-quads
POST /shacl/shapes
Content-Type: text/turtle
Authorization: Bearer <write-key>
# SHACL shapes in Turtle format
Response: 201 Created with {"loaded": true, "shape_count": N}
GET /shacl/shapes
Response: {"loaded": true, "shape_count": N}
DELETE /shacl/shapes
Authorization: Bearer <write-key>
POST /shacl/validate
Response: {"conforms": true/false, ...}
GET /shacl/mode
PUT /shacl/mode
Content-Type: application/json
Authorization: Bearer <write-key>
{"mode": "enforce"}
Valid modes: off, warn, enforce
GET /health
Returns 200 OK if server is alive.
GET /ready
Returns 200 READY if backend connection is healthy.
Write operations require Authorization: Bearer <key> when --write-key is set. Read operations (queries, health checks) are always open.
| Status | Meaning |
|---|---|
| 400 | Bad request (invalid SPARQL, missing parameters) |
| 401 | Unauthorized (missing or invalid write key) |
| 406 | Not acceptable (unsupported Accept header) |
| 408 | Request timeout (query exceeded timeout) |
| 415 | Unsupported media type |
| 422 | Unprocessable entity (SHACL validation failure) |
| 500 | Internal server error |