Related Documentation:
- System Design - Core concepts and data models
- Security - Authentication and security requirements
- Operations - Performance and monitoring standards
https://{HOST}/api/v{version}/{resource}[/{id}][/{sub-resource}]
GET /api/v1/snapshots- List snapshotsGET /api/v1/snapshots/123- Get specific snapshot with strategiesGET /api/v1/snapshots/123/workflows- List all workflow executions for snapshotPOST /api/v1/snapshots/123/workflows- Execute a workflow for snapshotGET /api/v1/workflows/456- Get specific workflow executionGET /api/v1/snapshots/123/scores- Get paginated weighted scoresGET /api/v1/snapshots/123/scores/{subId}- Get detailed score breakdownGET /api/v1/snapshots/123/scores/{subId}/proof- Get Merkle proof for scorePOST /api/v1/snapshots/123/verify- Verify score against onchain commitment
- Use kebab-case:
/reputation-shots,/vote-data - Plural nouns for collections:
/snapshots,/workflows - No trailing slashes
- Consistent version prefix:
/api/v1/
Content-Type: application/json
Authorization: Bearer {ddi_jwt_token} # DDI authentication token
X-Request-ID: {uuid} # Request tracking
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
- Filtering:
?status=completed&strategy=governance - Pagination:
?page=1&size=20 - Sorting:
?sort=created_at:desc
{
"data": {
"id": "snap_123",
"name": "Q1 2025 Governance Snapshot",
"status": "committed",
"created_at": "2025-06-01T12:00:00Z",
"commit": {
"workflow_id": "work_456",
"timestamp": "2025-06-02T12:00:00Z",
"transaction": "0x789...",
"block_number": 12345678,
"merkle_root": "0xabc..."
},
"strategies": [
{
"strategy": {
"name": "token-weighted-voting",
"version": "1.0.0",
"hash": "0x1234..."
},
"weight": 1.0,
"parameters": {
"start_block": 0,
"end_block": 12345678,
"min_balance": 100
}
}
]
},
"meta": {
"timestamp": "2025-06-01T12:00:00Z",
"request_id": "uuid",
"version": "1.0"
}
}Workflow status and details are provided by Temporal. The API endpoints that interact with workflows will return Temporal's workflow status and execution details. For more information about Temporal's workflow status and response format, refer to the Temporal documentation.
{
"error": {
"code": "SNAPSHOT_NOT_FOUND",
"message": "Snapshot with ID snap_123 does not exist",
"details": {
"snapshot_id": "snap_123",
"available_ids": ["snap_124", "snap_125"]
}
},
"meta": {
"timestamp": "2025-06-01T12:00:00Z",
"request_id": "uuid",
"version": "1.0"
}
}200- Successful GET/PUT/PATCH201- Successful POST202- Snapshot execution started (async)204- Successful DELETE
400- Bad Request (malformed syntax)401- Unauthorized (missing/invalid token)403- Forbidden (insufficient permissions)404- Resource Not Found409- Workflow already running for snapshot422- Validation Error429- Too Many Requests
500- Internal Server Error502- Bad Gateway503- Service Unavailable504- Gateway Timeout
- Snapshot operations: 10/hour per staff member
- Data queries: 1000/hour per staff member
- Status checks: No limit
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 9
X-RateLimit-Reset: 1625097600
X-RateLimit-Resource: snapshots
Access-Control-Allow-Origin: https://{HOST}
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization, X-Request-ID
Access-Control-Max-Age: 86400