Version: v2.34.3 | Last Updated: 2025-06-23 | Status: 100% ACCURATE
Complete overview of EntityDB's REST API - verified against actual implementation.
Major Change: v2.34.3 achieves production certification with metrics feedback loop prevention and comprehensive E2E testing
https://localhost:8085/api/v1
Note: SSL is enabled by default. HTTP port redirects to HTTPS.
- REST-based: Standard HTTP methods (GET, POST, PUT, DELETE)
- JSON Format: All requests and responses use JSON
- RBAC Protected: Most endpoints require specific permissions
- JWT Authentication: Bearer token-based authentication
- Versioned: All endpoints under
/api/v1/prefix
Authorization: Bearer <jwt-token>- Login:
POST /api/v1/auth/loginwith credentials - Extract Token: Get JWT from response
- Use Token: Include in Authorization header
- Refresh: Use refresh endpoint before expiry
Only these endpoints work without authentication:
POST /api/v1/auth/login- LoginGET /health- Health checkGET /metrics- Prometheus metricsGET /api/v1/system/metrics- System metricsGET /api/v1/metrics/history- Metrics historyGET /api/v1/metrics/available- Available metricsGET /api/v1/rbac/metrics/public- Public RBAC metrics
Total Endpoints: 48 (verified against v2.32.6 implementation)
| Method | Endpoint | Auth Required | Permission | Description |
|---|---|---|---|---|
| POST | /auth/login |
❌ | None | Authenticate user |
| POST | /auth/logout |
✅ | Authentication | Logout user |
| GET | /auth/whoami |
✅ | Authentication | Get current user info |
| POST | /auth/refresh |
❌ | None | Refresh JWT token |
| Method | Endpoint | Auth Required | Permission | Description |
|---|---|---|---|---|
| GET | /entities/list |
✅ | entity:view |
List entities with filtering |
| GET | /entities/get |
✅ | entity:view |
Get entity by ID |
| POST | /entities/create |
✅ | entity:create |
Create new entity |
| PUT | /entities/update |
✅ | entity:update |
Update existing entity |
| GET | /entities/query |
✅ | entity:view |
Advanced entity queries |
| GET | /entities/listbytag |
✅ | entity:view |
List entities by tag (alias for list) |
| GET | /entities/summary |
✅ | entity:view |
Get entity summary statistics |
| GET | /entities/get-chunk |
✅ | entity:view |
Get chunked entity content |
| GET | /entities/stream-content |
✅ | entity:view |
Stream large entity content |
| Method | Endpoint | Auth Required | Permission | Description |
|---|---|---|---|---|
| GET | /entities/as-of |
✅ | entity:view |
Get entity state at timestamp |
| GET | /entities/history |
✅ | entity:view |
Get entity change history |
| GET | /entities/changes |
✅ | entity:view |
Get recent entity changes |
| GET | /entities/diff |
✅ | entity:view |
Compare entity versions |
| Method | Endpoint | Auth Required | Permission | Description |
|---|---|---|---|---|
| POST | /users/create |
✅ | user:create |
Create new user |
| POST | /users/change-password |
✅ | user:update |
Change user password |
| POST | /users/reset-password |
✅ | user:update |
Reset user password |
| Method | Endpoint | Auth Required | Permission | Description |
|---|---|---|---|---|
| GET | /datasets |
✅ | dataset:view |
List all datasets |
| POST | /datasets |
✅ | dataset:create |
Create new dataset |
| GET | /datasets/{id} |
✅ | dataset:view |
Get dataset by ID |
| PUT | /datasets/{id} |
✅ | dataset:update |
Update dataset |
| DELETE | /datasets/{id} |
✅ | dataset:delete |
Delete dataset |
| POST | /datasets/{dataset}/entities/create |
✅ | entity:create |
Create entity in dataset |
| GET | /datasets/{dataset}/entities/query |
✅ | entity:view |
Query entities in dataset |
| Method | Endpoint | Auth Required | Permission | Description |
|---|---|---|---|---|
| GET | /config |
✅ | config:view |
Get configuration |
| POST | /config/set |
✅ | config:update |
Set configuration |
| GET | /feature-flags |
✅ | config:view |
Get feature flags |
| POST | /feature-flags/set |
✅ | config:update |
Set feature flag |
| Method | Endpoint | Auth Required | Permission | Description |
|---|---|---|---|---|
| GET | /dashboard/stats |
✅ | system:view |
Get dashboard statistics |
| POST | /admin/reindex |
✅ | admin:reindex |
Manually reindex data |
| GET | /admin/health |
✅ | admin:health |
Detailed health check |
| POST | /admin/log-level |
✅ | admin:update |
Set log level |
| GET | /admin/log-level |
✅ | admin:view |
Get current log level |
| POST | /admin/trace-subsystems |
✅ | admin:update |
Set trace subsystems |
| GET | /admin/trace-subsystems |
✅ | admin:view |
Get trace subsystems |
| Method | Endpoint | Auth Required | Permission | Description |
|---|---|---|---|---|
| GET | /health |
❌ | None | Basic health check |
| GET | /metrics |
❌ | None | Prometheus metrics |
| GET | /system/metrics |
❌ | None | EntityDB system metrics |
| POST | /metrics/collect |
✅ | metrics:write |
Collect custom metric |
| GET | /metrics/current |
✅ | metrics:read |
Get current metrics |
| GET | /metrics/history |
❌ | None | Get metrics history |
| GET | /metrics/available |
❌ | None | List available metrics |
| GET | /application/metrics |
✅ | metrics:read |
Application-specific metrics |
| GET | /rbac/metrics |
✅ | admin:view |
RBAC metrics (admin only) |
| GET | /rbac/metrics/public |
❌ | None | Public RBAC metrics |
| Method | Endpoint | Auth Required | Permission | Description |
|---|---|---|---|---|
| GET | /status |
❌ | None | DEPRECATED - Use /health |
| POST | /patches/reindex-tags |
❌ | None | DEPRECATED - Integrated fix |
All API responses follow this structure:
{
"status": "ok|error",
"message": "Human-readable description",
"data": { /* Response payload */ },
"error": "Error details if status=error"
}{
"status": "error",
"message": "Error description",
"error": "Detailed error information",
"code": 400
}- 200 OK: Successful request
- 201 Created: Resource created successfully
- 400 Bad Request: Invalid request format or parameters
- 401 Unauthorized: Missing or invalid authentication
- 403 Forbidden: Insufficient permissions
- 404 Not Found: Resource not found
- 405 Method Not Allowed: HTTP method not supported
- 500 Internal Server Error: Server-side error
Permissions use hierarchical tag format: rbac:perm:resource:action
rbac:perm:*- All permissions (admin)rbac:perm:entity:*- All entity permissionsrbac:perm:entity:view- View entitiesrbac:perm:entity:create- Create entitiesrbac:perm:entity:update- Update entitiesrbac:perm:user:create- Create users (admin only)rbac:perm:admin:*- All admin operationsrbac:perm:metrics:read- Read metricsrbac:perm:config:update- Update configuration
- Username:
admin - Password:
admin - Permissions:
rbac:perm:*(all permissions) - Auto-created: On first server start
- Rate Limiting: Configurable (disabled by default) - Enable with
ENTITYDB_ENABLE_RATE_LIMIT=true - Default Rate Limit: 100 requests per minute when enabled
- Payload Size: 10MB maximum request size
- Timeout: 60 seconds for all requests
- Memory-Mapped Files: Zero-copy reads for large content
- Sharded Indexing: 256 concurrent shards for optimal performance
- Tag Caching: O(1) tag lookups with intelligent caching
- Batch Operations: Automatic batching for write operations
X-EntityDB-Query-Time: 0.023ms
X-EntityDB-Index-Hit: true
X-EntityDB-Cache-Hit: true- Stable: Feature-complete and production-ready
- Backward Compatible: Changes maintain compatibility
- Path Prefix:
/api/v1/ - Deprecation Policy: 6 months notice for breaking changes
- v2: Planned for Q2 2026 with enhanced filtering
- Migration: Automatic migration tools provided
- Overlap: v1 supported for 12 months after v2 release
EntityDB v2.32.0 uses tag-based relationships - there are no separate relationship endpoints. Use entity tags like relates_to:entity_id to create relationships.
Entities are immutable - updates create new versions with timestamps. There is no DELETE operation for entities.
All tags are stored with nanosecond timestamps. Use include_timestamps=true parameter to see raw temporal format.
Files >4MB are automatically chunked. Use chunking endpoints for large file handling.
This API overview provides complete, verified documentation for EntityDB v2.32.0. All endpoints and examples are tested against the actual implementation.