API Design
RESTful + GraphQL + WebSocket APIs for 1000 Agent Platform
RESTful APIs
Agent Management
GET /api/v1/agents # List all Agents
GET /api/v1/agents/:id # Get Agent details
POST /api/v1/agents/:id/pause # Pause Agent
POST /api/v1/agents/:id/resume # Resume Agent
POST /api/v1/agents/:id/restart # Restart Agent
DELETE /api/v1/agents/:id # Delete Agent
Task Management
GET /api/v1/tasks # List tasks (with filtering)
POST /api/v1/tasks # Create task
GET /api/v1/tasks/:id # Get task details
POST /api/v1/tasks/:id/cancel # Cancel task
Artifact Management
GET /api/v1/artifacts # List outputs
GET /api/v1/artifacts/:id # Get artifact details
POST /api/v1/artifacts/:id/approve # Human approval
Cage Management
GET /api/v1/cages # List all cages
GET /api/v1/cages/:id # Get cage details
GET /api/v1/cages/:id/metrics # Get cage metrics
Metrics & Analytics
GET /api/v1/metrics/agents # Agent metrics aggregation
GET /api/v1/metrics/system # System-wide metrics
GET /api/v1/analytics/productivity # Productivity analysis
WebSocket Events
// Frontend subscribes to real-time events
ws.subscribe('agent:status:changed', (data) => {
// Agent status changed
});
ws.subscribe('task:completed', (data) => {
// Task completed
});
ws.subscribe('artifact:created', (data) => {
// New artifact created
});
ws.subscribe('alert:triggered', (data) => {
// Alert triggered
});
GraphQL Schema (Sample)
type Query {
agent(id: ID!): Agent
agents(filter: AgentFilter): [Agent!]!
task(id: ID!): Task
tasks(filter: TaskFilter): [Task!]!
cage(id: ID!): Cage
cages: [Cage!]!
metrics(timeRange: TimeRange!): Metrics!
}
type Mutation {
pauseAgent(id: ID!): Agent
resumeAgent(id: ID!): Agent
restartAgent(id: ID!): Agent
createTask(input: TaskInput!): Task
cancelTask(id: ID!): Task
approveArtifact(id: ID!): Artifact
}
type Subscription {
agentStatusChanged: Agent!
taskCompleted: Task!
artifactCreated: Artifact!
alertTriggered: Alert!
}