use axum::routing::{delete, get, patch, post}; use axum::Router; use crate::api::handlers; pub fn build_router() -> Router { Router::new() .route("/api/v1/health", get(handlers::health)) .route("/api/v1/stats/overview", get(handlers::stats_overview)) .route( "/api/v1/settings/ssh-public-key", get(handlers::get_ssh_public_key), ) .route("/api/v1/repositories", get(handlers::list_repositories)) .route("/api/v1/repositories", post(handlers::add_repository)) .route( "/api/v1/repositories/{id}/scan", post(handlers::trigger_scan), ) .route( "/api/v1/repositories/{id}", delete(handlers::delete_repository), ) .route("/api/v1/findings", get(handlers::list_findings)) .route("/api/v1/findings/{id}", get(handlers::get_finding)) .route( "/api/v1/findings/{id}/status", patch(handlers::update_finding_status), ) .route( "/api/v1/findings/bulk-status", patch(handlers::bulk_update_finding_status), ) .route( "/api/v1/findings/{id}/feedback", patch(handlers::update_finding_feedback), ) .route("/api/v1/sbom", get(handlers::list_sbom)) .route("/api/v1/sbom/export", get(handlers::export_sbom)) .route("/api/v1/sbom/licenses", get(handlers::license_summary)) .route("/api/v1/sbom/diff", get(handlers::sbom_diff)) .route("/api/v1/issues", get(handlers::list_issues)) .route("/api/v1/scan-runs", get(handlers::list_scan_runs)) // Graph API endpoints .route("/api/v1/graph/{repo_id}", get(handlers::graph::get_graph)) .route( "/api/v1/graph/{repo_id}/nodes", get(handlers::graph::get_nodes), ) .route( "/api/v1/graph/{repo_id}/communities", get(handlers::graph::get_communities), ) .route( "/api/v1/graph/{repo_id}/impact/{finding_id}", get(handlers::graph::get_impact), ) .route( "/api/v1/graph/{repo_id}/search", get(handlers::graph::search_symbols), ) .route( "/api/v1/graph/{repo_id}/file-content", get(handlers::graph::get_file_content), ) .route( "/api/v1/graph/{repo_id}/build", post(handlers::graph::trigger_build), ) // DAST API endpoints .route("/api/v1/dast/targets", get(handlers::dast::list_targets)) .route("/api/v1/dast/targets", post(handlers::dast::add_target)) .route( "/api/v1/dast/targets/{id}/scan", post(handlers::dast::trigger_scan), ) .route( "/api/v1/dast/scan-runs", get(handlers::dast::list_scan_runs), ) .route("/api/v1/dast/findings", get(handlers::dast::list_findings)) .route( "/api/v1/dast/findings/{id}", get(handlers::dast::get_finding), ) // Chat / RAG API endpoints .route("/api/v1/chat/{repo_id}", post(handlers::chat::chat)) .route( "/api/v1/chat/{repo_id}/build-embeddings", post(handlers::chat::build_embeddings), ) .route( "/api/v1/chat/{repo_id}/status", get(handlers::chat::embedding_status), ) }