{ "modules": [ { "name": "health", "prefix": "/api/health", "routes": [ { "method": "get", "path": "/api/health", "line": 230 } ], "filePath": "routes/health.js" }, { "name": "customers", "prefix": "/api/customers", "routes": [ { "method": "get", "path": "/api/customers", "line": 259 }, { "method": "get", "path": "/api/customers/:id", "line": 321 }, { "method": "post", "path": "/api/customers", "line": 401 }, { "method": "put", "path": "/api/customers/:id", "line": 469 }, { "method": "delete", "path": "/api/customers/:id", "line": 543 } ], "filePath": "routes/customers.js" }, { "name": "suppliers", "prefix": "/api/suppliers", "routes": [ { "method": "get", "path": "/api/suppliers", "line": 575 }, { "method": "get", "path": "/api/suppliers/:id", "line": 637 }, { "method": "post", "path": "/api/suppliers", "line": 720 }, { "method": "put", "path": "/api/suppliers/:id", "line": 790 }, { "method": "delete", "path": "/api/suppliers/:id", "line": 866 } ], "filePath": "routes/suppliers.js" }, { "name": "subcontractors", "prefix": "/api/subcontractors", "routes": [ { "method": "get", "path": "/api/subcontractors", "line": 898 }, { "method": "get", "path": "/api/subcontractors/:id", "line": 960 }, { "method": "post", "path": "/api/subcontractors", "line": 1042 }, { "method": "put", "path": "/api/subcontractors/:id", "line": 1113 }, { "method": "delete", "path": "/api/subcontractors/:id", "line": 1190 } ], "filePath": "routes/subcontractors.js" }, { "name": "projects", "prefix": "/api/projects", "routes": [ { "method": "get", "path": "/api/projects", "line": 1222 }, { "method": "get", "path": "/api/projects/:id", "line": 1252 }, { "method": "get", "path": "/api/projects/:id/contracts", "line": 1346 }, { "method": "get", "path": "/api/projects/:id/subcontracts", "line": 1371 }, { "method": "post", "path": "/api/projects/:id/subcontracts", "line": 1410 }, { "method": "get", "path": "/api/projects/:id/materials", "line": 1458 }, { "method": "get", "path": "/api/projects/:id/milestones", "line": 1483 }, { "method": "get", "path": "/api/projects/:id/finances", "line": 1508 }, { "method": "get", "path": "/api/projects/:id/warranty-deposits", "line": 1533 }, { "method": "get", "path": "/api/projects/:id/construction-logs", "line": 1558 }, { "method": "delete", "path": "/api/projects/:id", "line": 1578 }, { "method": "put", "path": "/api/projects/:id", "line": 1590 }, { "method": "put", "path": "/api/projects/:id/contract", "line": 1626 }, { "method": "get", "path": "/api/projects/:id/cost-summary", "line": 4478 } ], "filePath": "routes/projects.js" }, { "name": "upload", "prefix": "/api/upload", "routes": [ { "method": "post", "path": "/api/upload/single", "line": 1735 }, { "method": "post", "path": "/api/upload/single/cos", "line": 4779 }, { "method": "post", "path": "/api/upload/multiple", "line": 4825 } ], "filePath": "routes/upload.js" }, { "name": "budget", "prefix": "/api/budget-projects", "routes": [ { "method": "get", "path": "/api/budget-projects", "line": 1762 }, { "method": "post", "path": "/api/budget-projects", "line": 2085 }, { "method": "get", "path": "/api/budget-projects/:id", "line": 2133 }, { "method": "post", "path": "/api/budget-projects/:projectId/quotations", "line": 2183 }, { "method": "delete", "path": "/api/budget-projects/:projectId/quotations/:quotationId", "line": 2222 }, { "method": "put", "path": "/api/budget-projects/:id/sign", "line": 2253 }, { "method": "put", "path": "/api/budget-projects/:id/unsigned", "line": 2461 }, { "method": "delete", "path": "/api/budget-projects/:id", "line": 2485 } ], "filePath": "routes/budget.js" }, { "name": "construction", "prefix": "/api/construction", "routes": [ { "method": "get", "path": "/api/construction/my-projects", "line": 1821 } ], "filePath": "routes/construction.js" }, { "name": "categories", "prefix": "/api/categories", "routes": [ { "method": "get", "path": "/api/categories/tree", "line": 1847 }, { "method": "get", "path": "/api/categories", "line": 1881 }, { "method": "get", "path": "/api/categories/:id", "line": 1892 }, { "method": "post", "path": "/api/categories", "line": 1907 }, { "method": "put", "path": "/api/categories/:id", "line": 1938 }, { "method": "delete", "path": "/api/categories/:id", "line": 1989 } ], "filePath": "routes/categories.js" }, { "name": "paymentNodes", "prefix": "/api/payment-nodes", "routes": [ { "method": "get", "path": "/api/payment-nodes", "line": 2015 } ], "filePath": "routes/paymentNodes.js" }, { "name": "paymentRecords", "prefix": "/api/payment-records", "routes": [ { "method": "get", "path": "/api/payment-records", "line": 2044 } ], "filePath": "routes/paymentRecords.js" }, { "name": "exchange", "prefix": "/api/exchange-rates", "routes": [ { "method": "get", "path": "/api/exchange-rates/latest", "line": 2517 }, { "method": "get", "path": "/api/exchange-rates", "line": 2561 }, { "method": "get", "path": "/api/exchange-rates/history", "line": 2584 }, { "method": "post", "path": "/api/exchange-rates", "line": 2617 } ], "filePath": "routes/exchange.js" }, { "name": "advances", "prefix": "/api/advances", "routes": [ { "method": "get", "path": "/api/advances", "line": 2653 }, { "method": "post", "path": "/api/advances", "line": 2689 }, { "method": "get", "path": "/api/advances/:id", "line": 2726 }, { "method": "put", "path": "/api/advances/:id", "line": 2755 }, { "method": "delete", "path": "/api/advances/:id", "line": 2777 }, { "method": "post", "path": "/api/advances/:id/submit", "line": 2795 }, { "method": "post", "path": "/api/advances/:id/withdraw", "line": 2813 }, { "method": "post", "path": "/api/advances/:id/approve", "line": 2831 }, { "method": "post", "path": "/api/advances/:id/reject", "line": 2850 } ], "filePath": "routes/advances.js" }, { "name": "payments", "prefix": "/api/payment-requests", "routes": [ { "method": "get", "path": "/api/payment-requests", "line": 2869 }, { "method": "post", "path": "/api/payment-requests", "line": 2905 }, { "method": "get", "path": "/api/payment-requests/:id", "line": 2945 }, { "method": "put", "path": "/api/payment-requests/:id", "line": 2981 }, { "method": "delete", "path": "/api/payment-requests/:id", "line": 3033 }, { "method": "post", "path": "/api/payment-requests/:id/submit", "line": 3051 }, { "method": "post", "path": "/api/payment-requests/:id/withdraw", "line": 3068 }, { "method": "post", "path": "/api/payment-requests/:id/approve", "line": 3085 }, { "method": "post", "path": "/api/payment-requests/:id/reject", "line": 3103 } ], "filePath": "routes/payments.js" }, { "name": "verifications", "prefix": "/api/verifications", "routes": [ { "method": "get", "path": "/api/verifications", "line": 3122 }, { "method": "post", "path": "/api/verifications", "line": 3170 }, { "method": "get", "path": "/api/verifications/:id", "line": 3238 }, { "method": "put", "path": "/api/verifications/:id", "line": 3274 }, { "method": "delete", "path": "/api/verifications/:id", "line": 3340 }, { "method": "post", "path": "/api/verifications/:id/submit", "line": 3384 }, { "method": "post", "path": "/api/verifications/:id/withdraw", "line": 3401 }, { "method": "post", "path": "/api/verifications/:id/approve", "line": 3418 }, { "method": "post", "path": "/api/verifications/:id/reject", "line": 3436 } ], "filePath": "routes/verifications.js" }, { "name": "executions", "prefix": "/api/executions", "routes": [ { "method": "get", "path": "/api/executions", "line": 3481 }, { "method": "get", "path": "/api/executions/pending", "line": 3494 }, { "method": "get", "path": "/api/executions/executed", "line": 3518 }, { "method": "post", "path": "/api/executions", "line": 3551 } ], "filePath": "routes/executions.js" }, { "name": "reimbursements", "prefix": "/api/reimbursements", "routes": [ { "method": "get", "path": "/api/reimbursements", "line": 3629 }, { "method": "post", "path": "/api/reimbursements", "line": 3676 }, { "method": "get", "path": "/api/reimbursements/:id", "line": 3703 }, { "method": "put", "path": "/api/reimbursements/:id", "line": 3742 }, { "method": "delete", "path": "/api/reimbursements/:id", "line": 3764 }, { "method": "post", "path": "/api/reimbursements/:id/submit", "line": 3783 }, { "method": "post", "path": "/api/reimbursements/:id/withdraw", "line": 3800 }, { "method": "post", "path": "/api/reimbursements/:id/approve", "line": 3818 }, { "method": "post", "path": "/api/reimbursements/:id/reject", "line": 3837 } ], "filePath": "routes/reimbursements.js" }, { "name": "purchase", "prefix": "/api/purchase-requests", "routes": [ { "method": "get", "path": "/api/purchase-requests", "line": 3856 }, { "method": "get", "path": "/api/purchase-requests/:id", "line": 3901 }, { "method": "post", "path": "/api/purchase-requests", "line": 3977 }, { "method": "put", "path": "/api/purchase-requests/:id", "line": 4020 }, { "method": "delete", "path": "/api/purchase-requests/:id", "line": 4079 }, { "method": "post", "path": "/api/purchase-requests/:id/submit", "line": 4103 }, { "method": "post", "path": "/api/purchase-requests/:id/approve", "line": 4120 }, { "method": "post", "path": "/api/purchase-requests/:id/reject", "line": 4137 }, { "method": "post", "path": "/api/purchase-requests/:id/execute", "line": 4154 }, { "method": "post", "path": "/api/purchase-requests/:id/withdraw", "line": 4178 } ], "filePath": "routes/purchase.js" }, { "name": "purchase-orders", "prefix": "/api/purchase-orders", "routes": [ { "method": "get", "path": "/api/purchase-orders", "line": 4196 }, { "method": "post", "path": "/api/purchase-orders", "line": 4213 }, { "method": "get", "path": "/api/purchase-orders/:id", "line": 4258 } ], "filePath": "routes/purchase-orders.js" }, { "name": "payment-plans", "prefix": "/api/payment-plans", "routes": [ { "method": "get", "path": "/api/payment-plans", "line": 4288 }, { "method": "post", "path": "/api/payment-plans", "line": 4305 }, { "method": "get", "path": "/api/payment-plans/:id", "line": 4329 }, { "method": "put", "path": "/api/payment-plans/:id", "line": 4350 } ], "filePath": "routes/payment-plans.js" }, { "name": "inventory", "prefix": "/api/inventory", "routes": [ { "method": "get", "path": "/api/inventory", "line": 4375 }, { "method": "get", "path": "/api/inventory/summary", "line": 4423 }, { "method": "post", "path": "/api/inventory/out", "line": 4452 } ], "filePath": "routes/inventory.js" }, { "name": "finance-stats", "prefix": "/api/finance-stats", "routes": [ { "method": "get", "path": "/api/finance-stats", "line": 4540 } ], "filePath": "routes/finance-stats.js" } ], "totalRoutes": 115, "timestamp": "2026-04-07T08:26:47.055Z" }