Skip to main content

DatomsDBS API 参考文档

版本: 1.0
基础URL: http://localhost:9000/api


目录

  1. 认证 (Authentication)
  2. 数据源管理 API
  3. 数据资产管理 API
  4. DatomsDB 操作 API
  5. 用户与权限管理 API
  6. AI Agent API
  7. 文件管理 API
  8. 系统管理 API
  9. 错误代码说明

认证 (Authentication)

获取访问令牌

端点: POST /auth/login

描述: 用户登录获取 JWT 访问令牌

请求体:

{
"username": "admin",
"password": "admin123"
}

成功响应 (200):

{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": "admin",
"username": "admin",
"roles": ["admin"]
},
"expiresIn": "24h"
}

错误响应 (401):

{
"success": false,
"error": "Invalid credentials"
}

令牌验证

端点: GET /auth/verify

请求头:

Authorization: Bearer <token>

成功响应 (200):

{
"valid": true,
"user": {
"id": "admin",
"username": "admin",
"roles": ["admin"]
}
}

数据源管理 API

获取数据源列表

端点: GET /data-sources

请求头:

Authorization: Bearer <token>

查询参数:

  • type (可选): 数据源类型过滤 (mysql, postgresql, mongodb, csv, etc.)
  • status (可选): 状态过滤 (active, inactive)
  • page (可选): 分页页码,默认 1
  • limit (可选): 每页数量,默认 20

成功响应 (200):

