TrustGraph Config API
This API provides centralized configuration management for TrustGraph components. Configuration data is organized hierarchically by type and key, with support for persistent storage and push notifications.
Request/response
Request
The request contains the following fields:
operation
: The operation to perform (get
,list
,getvalues
,put
,delete
,config
)keys
: Array of ConfigKey objects (forget
,delete
operations)type
: Configuration type (forlist
,getvalues
operations)values
: Array of ConfigValue objects (forput
operation)
Response
The response contains the following fields:
version
: Version number for tracking changesvalues
: Array of ConfigValue objects returned by operationsdirectory
: Array of key names returned bylist
operationconfig
: Full configuration map returned byconfig
operationerror
: Error information if operation fails
Operations
PUT - Store Configuration Values
Request:
{
"operation": "put",
"values": [
{
"type": "test",
"key": "key1",
"value": "value1"
}
]
}
Response:
{
"version": 123
}
GET - Retrieve Configuration Values
Request:
{
"operation": "get",
"keys": [
{
"type": "test",
"key": "key1"
}
]
}
Response:
{
"version": 123,
"values": [
{
"type": "test",
"key": "key1",
"value": "value1"
}
]
}
LIST - List Keys by Type
Request:
{
"operation": "list",
"type": "test"
}
Response:
{
"version": 123,
"directory": ["key1", "key2", "key3"]
}
GETVALUES - Get All Values by Type
Request:
{
"operation": "getvalues",
"type": "test"
}
Response:
{
"version": 123,
"values": [
{
"type": "test",
"key": "key1",
"value": "value1"
},
{
"type": "test",
"key": "key2",
"value": "value2"
}
]
}
CONFIG - Get Entire Configuration
Request:
{
"operation": "config"
}
Response:
{
"version": 123,
"config": {
"test": {
"key1": "value1",
"key2": "value2"
}
}
}
DELETE - Remove Configuration Values
Request:
{
"operation": "delete",
"keys": [
{
"type": "test",
"key": "key1"
}
]
}
Response:
{
"version": 124
}
REST service
The REST service is available at /api/v1/config
and accepts the above request formats.
Websocket
Requests have a request
object containing the operation fields. Responses have a response
object containing the response fields.
Request:
{
"id": "unique-request-id",
"service": "config",
"request": {
"operation": "get",
"keys": [
{
"type": "test",
"key": "key1"
}
]
}
}
Response:
{
"id": "unique-request-id",
"response": {
"version": 123,
"values": [
{
"type": "test",
"key": "key1",
"value": "value1"
}
]
},
"complete": true
}
Pulsar
The Pulsar schema for the Config API is defined in Python code here:
https://github.com/trustgraph-ai/trustgraph/blob/master/trustgraph-base/trustgraph/schema/config.py
Default request queue: non-persistent://tg/request/config
Default response queue: non-persistent://tg/response/config
Request schema: trustgraph.schema.ConfigRequest
Response schema: trustgraph.schema.ConfigResponse
Python SDK
The Python SDK provides convenient access to the Config API:
from trustgraph.api.config import ConfigClient
client = ConfigClient()
# Put a value
await client.put("test", "key1", "value1")
# Get a value
value = await client.get("test", "key1")
# List keys
keys = await client.list("test")
# Get all values for a type
values = await client.get_values("test")
Features
- Hierarchical Organization: Configuration organized by type and key
- Versioning: Each operation returns a version number for change tracking
- Persistent Storage: Data stored in Cassandra for persistence
- Push Notifications: Configuration changes pushed to subscribers
- Multiple Access Methods: Available via Pulsar, REST, WebSocket, and Python SDK