forked from cardosofelipe/pragma-stack
feat: Implement Phase 1 API layer (Issues #28-32)
Complete REST API endpoints for all Syndarix core entities: Projects (8 endpoints): - CRUD operations with owner-based access control - Lifecycle management (pause/resume) - Slug-based retrieval Agent Types (6 endpoints): - CRUD operations with superuser-only writes - Search and filtering support - Instance count tracking Agent Instances (10 endpoints): - Spawn/list/update/terminate operations - Status lifecycle with transition validation - Pause/resume functionality - Individual and project-wide metrics Issues (8 endpoints): - CRUD with comprehensive filtering - Agent/human assignment - External tracker sync trigger - Statistics aggregation Sprints (10 endpoints): - CRUD with lifecycle enforcement - Start/complete transitions - Issue management - Velocity metrics All endpoints include: - Rate limiting via slowapi - Project ownership authorization - Proper error handling with custom exceptions - Comprehensive logging Phase 1 API Layer: 100% complete Phase 1 Overall: ~88% (frontend blocked by design approvals) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,12 +2,17 @@ from fastapi import APIRouter
|
||||
|
||||
from app.api.routes import (
|
||||
admin,
|
||||
agent_types,
|
||||
agents,
|
||||
auth,
|
||||
events,
|
||||
issues,
|
||||
oauth,
|
||||
oauth_provider,
|
||||
organizations,
|
||||
projects,
|
||||
sessions,
|
||||
sprints,
|
||||
users,
|
||||
)
|
||||
|
||||
@@ -25,3 +30,19 @@ api_router.include_router(
|
||||
)
|
||||
# SSE events router - no prefix, routes define full paths
|
||||
api_router.include_router(events.router, tags=["Events"])
|
||||
|
||||
# Syndarix domain routers
|
||||
api_router.include_router(
|
||||
projects.router, prefix="/projects", tags=["Projects"]
|
||||
)
|
||||
api_router.include_router(
|
||||
agent_types.router, prefix="/agent-types", tags=["Agent Types"]
|
||||
)
|
||||
# Issues router - routes include /projects/{project_id}/issues paths
|
||||
api_router.include_router(issues.router, tags=["Issues"])
|
||||
# Agents router - routes include /projects/{project_id}/agents paths
|
||||
api_router.include_router(agents.router, tags=["Agents"])
|
||||
# Sprints router - routes need prefix as they use /projects/{project_id}/sprints paths
|
||||
api_router.include_router(
|
||||
sprints.router, prefix="/projects/{project_id}/sprints", tags=["Sprints"]
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user