Skip to main content

List Digital Twins

Returns all digital twins for a project.
curl -X GET "http://localhost:8080/api/digital-twins?project_id=proj-123"

Query Parameters

project_id
string
required
Filter by project ID

Response

twins
array
Array of digital twin objects

Create Digital Twin

Creates a new digital twin and initialises its entity graph from the associated ontology.
curl -X POST http://localhost:8080/api/digital-twins \
  -H "Content-Type: application/json" \
  -d '{
    "project_id": "proj-123",
    "ontology_id": "onto-456",
    "name": "Factory Floor Twin",
    "description": "Digital twin of manufacturing floor",
    "config": {
      "storage_ids": ["storage-789"],
      "cache_ttl": 300,
      "auto_sync": true,
      "sync_interval": 60,
      "enable_predictions": true,
      "indexing_strategy": "eager"
    }
  }'

Request Body

project_id
string
required
Project ID to associate with
ontology_id
string
required
Ontology ID defining the entity schema
name
string
required
Digital twin name
description
string
Digital twin description
config
object
Configuration options

Response

Returns the created digital twin object.

Get Digital Twin

Returns a single digital twin by ID.
curl -X GET http://localhost:8080/api/digital-twins/twin-123

Path Parameters

id
string
required
Digital twin ID

Response

Returns the digital twin object (see List Digital Twins for schema).

Update Digital Twin

Updates a digital twin’s configuration or status.
curl -X PUT http://localhost:8080/api/digital-twins/twin-123 \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Updated description",
    "config": {
      "auto_sync": false
    }
  }'

Path Parameters

id
string
required
Digital twin ID

Request Body

All fields are optional. Only provided fields will be updated.
name
string
New name
description
string
New description
status
string
New status: active, syncing, or error
config
object
Updated configuration

Response

Returns the updated digital twin object.

Delete Digital Twin

Deletes a digital twin.
curl -X DELETE http://localhost:8080/api/digital-twins/twin-123

Path Parameters

id
string
required
Digital twin ID

Response

Returns 204 No Content on success.

Sync Digital Twin

Pulls the latest records from the twin’s linked storage backends and refreshes the entity graph.
curl -X POST http://localhost:8080/api/digital-twins/twin-123/sync

Path Parameters

id
string
required
Digital twin ID

Response

{
  "status": "synced"
}

Entities

List Entities

Returns all entities in a digital twin.
curl -X GET http://localhost:8080/api/digital-twins/twin-123/entities

Path Parameters

id
string
required
Digital twin ID

Response

Returns an array of entity objects.

Get Entity

Returns a single entity by ID.
curl -X GET http://localhost:8080/api/digital-twins/twin-123/entities/entity-456

Path Parameters

id
string
required
Digital twin ID
entityId
string
required
Entity ID

Response

id
string
Entity ID
digital_twin_id
string
Digital twin ID
type
string
Entity type from ontology
attributes
object
Current attribute values
source_data_id
string
Reference to CIR data ID
is_modified
boolean
True if has delta changes
modifications
object
Delta changes
relationships
array
Array of entity relationships
computed_values
object
Cached computed values
created_at
string
ISO 8601 timestamp
updated_at
string
ISO 8601 timestamp

Update Entity

Updates an entity’s attributes.
curl -X PUT http://localhost:8080/api/digital-twins/twin-123/entities/entity-456 \
  -H "Content-Type: application/json" \
  -d '{
    "attributes": {
      "temperature": 25.5,
      "status": "operational"
    }
  }'

Path Parameters

id
string
required
Digital twin ID
entityId
string
required
Entity ID

Request Body

attributes
object
required
Key-value pairs of attributes to update

Response

Returns the updated entity object.
Returns entities connected to the given entity by a typed relationship traversal.
curl -X GET "http://localhost:8080/api/digital-twins/twin-123/entities/entity-456/related?relationship=connectedTo"

Path Parameters

id
string
required
Digital twin ID
entityId
string
required
Entity ID

Query Parameters

relationship
string
Relationship type to traverse

Response

Returns an array of related entity objects.

Execute SPARQL Query

Runs a SPARQL SELECT query against the twin’s entity graph.
curl -X POST http://localhost:8080/api/digital-twins/twin-123/query \
  -H "Content-Type: application/json" \
  -d '{
    "query": "SELECT ?sensor ?temp WHERE { ?sensor a :Sensor . ?sensor :temperature ?temp . FILTER(?temp > 25) }",
    "limit": 100
  }'

Path Parameters

id
string
required
Digital twin ID

Request Body

