Skip to content

API Reference

This document covers the primary API surface. All endpoints accept and return JSON unless noted otherwise.

  • X-Tenant-ID
  • X-Workspace-ID
  • X-Context-ID
  • Authorization: Bearer <token> (required for all authenticated endpoints)

Every service exposes GET /health and returns JSON with dependency status.

POST /sparql
Content-Type: application/sparql-query
Accept: application/sparql-results+json
POST /sparql/update
Content-Type: application/sparql-update
POST /gql
Content-Type: application/json

Request body:

{
"start": "urn:ex:Alice",
"predicates": ["urn:ex:knows"],
"direction": "out",
"depth": 1,
"limit": 25
}
POST /statements
Content-Type: application/json
{
"subject": "urn:ex:Alice",
"predicate": "urn:ex:knows",
"object": "urn:ex:Bob",
"objectType": "iri",
"contextId": "urn:tenant:t1:ws:w1:graph:core",
"metadata": {"confidence": 0.92}
}
POST /statements/batch
GET /statements/{id}
GET /statements/stats
GET /shapes
POST /shapes
Content-Type: application/json
{
"name": "PersonShape",
"turtle": "@prefix sh: <http://www.w3.org/ns/shacl#> ..."
}
GET /shapes/{id}/ui
POST /validate
{
"shapeId": "urn:keystone:shape:...",
"limit": 5000
}
POST /gql

Response:

{
"nodes": [{"nodeId":"urn:ex:Alice"}],
"edges": [{"edgeId":"urn:keystone:stmt:...","from":"...","to":"..."}]
}
GET /search?q=climate&limit=20
POST /search/vector
{
"vector": [0.01, 0.02, 0.03],
"limit": 10
}
POST /catalog/datasets
GET /catalog/datasets
GET /catalog/datasets/{id}
POST /catalog/distributions
GET /catalog/distributions/{id}
POST /workflow/artifacts
GET /workflow/{id}/status
POST /workflow/{id}/submit
POST /workflow/{id}/publish
POST /workflow/{id}/deprecate
POST /workflow/{id}/archive
POST /workflow/{id}/reject
POST /ingestions/statements
GET /ingestions/{id}
POST /ontologies
GET /ontologies
POST /ontologies/score
POST /tutor/answer
POST /tutor/summarize