Loading...
;
return (
{kanban?.columns.map((column) => (
))}
{activeTask ? : null}
);
}
```
---
## 5. API Design (REST + OpenAPI)
### 5.1 RESTful API Endpoints
```
# Projects
GET /api/v1/projects # List all projects
POST /api/v1/projects # Create project
GET /api/v1/projects/{id} # Get project by ID
PUT /api/v1/projects/{id} # Update project
DELETE /api/v1/projects/{id} # Delete project
GET /api/v1/projects/{id}/kanban # Get Kanban board
# Epics
GET /api/v1/projects/{projectId}/epics # List epics
POST /api/v1/projects/{projectId}/epics # Create epic
GET /api/v1/projects/{projectId}/epics/{id} # Get epic
PUT /api/v1/projects/{projectId}/epics/{id} # Update epic
DELETE /api/v1/projects/{projectId}/epics/{id} # Delete epic
# Stories
GET /api/v1/epics/{epicId}/stories # List stories
POST /api/v1/epics/{epicId}/stories # Create story
GET /api/v1/epics/{epicId}/stories/{id} # Get story
PUT /api/v1/epics/{epicId}/stories/{id} # Update story
DELETE /api/v1/epics/{epicId}/stories/{id} # Delete story
# Tasks
GET /api/v1/stories/{storyId}/tasks # List tasks
POST /api/v1/stories/{storyId}/tasks # Create task
GET /api/v1/tasks/{id} # Get task by ID
PUT /api/v1/tasks/{id} # Update task
PATCH /api/v1/tasks/{id}/status # Update task status
DELETE /api/v1/tasks/{id} # Delete task
POST /api/v1/tasks/{id}/assign # Assign task to user
# Workflows
GET /api/v1/projects/{projectId}/workflows # List workflows
POST /api/v1/projects/{projectId}/workflows # Create workflow
GET /api/v1/workflows/{id} # Get workflow
PUT /api/v1/workflows/{id} # Update workflow
DELETE /api/v1/workflows/{id} # Delete workflow
# Audit Logs
GET /api/v1/audit-logs # List all audit logs
GET /api/v1/audit-logs/{entityType}/{entityId} # Get entity audit logs
POST /api/v1/audit-logs/{id}/rollback # Rollback changes
# Users
GET /api/v1/users # List users
GET /api/v1/users/{id} # Get user
POST /api/v1/users # Create user (admin)
PUT /api/v1/users/{id} # Update user
# Authentication
POST /api/v1/auth/login # Login
POST /api/v1/auth/register # Register
POST /api/v1/auth/refresh # Refresh token
POST /api/v1/auth/logout # Logout
```
### 5.2 Controller Example
```csharp
namespace ColaFlow.API.Controllers
{
[ApiController]
[Route("api/v1/[controller]")]
[Authorize]
public class ProjectsController : ControllerBase
{
private readonly IMediator _mediator;
public ProjectsController(IMediator mediator)
{
_mediator = mediator;
}
///