{
"success": true,
"data": [
{
"id": "ds_1234567890",
"name": "用户数据库",
"type": "mysql",
"status": "active",
"config": {
"host": "localhost",
"port": 3306,
"database": "userdb"
},
"createdAt": "2024-12-28T10:00:00.000Z",
"lastConnected": "2024-12-28T15:30:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 5,
"pages": 1
}
}

创建数据源

端点: POST /data-sources

请求头:

Authorization: Bearer <token>
Content-Type: application/json

请求体 (MySQL 示例):

{
"name": "生产用户数据库",
"type": "mysql",
"config": {
"host": "mysql.example.com",
"port": 3306,
"database": "prod_users",
"username": "readonly_user",
"password": "secure_password",
"ssl": true
},
"description": "生产环境用户数据",
"tags": ["production", "users"]
}

请求体 (MongoDB 示例):

{
"name": "日志数据库",
"type": "mongodb",
"config": {
"uri": "mongodb://user:pass@cluster.mongodb.net/logs?retryWrites=true",
"database": "application_logs",
"collection": "error_logs"
}
}

请求体 (CSV 文件示例):

{
"name": "销售数据",
"type": "csv",
"config": {
"filePath": "/data/uploads/sales_2024.csv",
"delimiter": ",",
"hasHeader": true,
"encoding": "utf-8"
}
}

成功响应 (201):

{
"success": true,
"data": {
"id": "ds_1234567890",
"name": "生产用户数据库",
"type": "mysql",
"status": "active",
"createdAt": "2024-12-28T10:00:00.000Z"
}
}

测试数据源连接

端点: POST /data-sources/{id}/test

请求头:

Authorization: Bearer <token>

成功响应 (200):

{
"success": true,
"message": "连接测试成功",
"details": {
"responseTime": 45,
"recordCount": 1250,
"schema": {
"tables": ["users", "orders", "products"]
}
}
}

获取数据源数据预览

端点: GET /data-sources/{id}/preview

查询参数:

  • limit (可选): 预览记录数,默认 10,最大 100
  • table (可选): 指定表名 (关系型数据库)

成功响应 (200):

{
"success": true,
"data": {
"records": [
{
"id": 1,
"username": "john_doe",
"email": "john@example.com",
"created_at": "2024-01-15T10:30:00.000Z"
}
],
"schema": {
"id": "integer",
"username": "string",
"email": "string",
"created_at": "datetime"
},
"totalRecords": 1250,
"previewCount": 10
}
}

数据资产管理 API

获取数据资产列表

端点: GET /data-assets

查询参数:

  • category (可选): 分类过滤
  • owner (可选): 所有者过滤
  • search (可选): 搜索关键词
  • page, limit: 分页参数

成功响应 (200):

{
"success": true,
"data": [
{
"id": "asset_1234567890",
"name": "用户行为分析数据集",
"description": "包含用户登录、页面访问、购买行为等数据",
"category": "analytics",
"owner": "data_team",
"sourceId": "ds_1234567890",
"schema": {
"user_id": "string",
"event_type": "string",
"timestamp": "instant",
"properties": "object"
},
"recordCount": 50000,
"size": "125MB",
"createdAt": "2024-12-28T10:00:00.000Z",
"lastUpdated": "2024-12-28T15:30:00.000Z",
"tags": ["behavior", "analytics", "users"]
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 25,
"pages": 2
}
}

创建数据资产

端点: POST /data-assets

请求体:

{
"name": "客户订单分析",
"description": "客户订单数据的聚合分析",
"category": "business",
"sourceId": "ds_1234567890",
"extractConfig": {
"query": "SELECT * FROM orders WHERE created_date >= '2024-01-01'",
"incremental": true,
"updateField": "updated_at"
},
"transformations": [
{
"type": "filter",
"condition": "status = 'completed'"
},
{
"type": "aggregate",
"groupBy": ["customer_id"],
"metrics": ["sum(amount)", "count(*)"]
}
],
"tags": ["orders", "customers", "revenue"]
}

成功响应 (201):

{
"success": true,
"data": {
"id": "asset_9876543210",
"name": "客户订单分析",
"status": "processing",
"estimatedCompletion": "2024-12-28T16:00:00.000Z"
}
}

获取数据资产详情

端点: GET /data-assets/{id}

成功响应 (200):

{
"success": true,
"data": {
"id": "asset_1234567890",
"name": "用户行为分析数据集",
"description": "包含用户登录、页面访问、购买行为等数据",
"category": "analytics",
"owner": "data_team",
"sourceId": "ds_1234567890",
"status": "ready",
"schema": {
"user_id": "string",
"event_type": "string",
"timestamp": "instant",
"properties": "object"
},
"statistics": {
"recordCount": 50000,
"size": "125MB",
"lastUpdated": "2024-12-28T15:30:00.000Z",
"updateFrequency": "daily"
},
"access": {
"public": false,
"allowedRoles": ["analyst", "admin"],
"allowedUsers": ["john.doe", "jane.smith"]
},
"lineage": {
"upstream": ["ds_1234567890"],
"downstream": ["dashboard_user_analytics"]
}
}
}

DatomsDB 操作 API

获取数据库列表

端点: GET /datoms/databases

成功响应 (200):

{
"success": true,
"databases": [
{
"name": "user_analytics",
"created": "2024-12-28T10:00:00.000Z",
"size": "50MB",
"recordCount": 25000,
"encrypted": false
},
{
"name": "secure_finance",
"created": "2024-12-27T14:30:00.000Z",
"size": "120MB",
"recordCount": 75000,
"encrypted": true
}
]
}

创建数据库

端点: POST /datoms/databases

请求体:

{
"name": "new_analytics_db",
"schema": {
"user_id": "string",
"event": "string",
"timestamp": "instant",
"data": "object"
},
"options": {
"encrypted": false,
"autoSave": true,
"saveInterval": 60000
}
}

执行查询

端点: POST /datoms/databases/{dbName}/query

请求体 (Datalog 查询):

{
"query": "[:find ?user ?event :where [?e :user_id ?user] [?e :event ?event]]",
"inputs": {},
"limit": 100
}

请求体 (简化查询):

{
"entity": "user_events",
"where": {
"event": "login",
"timestamp": {
">": "2024-12-28T00:00:00.000Z"
}
},
"select": ["user_id", "timestamp", "ip_address"],
"limit": 50,
"orderBy": [{"field": "timestamp", "direction": "desc"}]
}

成功响应 (200):

{
"success": true,
"data": [
["user123", "login"],
["user456", "purchase"],
["user789", "logout"]
],
"count": 3,
"executionTime": 15
}

执行事务

端点: POST /datoms/databases/{dbName}/transact

请求体:

{
"transaction": [
{
"op": "add",
"entity": "user123",
"attribute": "last_login",
"value": "2024-12-28T16:00:00.000Z"
},
{
"op": "add",
"entity": "user123",
"attribute": "login_count",
"value": 25
}
]
}

成功响应 (200):

{
"success": true,
"transactionId": "tx_1234567890",
"timestamp": "2024-12-28T16:00:00.000Z",
"entitiesAffected": 1
}

用户与权限管理 API

获取用户列表

端点: GET /admin/users

权限要求: admin 角色

成功响应 (200):

{
"success": true,
"users": [
{
"id": "user_1",
"username": "john.doe",
"email": "john@example.com",
"roles": ["analyst"],
"active": true,
"lastLogin": "2024-12-28T15:30:00.000Z",
"createdAt": "2024-12-01T10:00:00.000Z"
}
]
}

创建用户

端点: POST /admin/users

请求体:

{
"username": "jane.smith",
"email": "jane@example.com",
"password": "SecurePassword123!",
"roles": ["analyst"],
"permissions": {
"dataSources": ["read"],
"dataAssets": ["read", "create"]
}
}

获取角色列表

端点: GET /admin/roles

成功响应 (200):

{
"success": true,
"roles": [
{
"id": "admin",
"name": "Administrator",
"description": "Full system access",
"permissions": ["*"]
},
{
"id": "analyst",
"name": "Data Analyst",
"description": "Data access and analysis",
"permissions": [
"data-sources:read",
"data-assets:read",
"data-assets:create",
"datoms:query"
]
}
]
}

AI Agent API

聊天查询

端点: POST /agents/chat

请求体:

{
"message": "显示过去一周的用户登录趋势",
"database": "user_analytics",
"context": {
"previousQueries": [],
"preferredFormat": "table"
}
}

成功响应 (200):

{
"success": true,
"response": {
"answer": "根据数据分析,过去一周用户登录呈现上升趋势...",
"query": "[:find ?date (count ?user) :where [?e :user_id ?user] [?e :event \"login\"] [?e :timestamp ?t] [(>= ?t \"2024-12-21\")] [(format-date ?t \"YYYY-MM-DD\" ?date)] :group-by ?date]",
"data": [
["2024-12-22", 1250],
["2024-12-23", 1380],
["2024-12-24", 1150]
],
"visualization": {
"type": "line_chart",
"config": {
"x": "date",
"y": "login_count",
"title": "Weekly Login Trend"
}
}
},
"executionTime": 1500
}

执行 Agent

端点: POST /agents/execute

请求体:

{
"agent": "dataAnalysisAgent",
"task": "analyze_user_behavior",
"parameters": {
"timeRange": "7d",
"metrics": ["login", "purchase", "session_duration"],
"groupBy": "daily"
},
"database": "user_analytics"
}

文件管理 API

上传文件

端点: POST /files/upload

请求头:

Content-Type: multipart/form-data
Authorization: Bearer <token>

表单数据:

  • file: 文件内容
  • category (可选): 文件分类
  • description (可选): 文件描述

成功响应 (200):

{
"success": true,
"file": {
"id": "file_1234567890",
"filename": "sales_data.csv",
"originalName": "Q4_Sales_Report.csv",
"size": 2048576,
"mimeType": "text/csv",
"hash": "a1b2c3d4e5f6...",
"uploadedAt": "2024-12-28T16:00:00.000Z",
"url": "/api/files/file_1234567890/download"
}
}

获取文件列表

端点: GET /files

查询参数:

  • category: 文件分类过滤
  • mimeType: MIME 类型过滤
  • search: 文件名搜索

成功响应 (200):

{
"success": true,
"files": [
{
"id": "file_1234567890",
"filename": "sales_data.csv",
"size": 2048576,
"mimeType": "text/csv",
"uploadedAt": "2024-12-28T16:00:00.000Z"
}
]
}

下载文件

端点: GET /files/{id}/download

响应: 文件二进制内容


系统管理 API

系统健康检查

端点: GET /health

成功响应 (200):

{
"status": "ok",
"version": "0.1.0",
"timestamp": "2024-12-28T16:00:00.000Z",
"uptime": 3600,
"memory": {
"used": "125MB",
"total": "512MB",
"percentage": 24.4
},
"services": {
"database": "ok",
"fileStorage": "ok",
"aiService": "ok"
}
}

系统统计

端点: GET /admin/stats

权限要求: admin 角色

成功响应 (200):

{
"success": true,
"stats": {
"dataSources": {
"total": 15,
"active": 12,
"byType": {
"mysql": 5,
"postgresql": 3,
"mongodb": 2,
"files": 5
}
},
"dataAssets": {
"total": 45,
"totalSize": "2.5GB",
"totalRecords": 1250000
},
"users": {
"total": 25,
"active": 23,
"lastDay": 8
},
"api": {
"requestsToday": 2540,
"avgResponseTime": 45,
"errorRate": 0.2
}
}
}

错误代码说明

HTTP 状态码

  • 200 OK: 请求成功
  • 201 Created: 资源创建成功
  • 400 Bad Request: 请求参数错误
  • 401 Unauthorized: 未认证或认证失败
  • 403 Forbidden: 权限不足
  • 404 Not Found: 资源不存在
  • 409 Conflict: 资源冲突(如重复创建)
  • 422 Unprocessable Entity: 请求数据验证失败
  • 500 Internal Server Error: 服务器内部错误
  • 503 Service Unavailable: 服务不可用

业务错误代码

{
"success": false,
"error": {
"code": "DATA_SOURCE_CONNECTION_FAILED",
"message": "无法连接到数据源",
"details": {
"host": "mysql.example.com",
"error": "Connection timeout"
}
}
}

常见错误代码:

  • INVALID_CREDENTIALS: 登录凭证无效
  • INSUFFICIENT_PERMISSIONS: 权限不足
  • DATA_SOURCE_NOT_FOUND: 数据源不存在
  • DATA_SOURCE_CONNECTION_FAILED: 数据源连接失败
  • INVALID_QUERY: 查询语法错误
  • DATABASE_NOT_FOUND: 数据库不存在
  • TRANSACTION_FAILED: 事务执行失败
  • FILE_UPLOAD_FAILED: 文件上传失败
  • VALIDATION_ERROR: 数据验证失败
  • RATE_LIMIT_EXCEEDED: 请求频率超限

错误处理示例

// JavaScript 错误处理示例
try {
const response = await fetch('/api/data-sources', {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(dataSource)
});

const result = await response.json();

if (!response.ok) {
throw new Error(result.error?.message || 'Request failed');
}

return result.data;
} catch (error) {
console.error('API Error:', error.message);
// 处理具体错误类型
if (error.message.includes('connection')) {
// 处理连接错误
}
}