{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-7641d1274d4efc4d", "name": "Stray `console.log` in TS/JS \u2014 backend/src/app.js:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/app.js:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 72 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, tests. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1b5a76780c3df9aa", "name": "1 env vars used in code but missing from .env.example", "shortDescription": {"text": "1 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `NODE_ENV`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6ce18447766f0d0b", "name": "Frontend route `/master-data/:tab` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/master-data/:tab` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c815e4429709a81b", "name": "Frontend route `/proyek/:id/edit` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/proyek/:id/edit` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-40e46d93854f8d4e", "name": "Frontend route `/proyek/:id/detail` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/proyek/:id/detail` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4d6892ccbd30a6ec", "name": "Frontend route `/proyek/:id/rab` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/proyek/:id/rab` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cd5a299f419e2773", "name": "Frontend route `/proyek/:id/realisasi` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/proyek/:id/realisasi` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9a8f2599dd755bc8", "name": "Unused endpoint: GET /api/master/coa", "shortDescription": {"text": "Unused endpoint: GET /api/master/coa"}, "fullDescription": {"text": "`frontend/src/services/api.js` declares `GET /api/master/coa` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8b67e8a85bd464df", "name": "Unused endpoint: POST /api/master/coa", "shortDescription": {"text": "Unused endpoint: POST /api/master/coa"}, "fullDescription": {"text": "`frontend/src/services/api.js` declares `POST /api/master/coa` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41d146d962e16a45", "name": "Unused endpoint: GET /api/master/cabang", "shortDescription": {"text": "Unused endpoint: GET /api/master/cabang"}, "fullDescription": {"text": "`frontend/src/services/api.js` declares `GET /api/master/cabang` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c4b7c9a844d3fd8", "name": "Unused endpoint: POST /api/master/cabang", "shortDescription": {"text": "Unused endpoint: POST /api/master/cabang"}, "fullDescription": {"text": "`frontend/src/services/api.js` declares `POST /api/master/cabang` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-645f89fc7d0241b3", "name": "Unused endpoint: GET /api/master/user", "shortDescription": {"text": "Unused endpoint: GET /api/master/user"}, "fullDescription": {"text": "`frontend/src/services/api.js` declares `GET /api/master/user` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-88bc47d9e76c1bac", "name": "Unused endpoint: POST /api/master/user", "shortDescription": {"text": "Unused endpoint: POST /api/master/user"}, "fullDescription": {"text": "`frontend/src/services/api.js` declares `POST /api/master/user` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0300e0029f3e92bb", "name": "Unused endpoint: GET /api/kurs", "shortDescription": {"text": "Unused endpoint: GET /api/kurs"}, "fullDescription": {"text": "`frontend/src/services/api.js` declares `GET /api/kurs` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35df7550e2b6a5d8", "name": "Unused endpoint: PUT /api/kurs", "shortDescription": {"text": "Unused endpoint: PUT /api/kurs"}, "fullDescription": {"text": "`frontend/src/services/api.js` declares `PUT /api/kurs` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d4e3e58d26a15902", "name": "Unused endpoint: GET /api/proyek", "shortDescription": {"text": "Unused endpoint: GET /api/proyek"}, "fullDescription": {"text": "`frontend/src/services/api.js` declares `GET /api/proyek` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1ce58f7e33c4f504", "name": "Unused endpoint: POST /api/proyek", "shortDescription": {"text": "Unused endpoint: POST /api/proyek"}, "fullDescription": {"text": "`frontend/src/services/api.js` declares `POST /api/proyek` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ef426c5e90d2a92", "name": "Unused endpoint: GET /api/dashboard/summary", "shortDescription": {"text": "Unused endpoint: GET /api/dashboard/summary"}, "fullDescription": {"text": "`frontend/src/services/api.js` declares `GET /api/dashboard/summary` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-19b4134edacbcf14", "name": "Unused endpoint: GET /api/dashboard/by-cabang", "shortDescription": {"text": "Unused endpoint: GET /api/dashboard/by-cabang"}, "fullDescription": {"text": "`frontend/src/services/api.js` declares `GET /api/dashboard/by-cabang` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-358932a3761d7def", "name": "Unused endpoint: GET /api/audit-log", "shortDescription": {"text": "Unused endpoint: GET /api/audit-log"}, "fullDescription": {"text": "`frontend/src/services/api.js` declares `GET /api/audit-log` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d5a39262ac205120", "name": "Unused endpoint: POST /api/auth/logout", "shortDescription": {"text": "Unused endpoint: POST /api/auth/logout"}, "fullDescription": {"text": "`frontend/src/context/AuthContext.jsx` declares `POST /api/auth/logout` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd55aa0818a7c897", "name": "Unused endpoint: POST /api/auth/login", "shortDescription": {"text": "Unused endpoint: POST /api/auth/login"}, "fullDescription": {"text": "`frontend/src/context/AuthContext.jsx` declares `POST /api/auth/login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4756b4c4da7d2088", "name": "Unused endpoint: GET /api/health", "shortDescription": {"text": "Unused endpoint: GET /api/health"}, "fullDescription": {"text": "`backend/src/app.js` declares `GET /api/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`backend/src/app.js` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6eb452fbfb454d20", "name": "Unused endpoint: USE /api/auth", "shortDescription": {"text": "Unused endpoint: USE /api/auth"}, "fullDescription": {"text": "`backend/src/app.js` declares `USE /api/auth` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-85fedd67a2c37f37", "name": "Unused endpoint: USE /api/master", "shortDescription": {"text": "Unused endpoint: USE /api/master"}, "fullDescription": {"text": "`backend/src/app.js` declares `USE /api/master` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b54b9cb0dbde46fb", "name": "Unused endpoint: USE /api/kurs", "shortDescription": {"text": "Unused endpoint: USE /api/kurs"}, "fullDescription": {"text": "`backend/src/app.js` declares `USE /api/kurs` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b4126d5d3074ce2", "name": "Unused endpoint: USE /api/proyek", "shortDescription": {"text": "Unused endpoint: USE /api/proyek"}, "fullDescription": {"text": "`backend/src/app.js` declares `USE /api/proyek` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dde3adb27bf7eebe", "name": "Unused endpoint: USE /api", "shortDescription": {"text": "Unused endpoint: USE /api"}, "fullDescription": {"text": "`backend/src/app.js` declares `USE /api` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dbdbc13210e7149b", "name": "Unused endpoint: USE /api/dashboard", "shortDescription": {"text": "Unused endpoint: USE /api/dashboard"}, "fullDescription": {"text": "`backend/src/app.js` declares `USE /api/dashboard` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-952018e7021c4afb", "name": "Unused endpoint: USE /api/audit-log", "shortDescription": {"text": "Unused endpoint: USE /api/audit-log"}, "fullDescription": {"text": "`backend/src/app.js` declares `USE /api/audit-log` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a009b1a56794f45", "name": "Unused endpoint: POST /", "shortDescription": {"text": "Unused endpoint: POST /"}, "fullDescription": {"text": "`backend/src/routes/proyek.routes.js` declares `POST /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca5756175765b49d", "name": "Unused endpoint: GET /:id", "shortDescription": {"text": "Unused endpoint: GET /:id"}, "fullDescription": {"text": "`backend/src/routes/proyek.routes.js` declares `GET /:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5fbc954f63526821", "name": "Unused endpoint: PATCH /:id", "shortDescription": {"text": "Unused endpoint: PATCH /:id"}, "fullDescription": {"text": "`backend/src/routes/proyek.routes.js` declares `PATCH /:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a61c112b611f4bb", "name": "Unused endpoint: DELETE /:id", "shortDescription": {"text": "Unused endpoint: DELETE /:id"}, "fullDescription": {"text": "`backend/src/routes/proyek.routes.js` declares `DELETE /:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-512c284ced8b729a", "name": "Unused endpoint: GET /proyek/:id/rab", "shortDescription": {"text": "Unused endpoint: GET /proyek/:id/rab"}, "fullDescription": {"text": "`backend/src/routes/rab.routes.js` declares `GET /proyek/:id/rab` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5dfdd62640b39403", "name": "Unused endpoint: POST /proyek/:id/rab", "shortDescription": {"text": "Unused endpoint: POST /proyek/:id/rab"}, "fullDescription": {"text": "`backend/src/routes/rab.routes.js` declares `POST /proyek/:id/rab` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1ac07c7e9c36c474", "name": "Unused endpoint: PATCH /rab/:itemId", "shortDescription": {"text": "Unused endpoint: PATCH /rab/:itemId"}, "fullDescription": {"text": "`backend/src/routes/rab.routes.js` declares `PATCH /rab/:itemId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3e32dd5631d86c5", "name": "Unused endpoint: DELETE /rab/:itemId", "shortDescription": {"text": "Unused endpoint: DELETE /rab/:itemId"}, "fullDescription": {"text": "`backend/src/routes/rab.routes.js` declares `DELETE /rab/:itemId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9fb880b5ae677fb3", "name": "Unused endpoint: GET /coa", "shortDescription": {"text": "Unused endpoint: GET /coa"}, "fullDescription": {"text": "`backend/src/routes/master.routes.js` declares `GET /coa` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf32c18baa36487a", "name": "Unused endpoint: POST /coa", "shortDescription": {"text": "Unused endpoint: POST /coa"}, "fullDescription": {"text": "`backend/src/routes/master.routes.js` declares `POST /coa` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41c440dffe924dd1", "name": "Unused endpoint: PATCH /coa/:kodeSeg5", "shortDescription": {"text": "Unused endpoint: PATCH /coa/:kodeSeg5"}, "fullDescription": {"text": "`backend/src/routes/master.routes.js` declares `PATCH /coa/:kodeSeg5` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-538b72182bb3ca3c", "name": "Unused endpoint: GET /cabang", "shortDescription": {"text": "Unused endpoint: GET /cabang"}, "fullDescription": {"text": "`backend/src/routes/master.routes.js` declares `GET /cabang` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-53b0c7c4df08895e", "name": "Unused endpoint: POST /cabang", "shortDescription": {"text": "Unused endpoint: POST /cabang"}, "fullDescription": {"text": "`backend/src/routes/master.routes.js` declares `POST /cabang` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e955c9c5c58a0e2d", "name": "Unused endpoint: PATCH /cabang/:id", "shortDescription": {"text": "Unused endpoint: PATCH /cabang/:id"}, "fullDescription": {"text": "`backend/src/routes/master.routes.js` declares `PATCH /cabang/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9b22d4ac642da43c", "name": "Unused endpoint: GET /user", "shortDescription": {"text": "Unused endpoint: GET /user"}, "fullDescription": {"text": "`backend/src/routes/master.routes.js` declares `GET /user` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a58ff4a7092fd4b", "name": "Unused endpoint: POST /user", "shortDescription": {"text": "Unused endpoint: POST /user"}, "fullDescription": {"text": "`backend/src/routes/master.routes.js` declares `POST /user` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-07be05bc10d929ff", "name": "Unused endpoint: PATCH /user/:id", "shortDescription": {"text": "Unused endpoint: PATCH /user/:id"}, "fullDescription": {"text": "`backend/src/routes/master.routes.js` declares `PATCH /user/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-618721b912bad1c2", "name": "Unused endpoint: POST /login", "shortDescription": {"text": "Unused endpoint: POST /login"}, "fullDescription": {"text": "`backend/src/routes/auth.routes.js` declares `POST /login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99fc36db98c134ce", "name": "Unused endpoint: POST /logout", "shortDescription": {"text": "Unused endpoint: POST /logout"}, "fullDescription": {"text": "`backend/src/routes/auth.routes.js` declares `POST /logout` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1b7bee247ffc801", "name": "Unused endpoint: GET /summary", "shortDescription": {"text": "Unused endpoint: GET /summary"}, "fullDescription": {"text": "`backend/src/routes/dashboard.routes.js` declares `GET /summary` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c5c36f3a25e2b143", "name": "Unused endpoint: GET /by-cabang", "shortDescription": {"text": "Unused endpoint: GET /by-cabang"}, "fullDescription": {"text": "`backend/src/routes/dashboard.routes.js` declares `GET /by-cabang` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e148455f9d36669", "name": "Unused endpoint: GET /proyek/:id/realisasi", "shortDescription": {"text": "Unused endpoint: GET /proyek/:id/realisasi"}, "fullDescription": {"text": "`backend/src/routes/realisasi.routes.js` declares `GET /proyek/:id/realisasi` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b35aead475783c04", "name": "Unused endpoint: POST /rab/:itemId/realisasi", "shortDescription": {"text": "Unused endpoint: POST /rab/:itemId/realisasi"}, "fullDescription": {"text": "`backend/src/routes/realisasi.routes.js` declares `POST /rab/:itemId/realisasi` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d37d8cec3228ee69", "name": "Unused endpoint: PATCH /realisasi/:id", "shortDescription": {"text": "Unused endpoint: PATCH /realisasi/:id"}, "fullDescription": {"text": "`backend/src/routes/realisasi.routes.js` declares `PATCH /realisasi/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9c2e9b22b757469f", "name": "Unused endpoint: DELETE /realisasi/:id", "shortDescription": {"text": "Unused endpoint: DELETE /realisasi/:id"}, "fullDescription": {"text": "`backend/src/routes/realisasi.routes.js` declares `DELETE /realisasi/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-67d28fa8cd6bb12f", "name": "Unused endpoint: PUT /", "shortDescription": {"text": "Unused endpoint: PUT /"}, "fullDescription": {"text": "`backend/src/routes/kurs.routes.js` declares `PUT /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21047"}, "properties": {"repository": "thariqhatrama/divre-monitoring", "repoUrl": "https://github.com/thariqhatrama/divre-monitoring", "branch": "main"}, "results": [{"ruleId": "scanner-7641d1274d4efc4d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/src/app.js:65"}, "properties": {"repobilityId": "30d2b2734ad3f944", "scanner": "scanner-primary", "fingerprint": "7641d1274d4efc4d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "c37dedade0261a8a", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "9ef8b5a9667addad", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "22ab964bf62c2b2b", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "9c8157664d92f1ce", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "763f782d6bfc705d", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "cb9d0a5657c31a6f", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-1b5a76780c3df9aa", "level": "none", "message": {"text": "1 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "d04379b337b44a15", "scanner": "scanner-primary", "fingerprint": "1b5a76780c3df9aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-6ce18447766f0d0b", "level": "warning", "message": {"text": "Frontend route `/master-data/:tab` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "cadaf35c545f7e5d", "scanner": "scanner-primary", "fingerprint": "6ce18447766f0d0b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c815e4429709a81b", "level": "warning", "message": {"text": "Frontend route `/proyek/:id/edit` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "ec10e6a77ab5b1a5", "scanner": "scanner-primary", "fingerprint": "c815e4429709a81b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-40e46d93854f8d4e", "level": "warning", "message": {"text": "Frontend route `/proyek/:id/detail` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "a6d32a7d3406b54b", "scanner": "scanner-primary", "fingerprint": "40e46d93854f8d4e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-4d6892ccbd30a6ec", "level": "warning", "message": {"text": "Frontend route `/proyek/:id/rab` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "c6554490054ea3fe", "scanner": "scanner-primary", "fingerprint": "4d6892ccbd30a6ec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cd5a299f419e2773", "level": "warning", "message": {"text": "Frontend route `/proyek/:id/realisasi` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "e1cb98e9cb69bff4", "scanner": "scanner-primary", "fingerprint": "cd5a299f419e2773", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9a8f2599dd755bc8", "level": "note", "message": {"text": "Unused endpoint: GET /api/master/coa"}, "properties": {"repobilityId": "7e4ff3bfaad44c06", "scanner": "scanner-primary", "fingerprint": "9a8f2599dd755bc8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8b67e8a85bd464df", "level": "note", "message": {"text": "Unused endpoint: POST /api/master/coa"}, "properties": {"repobilityId": "3fb20f670e51570d", "scanner": "scanner-primary", "fingerprint": "8b67e8a85bd464df", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-41d146d962e16a45", "level": "note", "message": {"text": "Unused endpoint: GET /api/master/cabang"}, "properties": {"repobilityId": "b4959cae5b5fdca9", "scanner": "scanner-primary", "fingerprint": "41d146d962e16a45", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1c4b7c9a844d3fd8", "level": "note", "message": {"text": "Unused endpoint: POST /api/master/cabang"}, "properties": {"repobilityId": "919e4ca2cb0620f7", "scanner": "scanner-primary", "fingerprint": "1c4b7c9a844d3fd8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-645f89fc7d0241b3", "level": "note", "message": {"text": "Unused endpoint: GET /api/master/user"}, "properties": {"repobilityId": "455104f846cd5302", "scanner": "scanner-primary", "fingerprint": "645f89fc7d0241b3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-88bc47d9e76c1bac", "level": "note", "message": {"text": "Unused endpoint: POST /api/master/user"}, "properties": {"repobilityId": "9748f7b7f00b9fd2", "scanner": "scanner-primary", "fingerprint": "88bc47d9e76c1bac", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0300e0029f3e92bb", "level": "note", "message": {"text": "Unused endpoint: GET /api/kurs"}, "properties": {"repobilityId": "b81fdfd3afdf1d25", "scanner": "scanner-primary", "fingerprint": "0300e0029f3e92bb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-35df7550e2b6a5d8", "level": "note", "message": {"text": "Unused endpoint: PUT /api/kurs"}, "properties": {"repobilityId": "5766529954e0cef1", "scanner": "scanner-primary", "fingerprint": "35df7550e2b6a5d8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d4e3e58d26a15902", "level": "note", "message": {"text": "Unused endpoint: GET /api/proyek"}, "properties": {"repobilityId": "9ba51f98dcabbfd7", "scanner": "scanner-primary", "fingerprint": "d4e3e58d26a15902", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1ce58f7e33c4f504", "level": "note", "message": {"text": "Unused endpoint: POST /api/proyek"}, "properties": {"repobilityId": "f8ca822b8efd9ff0", "scanner": "scanner-primary", "fingerprint": "1ce58f7e33c4f504", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2ef426c5e90d2a92", "level": "note", "message": {"text": "Unused endpoint: GET /api/dashboard/summary"}, "properties": {"repobilityId": "cd9798f191c97619", "scanner": "scanner-primary", "fingerprint": "2ef426c5e90d2a92", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-19b4134edacbcf14", "level": "note", "message": {"text": "Unused endpoint: GET /api/dashboard/by-cabang"}, "properties": {"repobilityId": "1fc80745be9109d4", "scanner": "scanner-primary", "fingerprint": "19b4134edacbcf14", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-358932a3761d7def", "level": "note", "message": {"text": "Unused endpoint: GET /api/audit-log"}, "properties": {"repobilityId": "a90dba8986b03151", "scanner": "scanner-primary", "fingerprint": "358932a3761d7def", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d5a39262ac205120", "level": "note", "message": {"text": "Unused endpoint: POST /api/auth/logout"}, "properties": {"repobilityId": "840a14d56e4e0f36", "scanner": "scanner-primary", "fingerprint": "d5a39262ac205120", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fd55aa0818a7c897", "level": "note", "message": {"text": "Unused endpoint: POST /api/auth/login"}, "properties": {"repobilityId": "3dd29e9c53366b5b", "scanner": "scanner-primary", "fingerprint": "fd55aa0818a7c897", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4756b4c4da7d2088", "level": "note", "message": {"text": "Unused endpoint: GET /api/health"}, "properties": {"repobilityId": "9c85f45878bc0dce", "scanner": "scanner-primary", "fingerprint": "4756b4c4da7d2088", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "ca18e1266f7550e2", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6eb452fbfb454d20", "level": "note", "message": {"text": "Unused endpoint: USE /api/auth"}, "properties": {"repobilityId": "a92a59147a6055e6", "scanner": "scanner-primary", "fingerprint": "6eb452fbfb454d20", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-85fedd67a2c37f37", "level": "note", "message": {"text": "Unused endpoint: USE /api/master"}, "properties": {"repobilityId": "d35e4d4c39d229e8", "scanner": "scanner-primary", "fingerprint": "85fedd67a2c37f37", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b54b9cb0dbde46fb", "level": "note", "message": {"text": "Unused endpoint: USE /api/kurs"}, "properties": {"repobilityId": "d200838ec6d2b814", "scanner": "scanner-primary", "fingerprint": "b54b9cb0dbde46fb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2b4126d5d3074ce2", "level": "note", "message": {"text": "Unused endpoint: USE /api/proyek"}, "properties": {"repobilityId": "d7542600ad8ed8df", "scanner": "scanner-primary", "fingerprint": "2b4126d5d3074ce2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dde3adb27bf7eebe", "level": "note", "message": {"text": "Unused endpoint: USE /api"}, "properties": {"repobilityId": "03ed2f4e07b7a32e", "scanner": "scanner-primary", "fingerprint": "dde3adb27bf7eebe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dbdbc13210e7149b", "level": "note", "message": {"text": "Unused endpoint: USE /api/dashboard"}, "properties": {"repobilityId": "3adf4735b5d0d9df", "scanner": "scanner-primary", "fingerprint": "dbdbc13210e7149b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-952018e7021c4afb", "level": "note", "message": {"text": "Unused endpoint: USE /api/audit-log"}, "properties": {"repobilityId": "8dfc0e8a0a40e998", "scanner": "scanner-primary", "fingerprint": "952018e7021c4afb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a009b1a56794f45", "level": "note", "message": {"text": "Unused endpoint: POST /"}, "properties": {"repobilityId": "ca9d8cde5571ddf5", "scanner": "scanner-primary", "fingerprint": "7a009b1a56794f45", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ca5756175765b49d", "level": "note", "message": {"text": "Unused endpoint: GET /:id"}, "properties": {"repobilityId": "35127ffe03c8f529", "scanner": "scanner-primary", "fingerprint": "ca5756175765b49d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5fbc954f63526821", "level": "note", "message": {"text": "Unused endpoint: PATCH /:id"}, "properties": {"repobilityId": "1cce9061a3848ddb", "scanner": "scanner-primary", "fingerprint": "5fbc954f63526821", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a61c112b611f4bb", "level": "note", "message": {"text": "Unused endpoint: DELETE /:id"}, "properties": {"repobilityId": "516df4196fbe3a5e", "scanner": "scanner-primary", "fingerprint": "7a61c112b611f4bb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-512c284ced8b729a", "level": "note", "message": {"text": "Unused endpoint: GET /proyek/:id/rab"}, "properties": {"repobilityId": "72297fa316e0b3a5", "scanner": "scanner-primary", "fingerprint": "512c284ced8b729a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5dfdd62640b39403", "level": "note", "message": {"text": "Unused endpoint: POST /proyek/:id/rab"}, "properties": {"repobilityId": "7645939df1f85dfd", "scanner": "scanner-primary", "fingerprint": "5dfdd62640b39403", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1ac07c7e9c36c474", "level": "note", "message": {"text": "Unused endpoint: PATCH /rab/:itemId"}, "properties": {"repobilityId": "594130c20ef4c0f3", "scanner": "scanner-primary", "fingerprint": "1ac07c7e9c36c474", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b3e32dd5631d86c5", "level": "note", "message": {"text": "Unused endpoint: DELETE /rab/:itemId"}, "properties": {"repobilityId": "f2b979fd78e478a6", "scanner": "scanner-primary", "fingerprint": "b3e32dd5631d86c5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9fb880b5ae677fb3", "level": "note", "message": {"text": "Unused endpoint: GET /coa"}, "properties": {"repobilityId": "e01e76b3e2b9eeae", "scanner": "scanner-primary", "fingerprint": "9fb880b5ae677fb3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bf32c18baa36487a", "level": "note", "message": {"text": "Unused endpoint: POST /coa"}, "properties": {"repobilityId": "654c9a73211092fe", "scanner": "scanner-primary", "fingerprint": "bf32c18baa36487a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-41c440dffe924dd1", "level": "note", "message": {"text": "Unused endpoint: PATCH /coa/:kodeSeg5"}, "properties": {"repobilityId": "01b59b3c06a39da4", "scanner": "scanner-primary", "fingerprint": "41c440dffe924dd1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-538b72182bb3ca3c", "level": "note", "message": {"text": "Unused endpoint: GET /cabang"}, "properties": {"repobilityId": "0862879f853b2c10", "scanner": "scanner-primary", "fingerprint": "538b72182bb3ca3c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-53b0c7c4df08895e", "level": "note", "message": {"text": "Unused endpoint: POST /cabang"}, "properties": {"repobilityId": "bc24aecb205c007c", "scanner": "scanner-primary", "fingerprint": "53b0c7c4df08895e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e955c9c5c58a0e2d", "level": "note", "message": {"text": "Unused endpoint: PATCH /cabang/:id"}, "properties": {"repobilityId": "2dcd184ffb031a6b", "scanner": "scanner-primary", "fingerprint": "e955c9c5c58a0e2d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9b22d4ac642da43c", "level": "note", "message": {"text": "Unused endpoint: GET /user"}, "properties": {"repobilityId": "53dc64fd6b8abae4", "scanner": "scanner-primary", "fingerprint": "9b22d4ac642da43c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4a58ff4a7092fd4b", "level": "note", "message": {"text": "Unused endpoint: POST /user"}, "properties": {"repobilityId": "d90f5d2ff0869c40", "scanner": "scanner-primary", "fingerprint": "4a58ff4a7092fd4b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-07be05bc10d929ff", "level": "note", "message": {"text": "Unused endpoint: PATCH /user/:id"}, "properties": {"repobilityId": "43e99b13edbf9900", "scanner": "scanner-primary", "fingerprint": "07be05bc10d929ff", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-618721b912bad1c2", "level": "note", "message": {"text": "Unused endpoint: POST /login"}, "properties": {"repobilityId": "4e4a7d7b92a83672", "scanner": "scanner-primary", "fingerprint": "618721b912bad1c2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-99fc36db98c134ce", "level": "note", "message": {"text": "Unused endpoint: POST /logout"}, "properties": {"repobilityId": "bb036c79c1c5e7dc", "scanner": "scanner-primary", "fingerprint": "99fc36db98c134ce", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e1b7bee247ffc801", "level": "note", "message": {"text": "Unused endpoint: GET /summary"}, "properties": {"repobilityId": "ff90abd9c2acddf0", "scanner": "scanner-primary", "fingerprint": "e1b7bee247ffc801", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c5c36f3a25e2b143", "level": "note", "message": {"text": "Unused endpoint: GET /by-cabang"}, "properties": {"repobilityId": "30bb6204fdf489ea", "scanner": "scanner-primary", "fingerprint": "c5c36f3a25e2b143", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9e148455f9d36669", "level": "note", "message": {"text": "Unused endpoint: GET /proyek/:id/realisasi"}, "properties": {"repobilityId": "abd612932381417b", "scanner": "scanner-primary", "fingerprint": "9e148455f9d36669", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b35aead475783c04", "level": "note", "message": {"text": "Unused endpoint: POST /rab/:itemId/realisasi"}, "properties": {"repobilityId": "d5eb237bf439c4bb", "scanner": "scanner-primary", "fingerprint": "b35aead475783c04", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d37d8cec3228ee69", "level": "note", "message": {"text": "Unused endpoint: PATCH /realisasi/:id"}, "properties": {"repobilityId": "3c220301bfeacc8d", "scanner": "scanner-primary", "fingerprint": "d37d8cec3228ee69", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9c2e9b22b757469f", "level": "note", "message": {"text": "Unused endpoint: DELETE /realisasi/:id"}, "properties": {"repobilityId": "22230fa03946010f", "scanner": "scanner-primary", "fingerprint": "9c2e9b22b757469f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-67d28fa8cd6bb12f", "level": "note", "message": {"text": "Unused endpoint: PUT /"}, "properties": {"repobilityId": "72f5791813d7bff2", "scanner": "scanner-primary", "fingerprint": "67d28fa8cd6bb12f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}