query
string
required
SPARQL SELECT query
bindings
object
Variable bindings (key-value pairs)
limit
number
Maximum results to return
offset
number
Number of results to skip

Response

columns
array
Column names
rows
array
Array of result rows (objects)
count
number
Number of results
metadata
object
Query metadata

Run Prediction

Runs a single or batch inference using the twin’s trained ML models. Provide a top-level inputs array for batch mode; omit it for single-record mode.
curl -X POST http://localhost:8080/api/digital-twins/twin-123/predict \
  -H "Content-Type: application/json" \
  -d '{
    "model_id": "model-456",
    "entity_id": "entity-789",
    "use_cache": true
  }'

Path Parameters

id
string
required
Digital twin ID

Request Body

model_id
string
required
ML model ID to use
entity_id
string
Entity ID (auto-populates input from entity attributes)
entity_type
string
Entity type
input
object
Input features (required if entity_id not provided)
use_cache
boolean
Whether to use cached predictions (defaults to true)

Response

id
string
Prediction ID
digital_twin_id
string
Digital twin ID
model_id
string
Model ID
entity_id
string
Entity ID
output
any
Prediction output
confidence
number
Confidence score
cached_at
string
ISO 8601 timestamp
expires_at
string
ISO 8601 timestamp

Scenarios

List Scenarios

Returns all scenarios for a digital twin.
curl -X GET http://localhost:8080/api/digital-twins/twin-123/scenarios

Path Parameters

id
string
required
Digital twin ID

Response

Returns an array of scenario objects.

Create Scenario

Defines a what-if scenario by specifying entity attribute modifications. Results are computed in-memory; the live entity graph is never mutated.
curl -X POST http://localhost:8080/api/digital-twins/twin-123/scenarios \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Temperature Increase Scenario",
    "description": "What if all sensors report 10 degrees higher?",
    "modifications": [
      {
        "entity_type": "Sensor",
        "entity_id": "sensor-001",
        "attribute": "temperature",
        "original_value": 22.5,
        "new_value": 32.5,
        "rationale": "Simulate heat wave"
      }
    ],
    "run_predictions": true
  }'

Path Parameters

id
string
required
Digital twin ID

Request Body

name
string
required
Scenario name
description
string
Scenario description
base_state
string
Base state: current or historical (defaults to current)
modifications
array
required
Array of modifications
run_predictions
boolean
Whether to run predictions immediately

Response

Returns the created scenario object with predictions if requested.

Get Scenario

Returns a single scenario by ID.
curl -X GET http://localhost:8080/api/digital-twins/twin-123/scenarios/scenario-456

Path Parameters

id
string
required
Digital twin ID
scenarioId
string
required
Scenario ID

Response

Returns the scenario object.

Delete Scenario

Deletes a scenario.
curl -X DELETE http://localhost:8080/api/digital-twins/twin-123/scenarios/scenario-456

Path Parameters

id
string
required
Digital twin ID
scenarioId
string
required
Scenario ID

Response

Returns 204 No Content on success.

Actions

List Actions

Returns all actions for a digital twin.
curl -X GET http://localhost:8080/api/digital-twins/twin-123/actions

Path Parameters

id
string
required
Digital twin ID

Response

Returns an array of action objects.

Create Action

Registers an action that can be applied to entities within the digital twin.
curl -X POST http://localhost:8080/api/digital-twins/twin-123/actions \
  -H "Content-Type: application/json" \
  -d '{
    "name": "High Temperature Alert",
    "description": "Trigger pipeline when temperature exceeds threshold",
    "enabled": true,
    "condition": {
      "attribute": "temperature",
      "operator": "gt",
      "threshold": 30,
      "entity_type": "Sensor"
    },
    "trigger": {
      "pipeline_id": "pipe-alert-123",
      "parameters": {
        "severity": "high"
      }
    }
  }'

Path Parameters

id
string
required
Digital twin ID

Request Body

name
string
required
Action name
description
string
Action description
enabled
boolean
required
Whether action is enabled
condition
object
required
Trigger condition
trigger
object
required
Action to execute

Response

Returns the created action object.

Get Action

Returns a single action by ID.
curl -X GET http://localhost:8080/api/digital-twins/twin-123/actions/action-456

Path Parameters

id
string
required
Digital twin ID
actionId
string
required
Action ID

Response

Returns the action object.

Delete Action

Deletes an action.
curl -X DELETE http://localhost:8080/api/digital-twins/twin-123/actions/action-456

Path Parameters

id
string
required
Digital twin ID
actionId
string
required
Action ID

Response

Returns 204 No Content on success.

Build docs developers (and LLMs) love