forked from cardosofelipe/fast-next-template
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>
49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
from fastapi import APIRouter
|
|
|
|
from app.api.routes import (
|
|
admin,
|
|
agent_types,
|
|
agents,
|
|
auth,
|
|
events,
|
|
issues,
|
|
oauth,
|
|
oauth_provider,
|
|
organizations,
|
|
projects,
|
|
sessions,
|
|
sprints,
|
|
users,
|
|
)
|
|
|
|
api_router = APIRouter()
|
|
api_router.include_router(auth.router, prefix="/auth", tags=["Authentication"])
|
|
api_router.include_router(oauth.router, prefix="/oauth", tags=["OAuth"])
|
|
api_router.include_router(
|
|
oauth_provider.router, prefix="/oauth", tags=["OAuth Provider"]
|
|
)
|
|
api_router.include_router(users.router, prefix="/users", tags=["Users"])
|
|
api_router.include_router(sessions.router, prefix="/sessions", tags=["Sessions"])
|
|
api_router.include_router(admin.router, prefix="/admin", tags=["Admin"])
|
|
api_router.include_router(
|
|
organizations.router, prefix="/organizations", tags=["Organizations"]
|
|
)
|
|
# 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"]
|
|
)
|