{"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-790231fe7a2d5d28", "name": "Stray `console.log` in TS/JS \u2014 backend/server.js:1131", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 backend/server.js:1131"}, "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-166dff3c3df6a10e", "name": "ORM models found but no DB engine detected", "shortDescription": {"text": "ORM models found but no DB engine detected"}, "fullDescription": {"text": "The repo defines tables/models but no DB connection string was found. Likely lives in env vars or a config file the scanner didn't read."}, "properties": {"scanner": "scanner-primary", "layer": "data", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7cbc3c85899df94a", "name": "Insecure pattern 'cors_wildcard' in backend/server.js:71", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in backend/server.js:71"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "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-20b14994512b5ac5", "name": "Very large file: backend/server.js (1132 lines)", "shortDescription": {"text": "Very large file: backend/server.js (1132 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "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 5 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-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-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: `VITE_API_BASE_URL`. 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-4756b4c4da7d2088", "name": "Unused endpoint: GET /api/health", "shortDescription": {"text": "Unused endpoint: GET /api/health"}, "fullDescription": {"text": "`backend/server.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-4d2a50ae901e92f0", "name": "Unused endpoint: POST /api/admin/reset-database", "shortDescription": {"text": "Unused endpoint: POST /api/admin/reset-database"}, "fullDescription": {"text": "`backend/server.js` declares `POST /api/admin/reset-database` 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": "`backend/server.js` 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-a5b3437e64c8f7b4", "name": "Unused endpoint: POST /api/auth/register", "shortDescription": {"text": "Unused endpoint: POST /api/auth/register"}, "fullDescription": {"text": "`backend/server.js` declares `POST /api/auth/register` 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-7e3f71caf6c981e5", "name": "Unused endpoint: GET /api/accounts", "shortDescription": {"text": "Unused endpoint: GET /api/accounts"}, "fullDescription": {"text": "`backend/server.js` declares `GET /api/accounts` 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-d49b30cb74724d73", "name": "Unused endpoint: PATCH /api/accounts/:username/promote", "shortDescription": {"text": "Unused endpoint: PATCH /api/accounts/:username/promote"}, "fullDescription": {"text": "`backend/server.js` declares `PATCH /api/accounts/:username/promote` 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-c7e64f0803ba2db1", "name": "Unused endpoint: PATCH /api/accounts/:username/revoke", "shortDescription": {"text": "Unused endpoint: PATCH /api/accounts/:username/revoke"}, "fullDescription": {"text": "`backend/server.js` declares `PATCH /api/accounts/:username/revoke` 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-23d4d8b73b935cff", "name": "Unused endpoint: DELETE /api/accounts/:username", "shortDescription": {"text": "Unused endpoint: DELETE /api/accounts/:username"}, "fullDescription": {"text": "`backend/server.js` declares `DELETE /api/accounts/:username` 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-525802c4c43acb43", "name": "Unused endpoint: GET /api/blood-groups", "shortDescription": {"text": "Unused endpoint: GET /api/blood-groups"}, "fullDescription": {"text": "`backend/server.js` declares `GET /api/blood-groups` 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-7304743bd14b994f", "name": "Unused endpoint: GET /api/staff", "shortDescription": {"text": "Unused endpoint: GET /api/staff"}, "fullDescription": {"text": "`backend/server.js` declares `GET /api/staff` 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-0f2e3f1500b0aac3", "name": "Unused endpoint: GET /api/storages", "shortDescription": {"text": "Unused endpoint: GET /api/storages"}, "fullDescription": {"text": "`backend/server.js` declares `GET /api/storages` 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-8875f97da3041935", "name": "Unused endpoint: GET /api/donors", "shortDescription": {"text": "Unused endpoint: GET /api/donors"}, "fullDescription": {"text": "`backend/server.js` declares `GET /api/donors` 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-a1c70c7f01106f0d", "name": "Unused endpoint: POST /api/donors", "shortDescription": {"text": "Unused endpoint: POST /api/donors"}, "fullDescription": {"text": "`backend/server.js` declares `POST /api/donors` 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-b57f968fd784102a", "name": "Unused endpoint: PUT /api/donors/:id", "shortDescription": {"text": "Unused endpoint: PUT /api/donors/:id"}, "fullDescription": {"text": "`backend/server.js` declares `PUT /api/donors/: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-a4edf22d2be991c2", "name": "Unused endpoint: DELETE /api/donors/:id", "shortDescription": {"text": "Unused endpoint: DELETE /api/donors/:id"}, "fullDescription": {"text": "`backend/server.js` declares `DELETE /api/donors/: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-1cd6ff9aec438e35", "name": "Unused endpoint: GET /api/campaigns", "shortDescription": {"text": "Unused endpoint: GET /api/campaigns"}, "fullDescription": {"text": "`backend/server.js` declares `GET /api/campaigns` 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-5aed77bc825d1c42", "name": "Unused endpoint: POST /api/campaigns", "shortDescription": {"text": "Unused endpoint: POST /api/campaigns"}, "fullDescription": {"text": "`backend/server.js` declares `POST /api/campaigns` 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-18aed0139badcfbd", "name": "Unused endpoint: PUT /api/campaigns/:id", "shortDescription": {"text": "Unused endpoint: PUT /api/campaigns/:id"}, "fullDescription": {"text": "`backend/server.js` declares `PUT /api/campaigns/: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-ef731fe15cfaaac6", "name": "Unused endpoint: DELETE /api/campaigns/:id", "shortDescription": {"text": "Unused endpoint: DELETE /api/campaigns/:id"}, "fullDescription": {"text": "`backend/server.js` declares `DELETE /api/campaigns/: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-e9ede48be52359f1", "name": "Unused endpoint: POST /api/campaigns/:id/register", "shortDescription": {"text": "Unused endpoint: POST /api/campaigns/:id/register"}, "fullDescription": {"text": "`backend/server.js` declares `POST /api/campaigns/:id/register` 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-5644eec51e787c04", "name": "Unused endpoint: DELETE /api/campaigns/:id/register", "shortDescription": {"text": "Unused endpoint: DELETE /api/campaigns/:id/register"}, "fullDescription": {"text": "`backend/server.js` declares `DELETE /api/campaigns/:id/register` 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-d8800165ebf407af", "name": "Unused endpoint: GET /api/campaigns/:id/registrations", "shortDescription": {"text": "Unused endpoint: GET /api/campaigns/:id/registrations"}, "fullDescription": {"text": "`backend/server.js` declares `GET /api/campaigns/:id/registrations` 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-0f64313a57dadab0", "name": "Unused endpoint: GET /api/hospitals", "shortDescription": {"text": "Unused endpoint: GET /api/hospitals"}, "fullDescription": {"text": "`backend/server.js` declares `GET /api/hospitals` 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-8709b50dcc49dfe1", "name": "Unused endpoint: POST /api/hospitals", "shortDescription": {"text": "Unused endpoint: POST /api/hospitals"}, "fullDescription": {"text": "`backend/server.js` declares `POST /api/hospitals` 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-a64da1cf195bc141", "name": "Unused endpoint: PUT /api/hospitals/:id", "shortDescription": {"text": "Unused endpoint: PUT /api/hospitals/:id"}, "fullDescription": {"text": "`backend/server.js` declares `PUT /api/hospitals/: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-9ecfaa00b70efb16", "name": "Unused endpoint: DELETE /api/hospitals/:id", "shortDescription": {"text": "Unused endpoint: DELETE /api/hospitals/:id"}, "fullDescription": {"text": "`backend/server.js` declares `DELETE /api/hospitals/: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-3e0c8e0ae73be579", "name": "Unused endpoint: GET /api/patients", "shortDescription": {"text": "Unused endpoint: GET /api/patients"}, "fullDescription": {"text": "`backend/server.js` declares `GET /api/patients` 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-01c9ee3af6fb2c11", "name": "Unused endpoint: POST /api/patients", "shortDescription": {"text": "Unused endpoint: POST /api/patients"}, "fullDescription": {"text": "`backend/server.js` declares `POST /api/patients` 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-695867d0b686eef2", "name": "Unused endpoint: PUT /api/patients/:id", "shortDescription": {"text": "Unused endpoint: PUT /api/patients/:id"}, "fullDescription": {"text": "`backend/server.js` declares `PUT /api/patients/: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-0cf66619d101ae0f", "name": "Unused endpoint: DELETE /api/patients/:id", "shortDescription": {"text": "Unused endpoint: DELETE /api/patients/:id"}, "fullDescription": {"text": "`backend/server.js` declares `DELETE /api/patients/: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-12497056fcb9f87f", "name": "Unused endpoint: GET /api/blood-bags", "shortDescription": {"text": "Unused endpoint: GET /api/blood-bags"}, "fullDescription": {"text": "`backend/server.js` declares `GET /api/blood-bags` 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-4784ed55f4df08a8", "name": "Unused endpoint: POST /api/blood-bags", "shortDescription": {"text": "Unused endpoint: POST /api/blood-bags"}, "fullDescription": {"text": "`backend/server.js` declares `POST /api/blood-bags` 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-ec1bf190debf664f", "name": "Unused endpoint: PUT /api/blood-bags/:id", "shortDescription": {"text": "Unused endpoint: PUT /api/blood-bags/:id"}, "fullDescription": {"text": "`backend/server.js` declares `PUT /api/blood-bags/: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-f35dc46ca2a56bcc", "name": "Unused endpoint: DELETE /api/blood-bags/:id", "shortDescription": {"text": "Unused endpoint: DELETE /api/blood-bags/:id"}, "fullDescription": {"text": "`backend/server.js` declares `DELETE /api/blood-bags/: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-57579672a6a06ad7", "name": "Unused endpoint: GET /api/lab-tests", "shortDescription": {"text": "Unused endpoint: GET /api/lab-tests"}, "fullDescription": {"text": "`backend/server.js` declares `GET /api/lab-tests` 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-4d67272cde74c393", "name": "Unused endpoint: POST /api/lab-tests", "shortDescription": {"text": "Unused endpoint: POST /api/lab-tests"}, "fullDescription": {"text": "`backend/server.js` declares `POST /api/lab-tests` 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-fa7d768f92707908", "name": "Unused endpoint: PUT /api/lab-tests/:id", "shortDescription": {"text": "Unused endpoint: PUT /api/lab-tests/:id"}, "fullDescription": {"text": "`backend/server.js` declares `PUT /api/lab-tests/: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-97d62cfe140d08b8", "name": "Unused endpoint: DELETE /api/lab-tests/:id", "shortDescription": {"text": "Unused endpoint: DELETE /api/lab-tests/:id"}, "fullDescription": {"text": "`backend/server.js` declares `DELETE /api/lab-tests/: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-b999fcc0e37f948b", "name": "Unused endpoint: GET /api/components", "shortDescription": {"text": "Unused endpoint: GET /api/components"}, "fullDescription": {"text": "`backend/server.js` declares `GET /api/components` 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-f97f58af7d83d313", "name": "Unused endpoint: POST /api/components", "shortDescription": {"text": "Unused endpoint: POST /api/components"}, "fullDescription": {"text": "`backend/server.js` declares `POST /api/components` 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-cf7a4f95e55b2a3d", "name": "Unused endpoint: PUT /api/components/:id", "shortDescription": {"text": "Unused endpoint: PUT /api/components/:id"}, "fullDescription": {"text": "`backend/server.js` declares `PUT /api/components/: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-1c10c0ec6ac90265", "name": "Unused endpoint: DELETE /api/components/:id", "shortDescription": {"text": "Unused endpoint: DELETE /api/components/:id"}, "fullDescription": {"text": "`backend/server.js` declares `DELETE /api/components/: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-fadcef1d5292cf8a", "name": "Unused endpoint: GET /api/requests", "shortDescription": {"text": "Unused endpoint: GET /api/requests"}, "fullDescription": {"text": "`backend/server.js` declares `GET /api/requests` 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-36048192278dd1b4", "name": "Unused endpoint: POST /api/requests", "shortDescription": {"text": "Unused endpoint: POST /api/requests"}, "fullDescription": {"text": "`backend/server.js` declares `POST /api/requests` 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-84f5ab9965a3d574", "name": "Unused endpoint: PUT /api/requests/:id", "shortDescription": {"text": "Unused endpoint: PUT /api/requests/:id"}, "fullDescription": {"text": "`backend/server.js` declares `PUT /api/requests/: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-4cd1e3e78a1ced2d", "name": "Unused endpoint: DELETE /api/requests/:id", "shortDescription": {"text": "Unused endpoint: DELETE /api/requests/:id"}, "fullDescription": {"text": "`backend/server.js` declares `DELETE /api/requests/: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-1fdd8a7916fff3fd", "name": "Unused endpoint: PATCH /api/requests/:id/approve", "shortDescription": {"text": "Unused endpoint: PATCH /api/requests/:id/approve"}, "fullDescription": {"text": "`backend/server.js` declares `PATCH /api/requests/:id/approve` 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-e76389e045220c08", "name": "Unused endpoint: GET /api/exports", "shortDescription": {"text": "Unused endpoint: GET /api/exports"}, "fullDescription": {"text": "`backend/server.js` declares `GET /api/exports` 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-a7c2365d2fe2b0e5", "name": "Unused endpoint: POST /api/exports", "shortDescription": {"text": "Unused endpoint: POST /api/exports"}, "fullDescription": {"text": "`backend/server.js` declares `POST /api/exports` 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-941ff92dd6483626", "name": "Unused endpoint: DELETE /api/exports/:id", "shortDescription": {"text": "Unused endpoint: DELETE /api/exports/:id"}, "fullDescription": {"text": "`backend/server.js` declares `DELETE /api/exports/: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}}]}}, "automationDetails": {"id": "repobility/23488"}, "properties": {"repository": "z3moo/Bloodchain", "repoUrl": "https://github.com/z3moo/Bloodchain", "branch": "main"}, "results": [{"ruleId": "scanner-790231fe7a2d5d28", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 backend/server.js:1131"}, "properties": {"repobilityId": "ec6c625862fd9ddc", "scanner": "scanner-primary", "fingerprint": "790231fe7a2d5d28", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-166dff3c3df6a10e", "level": "warning", "message": {"text": "ORM models found but no DB engine detected"}, "properties": {"repobilityId": "cda36de65e114635", "scanner": "scanner-primary", "fingerprint": "166dff3c3df6a10e", "layer": "data", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-7cbc3c85899df94a", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in backend/server.js:71"}, "properties": {"repobilityId": "c509a14561e07714", "scanner": "scanner-primary", "fingerprint": "7cbc3c85899df94a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/server.js"}, "region": {"startLine": 71}}}]}, {"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-20b14994512b5ac5", "level": "note", "message": {"text": "Very large file: backend/server.js (1132 lines)"}, "properties": {"repobilityId": "2c4c2b5f4015f25d", "scanner": "scanner-primary", "fingerprint": "20b14994512b5ac5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"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": "f8ac97beb0b46510", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "926da8e457bfa8fb", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "2d0115fb126d1823", "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": "08fd8c27ba6348fc", "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-4756b4c4da7d2088", "level": "note", "message": {"text": "Unused endpoint: GET /api/health"}, "properties": {"repobilityId": "1e5295e69c6e06d8", "scanner": "scanner-primary", "fingerprint": "4756b4c4da7d2088", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4d2a50ae901e92f0", "level": "note", "message": {"text": "Unused endpoint: POST /api/admin/reset-database"}, "properties": {"repobilityId": "d7731203e2079f4c", "scanner": "scanner-primary", "fingerprint": "4d2a50ae901e92f0", "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": "59c25c1dd05cb10e", "scanner": "scanner-primary", "fingerprint": "fd55aa0818a7c897", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a5b3437e64c8f7b4", "level": "note", "message": {"text": "Unused endpoint: POST /api/auth/register"}, "properties": {"repobilityId": "fc6394e67b5a715d", "scanner": "scanner-primary", "fingerprint": "a5b3437e64c8f7b4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7e3f71caf6c981e5", "level": "note", "message": {"text": "Unused endpoint: GET /api/accounts"}, "properties": {"repobilityId": "55d0ac3967d9cd0d", "scanner": "scanner-primary", "fingerprint": "7e3f71caf6c981e5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d49b30cb74724d73", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/accounts/:username/promote"}, "properties": {"repobilityId": "5fdc30650842b589", "scanner": "scanner-primary", "fingerprint": "d49b30cb74724d73", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c7e64f0803ba2db1", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/accounts/:username/revoke"}, "properties": {"repobilityId": "89b7667108fd8951", "scanner": "scanner-primary", "fingerprint": "c7e64f0803ba2db1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-23d4d8b73b935cff", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/accounts/:username"}, "properties": {"repobilityId": "edad94a6618699e4", "scanner": "scanner-primary", "fingerprint": "23d4d8b73b935cff", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-525802c4c43acb43", "level": "note", "message": {"text": "Unused endpoint: GET /api/blood-groups"}, "properties": {"repobilityId": "2ebebec7ec9a674a", "scanner": "scanner-primary", "fingerprint": "525802c4c43acb43", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7304743bd14b994f", "level": "note", "message": {"text": "Unused endpoint: GET /api/staff"}, "properties": {"repobilityId": "d747ab97a40d771b", "scanner": "scanner-primary", "fingerprint": "7304743bd14b994f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0f2e3f1500b0aac3", "level": "note", "message": {"text": "Unused endpoint: GET /api/storages"}, "properties": {"repobilityId": "231af8d3502c166b", "scanner": "scanner-primary", "fingerprint": "0f2e3f1500b0aac3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8875f97da3041935", "level": "note", "message": {"text": "Unused endpoint: GET /api/donors"}, "properties": {"repobilityId": "50067c366d325b84", "scanner": "scanner-primary", "fingerprint": "8875f97da3041935", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a1c70c7f01106f0d", "level": "note", "message": {"text": "Unused endpoint: POST /api/donors"}, "properties": {"repobilityId": "9c9a11a0f114d9de", "scanner": "scanner-primary", "fingerprint": "a1c70c7f01106f0d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b57f968fd784102a", "level": "note", "message": {"text": "Unused endpoint: PUT /api/donors/:id"}, "properties": {"repobilityId": "69745894ac4ae5d2", "scanner": "scanner-primary", "fingerprint": "b57f968fd784102a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a4edf22d2be991c2", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/donors/:id"}, "properties": {"repobilityId": "627b58ff1c91d104", "scanner": "scanner-primary", "fingerprint": "a4edf22d2be991c2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1cd6ff9aec438e35", "level": "note", "message": {"text": "Unused endpoint: GET /api/campaigns"}, "properties": {"repobilityId": "ce6b20f4848ce089", "scanner": "scanner-primary", "fingerprint": "1cd6ff9aec438e35", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5aed77bc825d1c42", "level": "note", "message": {"text": "Unused endpoint: POST /api/campaigns"}, "properties": {"repobilityId": "7ee76a5751a2b793", "scanner": "scanner-primary", "fingerprint": "5aed77bc825d1c42", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-18aed0139badcfbd", "level": "note", "message": {"text": "Unused endpoint: PUT /api/campaigns/:id"}, "properties": {"repobilityId": "046a8eb72c040ee6", "scanner": "scanner-primary", "fingerprint": "18aed0139badcfbd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ef731fe15cfaaac6", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/campaigns/:id"}, "properties": {"repobilityId": "c03b00d273745930", "scanner": "scanner-primary", "fingerprint": "ef731fe15cfaaac6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e9ede48be52359f1", "level": "note", "message": {"text": "Unused endpoint: POST /api/campaigns/:id/register"}, "properties": {"repobilityId": "2742f735bd7fecf0", "scanner": "scanner-primary", "fingerprint": "e9ede48be52359f1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5644eec51e787c04", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/campaigns/:id/register"}, "properties": {"repobilityId": "2bb0552ad7594d62", "scanner": "scanner-primary", "fingerprint": "5644eec51e787c04", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d8800165ebf407af", "level": "note", "message": {"text": "Unused endpoint: GET /api/campaigns/:id/registrations"}, "properties": {"repobilityId": "10b226e8daeee747", "scanner": "scanner-primary", "fingerprint": "d8800165ebf407af", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0f64313a57dadab0", "level": "note", "message": {"text": "Unused endpoint: GET /api/hospitals"}, "properties": {"repobilityId": "062faceeed1df61d", "scanner": "scanner-primary", "fingerprint": "0f64313a57dadab0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8709b50dcc49dfe1", "level": "note", "message": {"text": "Unused endpoint: POST /api/hospitals"}, "properties": {"repobilityId": "9f857fb269a391ee", "scanner": "scanner-primary", "fingerprint": "8709b50dcc49dfe1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a64da1cf195bc141", "level": "note", "message": {"text": "Unused endpoint: PUT /api/hospitals/:id"}, "properties": {"repobilityId": "900c92bd365f5626", "scanner": "scanner-primary", "fingerprint": "a64da1cf195bc141", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9ecfaa00b70efb16", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/hospitals/:id"}, "properties": {"repobilityId": "5835aaf2ce6e18a5", "scanner": "scanner-primary", "fingerprint": "9ecfaa00b70efb16", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3e0c8e0ae73be579", "level": "note", "message": {"text": "Unused endpoint: GET /api/patients"}, "properties": {"repobilityId": "dfff4e1af8ef998c", "scanner": "scanner-primary", "fingerprint": "3e0c8e0ae73be579", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-01c9ee3af6fb2c11", "level": "note", "message": {"text": "Unused endpoint: POST /api/patients"}, "properties": {"repobilityId": "fd9703b0eb1b964f", "scanner": "scanner-primary", "fingerprint": "01c9ee3af6fb2c11", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-695867d0b686eef2", "level": "note", "message": {"text": "Unused endpoint: PUT /api/patients/:id"}, "properties": {"repobilityId": "cf6d492747bed555", "scanner": "scanner-primary", "fingerprint": "695867d0b686eef2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0cf66619d101ae0f", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/patients/:id"}, "properties": {"repobilityId": "1e15992a9b59e10b", "scanner": "scanner-primary", "fingerprint": "0cf66619d101ae0f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-12497056fcb9f87f", "level": "note", "message": {"text": "Unused endpoint: GET /api/blood-bags"}, "properties": {"repobilityId": "0eff48f4cf67b3d7", "scanner": "scanner-primary", "fingerprint": "12497056fcb9f87f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4784ed55f4df08a8", "level": "note", "message": {"text": "Unused endpoint: POST /api/blood-bags"}, "properties": {"repobilityId": "5f09fb93a9dd6da7", "scanner": "scanner-primary", "fingerprint": "4784ed55f4df08a8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ec1bf190debf664f", "level": "note", "message": {"text": "Unused endpoint: PUT /api/blood-bags/:id"}, "properties": {"repobilityId": "1df3543e49c7ac6f", "scanner": "scanner-primary", "fingerprint": "ec1bf190debf664f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f35dc46ca2a56bcc", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/blood-bags/:id"}, "properties": {"repobilityId": "4041d8726168019e", "scanner": "scanner-primary", "fingerprint": "f35dc46ca2a56bcc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-57579672a6a06ad7", "level": "note", "message": {"text": "Unused endpoint: GET /api/lab-tests"}, "properties": {"repobilityId": "82e1a10155bbf38d", "scanner": "scanner-primary", "fingerprint": "57579672a6a06ad7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4d67272cde74c393", "level": "note", "message": {"text": "Unused endpoint: POST /api/lab-tests"}, "properties": {"repobilityId": "eac77ae4656d1930", "scanner": "scanner-primary", "fingerprint": "4d67272cde74c393", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fa7d768f92707908", "level": "note", "message": {"text": "Unused endpoint: PUT /api/lab-tests/:id"}, "properties": {"repobilityId": "1a8e3fbcf7ad7b8a", "scanner": "scanner-primary", "fingerprint": "fa7d768f92707908", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-97d62cfe140d08b8", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/lab-tests/:id"}, "properties": {"repobilityId": "69d98b1e9d91c973", "scanner": "scanner-primary", "fingerprint": "97d62cfe140d08b8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b999fcc0e37f948b", "level": "note", "message": {"text": "Unused endpoint: GET /api/components"}, "properties": {"repobilityId": "a50ae628ca2aef40", "scanner": "scanner-primary", "fingerprint": "b999fcc0e37f948b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f97f58af7d83d313", "level": "note", "message": {"text": "Unused endpoint: POST /api/components"}, "properties": {"repobilityId": "397ec5a357d8f292", "scanner": "scanner-primary", "fingerprint": "f97f58af7d83d313", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cf7a4f95e55b2a3d", "level": "note", "message": {"text": "Unused endpoint: PUT /api/components/:id"}, "properties": {"repobilityId": "cf5025bb8ea73ddd", "scanner": "scanner-primary", "fingerprint": "cf7a4f95e55b2a3d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1c10c0ec6ac90265", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/components/:id"}, "properties": {"repobilityId": "0b01b9df7ddfc737", "scanner": "scanner-primary", "fingerprint": "1c10c0ec6ac90265", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fadcef1d5292cf8a", "level": "note", "message": {"text": "Unused endpoint: GET /api/requests"}, "properties": {"repobilityId": "d91463ff6c3ed8e4", "scanner": "scanner-primary", "fingerprint": "fadcef1d5292cf8a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-36048192278dd1b4", "level": "note", "message": {"text": "Unused endpoint: POST /api/requests"}, "properties": {"repobilityId": "f90af773d5e62d79", "scanner": "scanner-primary", "fingerprint": "36048192278dd1b4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-84f5ab9965a3d574", "level": "note", "message": {"text": "Unused endpoint: PUT /api/requests/:id"}, "properties": {"repobilityId": "b9a071622715d376", "scanner": "scanner-primary", "fingerprint": "84f5ab9965a3d574", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4cd1e3e78a1ced2d", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/requests/:id"}, "properties": {"repobilityId": "f1ae6cf01ece456e", "scanner": "scanner-primary", "fingerprint": "4cd1e3e78a1ced2d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1fdd8a7916fff3fd", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/requests/:id/approve"}, "properties": {"repobilityId": "21bb3c03a8d9337f", "scanner": "scanner-primary", "fingerprint": "1fdd8a7916fff3fd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e76389e045220c08", "level": "note", "message": {"text": "Unused endpoint: GET /api/exports"}, "properties": {"repobilityId": "b144859c6b98273c", "scanner": "scanner-primary", "fingerprint": "e76389e045220c08", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a7c2365d2fe2b0e5", "level": "note", "message": {"text": "Unused endpoint: POST /api/exports"}, "properties": {"repobilityId": "36044cc3186a7155", "scanner": "scanner-primary", "fingerprint": "a7c2365d2fe2b0e5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-941ff92dd6483626", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/exports/:id"}, "properties": {"repobilityId": "edc44bcf85485a41", "scanner": "scanner-primary", "fingerprint": "941ff92dd6483626", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}