{"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-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-93e02e0d67c8f3e8", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "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-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-36a8d4c7d5b60804", "name": "Very large file: src/modules/flights/flights.service.ts (1957 lines)", "shortDescription": {"text": "Very large file: src/modules/flights/flights.service.ts (1957 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 170 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-935dc668d3aa1d16", "name": "Commented-code block (5 lines) in src/modules/flights/flights.service.ts:212", "shortDescription": {"text": "Commented-code block (5 lines) in src/modules/flights/flights.service.ts:212"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "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: `CSD_PASSWORD`. 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-ca5756175765b49d", "name": "Unused endpoint: GET /:id", "shortDescription": {"text": "Unused endpoint: GET /:id"}, "fullDescription": {"text": "`src/modules/document-types/document-types.controller.ts` 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": "`src/modules/document-types/document-types.controller.ts` 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": "`src/modules/document-types/document-types.controller.ts` 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-78232264d930514c", "name": "Unused endpoint: POST /compras/extraer", "shortDescription": {"text": "Unused endpoint: POST /compras/extraer"}, "fullDescription": {"text": "`src/modules/inventory/inventory.controller.ts` declares `POST /compras/extraer` 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-20261ee12aca4649", "name": "Unused endpoint: POST /compras/importar", "shortDescription": {"text": "Unused endpoint: POST /compras/importar"}, "fullDescription": {"text": "`src/modules/inventory/inventory.controller.ts` declares `POST /compras/importar` 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-45f114055f72c285", "name": "Unused endpoint: GET /items", "shortDescription": {"text": "Unused endpoint: GET /items"}, "fullDescription": {"text": "`src/modules/inventory/inventory.controller.ts` declares `GET /items` 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-d3bcdde7ece616db", "name": "Unused endpoint: GET /items/export", "shortDescription": {"text": "Unused endpoint: GET /items/export"}, "fullDescription": {"text": "`src/modules/inventory/inventory.controller.ts` declares `GET /items/export` 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-7e2aebb8dfde31c6", "name": "Unused endpoint: POST /items", "shortDescription": {"text": "Unused endpoint: POST /items"}, "fullDescription": {"text": "`src/modules/inventory/inventory.controller.ts` declares `POST /items` 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-7fd3e0ace72835a4", "name": "Unused endpoint: GET /movimientos", "shortDescription": {"text": "Unused endpoint: GET /movimientos"}, "fullDescription": {"text": "`src/modules/inventory/inventory.controller.ts` declares `GET /movimientos` 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-66cd5e4280b75441", "name": "Unused endpoint: GET /movimientos/export", "shortDescription": {"text": "Unused endpoint: GET /movimientos/export"}, "fullDescription": {"text": "`src/modules/inventory/inventory.controller.ts` declares `GET /movimientos/export` 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-1506f0b5d0e0cbe8", "name": "Unused endpoint: GET /items/:id", "shortDescription": {"text": "Unused endpoint: GET /items/:id"}, "fullDescription": {"text": "`src/modules/inventory/inventory.controller.ts` declares `GET /items/: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-8481dc09da245492", "name": "Unused endpoint: PATCH /items/:id", "shortDescription": {"text": "Unused endpoint: PATCH /items/:id"}, "fullDescription": {"text": "`src/modules/inventory/inventory.controller.ts` declares `PATCH /items/: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-38d7c846122a79ea", "name": "Unused endpoint: DELETE /items/:id", "shortDescription": {"text": "Unused endpoint: DELETE /items/:id"}, "fullDescription": {"text": "`src/modules/inventory/inventory.controller.ts` declares `DELETE /items/: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-e56fa6702a652e43", "name": "Unused endpoint: POST /items/:id/movimientos", "shortDescription": {"text": "Unused endpoint: POST /items/:id/movimientos"}, "fullDescription": {"text": "`src/modules/inventory/inventory.controller.ts` declares `POST /items/:id/movimientos` 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-1e281f1de2a558c8", "name": "Unused endpoint: POST /:id/reset-password", "shortDescription": {"text": "Unused endpoint: POST /:id/reset-password"}, "fullDescription": {"text": "`src/modules/users/users.controller.ts` declares `POST /:id/reset-password` 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-ff15dc120c9b481b", "name": "Unused endpoint: POST /:id/resend-invitation", "shortDescription": {"text": "Unused endpoint: POST /:id/resend-invitation"}, "fullDescription": {"text": "`src/modules/users/users.controller.ts` declares `POST /:id/resend-invitation` 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-b00b191f07958d93", "name": "Unused endpoint: POST /:id/transplant", "shortDescription": {"text": "Unused endpoint: POST /:id/transplant"}, "fullDescription": {"text": "`src/modules/engines/engines.controller.ts` declares `POST /:id/transplant` 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-29d43b7eb446550e", "name": "Unused endpoint: GET /:id/transplants", "shortDescription": {"text": "Unused endpoint: GET /:id/transplants"}, "fullDescription": {"text": "`src/modules/engines/engines.controller.ts` declares `GET /:id/transplants` 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-9de4cecd0e235584", "name": "Unused endpoint: GET /pending", "shortDescription": {"text": "Unused endpoint: GET /pending"}, "fullDescription": {"text": "`src/modules/facturacion/invoices.controller.ts` declares `GET /pending` 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-4079fddfeea17e4b", "name": "Unused endpoint: GET /cierre", "shortDescription": {"text": "Unused endpoint: GET /cierre"}, "fullDescription": {"text": "`src/modules/facturacion/invoices.controller.ts` declares `GET /cierre` 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-9876a63a6fc66565", "name": "Unused endpoint: POST /emitir", "shortDescription": {"text": "Unused endpoint: POST /emitir"}, "fullDescription": {"text": "`src/modules/facturacion/invoices.controller.ts` declares `POST /emitir` 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-f5f82fdc41165eb8", "name": "Unused endpoint: POST /nota-credito", "shortDescription": {"text": "Unused endpoint: POST /nota-credito"}, "fullDescription": {"text": "`src/modules/facturacion/invoices.controller.ts` declares `POST /nota-credito` 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-c9aa65ec0e5acc51", "name": "Unused endpoint: POST /:id/cancelar", "shortDescription": {"text": "Unused endpoint: POST /:id/cancelar"}, "fullDescription": {"text": "`src/modules/facturacion/invoices.controller.ts` declares `POST /:id/cancelar` 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-18f43f87db558b27", "name": "Unused endpoint: POST /file-urls", "shortDescription": {"text": "Unused endpoint: POST /file-urls"}, "fullDescription": {"text": "`src/modules/facturacion/invoices.controller.ts` declares `POST /file-urls` 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-14b89bf5c77bfe63", "name": "Unused endpoint: GET /recibidas", "shortDescription": {"text": "Unused endpoint: GET /recibidas"}, "fullDescription": {"text": "`src/modules/facturacion/invoices.controller.ts` declares `GET /recibidas` 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-4296fd539ce95553", "name": "Unused endpoint: POST /recibidas", "shortDescription": {"text": "Unused endpoint: POST /recibidas"}, "fullDescription": {"text": "`src/modules/facturacion/invoices.controller.ts` declares `POST /recibidas` 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-e64932686a18e455", "name": "Unused endpoint: PATCH /recibidas/:id", "shortDescription": {"text": "Unused endpoint: PATCH /recibidas/:id"}, "fullDescription": {"text": "`src/modules/facturacion/invoices.controller.ts` declares `PATCH /recibidas/: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-8b1edc602ddeb1c2", "name": "Unused endpoint: DELETE /recibidas/:id", "shortDescription": {"text": "Unused endpoint: DELETE /recibidas/:id"}, "fullDescription": {"text": "`src/modules/facturacion/invoices.controller.ts` declares `DELETE /recibidas/: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-61dae1e2e833f1f5", "name": "Unused endpoint: POST /recibidas/file-urls", "shortDescription": {"text": "Unused endpoint: POST /recibidas/file-urls"}, "fullDescription": {"text": "`src/modules/facturacion/invoices.controller.ts` declares `POST /recibidas/file-urls` 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-598b6786de30f632", "name": "Unused endpoint: GET /aircraft/:id/maintenance", "shortDescription": {"text": "Unused endpoint: GET /aircraft/:id/maintenance"}, "fullDescription": {"text": "`src/modules/engineering/engineering.controller.ts` declares `GET /aircraft/:id/maintenance` 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-e491c5b3be63411d", "name": "Unused endpoint: POST /aircraft/:id/maintenance", "shortDescription": {"text": "Unused endpoint: POST /aircraft/:id/maintenance"}, "fullDescription": {"text": "`src/modules/engineering/engineering.controller.ts` declares `POST /aircraft/:id/maintenance` 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-d7428a055b30ec10", "name": "Unused endpoint: PATCH /maintenance/:mid", "shortDescription": {"text": "Unused endpoint: PATCH /maintenance/:mid"}, "fullDescription": {"text": "`src/modules/engineering/engineering.controller.ts` declares `PATCH /maintenance/:mid` 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-d473069525060bf3", "name": "Unused endpoint: GET /aircraft/:id/expirations", "shortDescription": {"text": "Unused endpoint: GET /aircraft/:id/expirations"}, "fullDescription": {"text": "`src/modules/engineering/engineering.controller.ts` declares `GET /aircraft/:id/expirations` 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-269e0e2ce83f1b9a", "name": "Unused endpoint: POST /aircraft/:id/expirations", "shortDescription": {"text": "Unused endpoint: POST /aircraft/:id/expirations"}, "fullDescription": {"text": "`src/modules/engineering/engineering.controller.ts` declares `POST /aircraft/:id/expirations` 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-61daee5f7b3d0fc7", "name": "Unused endpoint: GET /document-types", "shortDescription": {"text": "Unused endpoint: GET /document-types"}, "fullDescription": {"text": "`src/modules/engineering/engineering.controller.ts` declares `GET /document-types` 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-49a63852e7dabded", "name": "Unused endpoint: GET /upcoming", "shortDescription": {"text": "Unused endpoint: GET /upcoming"}, "fullDescription": {"text": "`src/modules/engineering/engineering.controller.ts` declares `GET /upcoming` 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-982b6f70fb80d6b5", "name": "Unused endpoint: GET /:id/metrics", "shortDescription": {"text": "Unused endpoint: GET /:id/metrics"}, "fullDescription": {"text": "`src/modules/aircraft/aircraft.controller.ts` declares `GET /:id/metrics` 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-749c91b903226404", "name": "Unused endpoint: GET /:id/snapshot", "shortDescription": {"text": "Unused endpoint: GET /:id/snapshot"}, "fullDescription": {"text": "`src/modules/aircraft/aircraft.controller.ts` declares `GET /:id/snapshot` 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-dc39e689855459e6", "name": "Unused endpoint: GET /:id/owners", "shortDescription": {"text": "Unused endpoint: GET /:id/owners"}, "fullDescription": {"text": "`src/modules/aircraft/aircraft.controller.ts` declares `GET /:id/owners` 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-e04b5192deb10775", "name": "Unused endpoint: POST /:id/owners", "shortDescription": {"text": "Unused endpoint: POST /:id/owners"}, "fullDescription": {"text": "`src/modules/aircraft/aircraft.controller.ts` declares `POST /:id/owners` 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-dcdf109d8aa05a76", "name": "Unused endpoint: PATCH /owners/:ownerId", "shortDescription": {"text": "Unused endpoint: PATCH /owners/:ownerId"}, "fullDescription": {"text": "`src/modules/aircraft/aircraft.controller.ts` declares `PATCH /owners/:ownerId` 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-a3a03cb7ec9f0e8f", "name": "Unused endpoint: DELETE /owners/:ownerId", "shortDescription": {"text": "Unused endpoint: DELETE /owners/:ownerId"}, "fullDescription": {"text": "`src/modules/aircraft/aircraft.controller.ts` declares `DELETE /owners/:ownerId` 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-f8ddae27fad43201", "name": "Unused endpoint: GET /:id/insurance", "shortDescription": {"text": "Unused endpoint: GET /:id/insurance"}, "fullDescription": {"text": "`src/modules/aircraft/aircraft.controller.ts` declares `GET /:id/insurance` 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-d65ad3dad37e69e1", "name": "Unused endpoint: POST /:id/insurance", "shortDescription": {"text": "Unused endpoint: POST /:id/insurance"}, "fullDescription": {"text": "`src/modules/aircraft/aircraft.controller.ts` declares `POST /:id/insurance` 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-db711f30ea94bf00", "name": "Unused endpoint: PATCH /insurance/:seguroId", "shortDescription": {"text": "Unused endpoint: PATCH /insurance/:seguroId"}, "fullDescription": {"text": "`src/modules/aircraft/aircraft.controller.ts` declares `PATCH /insurance/:seguroId` 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-2970b1b126cff0a2", "name": "Unused endpoint: DELETE /insurance/:seguroId", "shortDescription": {"text": "Unused endpoint: DELETE /insurance/:seguroId"}, "fullDescription": {"text": "`src/modules/aircraft/aircraft.controller.ts` declares `DELETE /insurance/:seguroId` 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-7d7e90e5ac1b2855", "name": "Unused endpoint: GET /:id/squawks", "shortDescription": {"text": "Unused endpoint: GET /:id/squawks"}, "fullDescription": {"text": "`src/modules/aircraft/aircraft.controller.ts` declares `GET /:id/squawks` 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-ffadbb28cbf0fc5b", "name": "Unused endpoint: POST /:id/squawks", "shortDescription": {"text": "Unused endpoint: POST /:id/squawks"}, "fullDescription": {"text": "`src/modules/aircraft/aircraft.controller.ts` declares `POST /:id/squawks` 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-393b073e51ae0852", "name": "Unused endpoint: PATCH /squawks/:squawkId", "shortDescription": {"text": "Unused endpoint: PATCH /squawks/:squawkId"}, "fullDescription": {"text": "`src/modules/aircraft/aircraft.controller.ts` declares `PATCH /squawks/:squawkId` 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-e1a896df91e5b3dc", "name": "Unused endpoint: DELETE /squawks/:squawkId", "shortDescription": {"text": "Unused endpoint: DELETE /squawks/:squawkId"}, "fullDescription": {"text": "`src/modules/aircraft/aircraft.controller.ts` declares `DELETE /squawks/:squawkId` 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/22453"}, "properties": {"repository": "vuelatour/vuelatour-api", "repoUrl": "https://github.com/vuelatour/vuelatour-api", "branch": "main"}, "results": [{"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-93e02e0d67c8f3e8", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-slim"}, "properties": {"repobilityId": "60bc8433e59d7093", "scanner": "scanner-primary", "fingerprint": "93e02e0d67c8f3e8", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-93e02e0d67c8f3e8", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-slim"}, "properties": {"repobilityId": "9d1cfffa49b15a99", "scanner": "scanner-primary", "fingerprint": "93e02e0d67c8f3e8", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"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-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-36a8d4c7d5b60804", "level": "note", "message": {"text": "Very large file: src/modules/flights/flights.service.ts (1957 lines)"}, "properties": {"repobilityId": "61d52c75f0e1bc7a", "scanner": "scanner-primary", "fingerprint": "36a8d4c7d5b60804", "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": "ed68c4ed0af91b07", "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": "0205a70d921e20f5", "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": "72b1a4c78aff99b4", "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": "0df0a2c9638808db", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-935dc668d3aa1d16", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/modules/flights/flights.service.ts:212"}, "properties": {"repobilityId": "d2cace5055942156", "scanner": "scanner-primary", "fingerprint": "935dc668d3aa1d16", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"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-ca5756175765b49d", "level": "note", "message": {"text": "Unused endpoint: GET /:id"}, "properties": {"repobilityId": "3a60ad9dbfb9d5b4", "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": "de801fc150956f6f", "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": "6e6440d4dd19f74d", "scanner": "scanner-primary", "fingerprint": "7a61c112b611f4bb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-78232264d930514c", "level": "note", "message": {"text": "Unused endpoint: POST /compras/extraer"}, "properties": {"repobilityId": "661f167b8059488a", "scanner": "scanner-primary", "fingerprint": "78232264d930514c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-20261ee12aca4649", "level": "note", "message": {"text": "Unused endpoint: POST /compras/importar"}, "properties": {"repobilityId": "8fdb6baea03cdc6d", "scanner": "scanner-primary", "fingerprint": "20261ee12aca4649", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-45f114055f72c285", "level": "note", "message": {"text": "Unused endpoint: GET /items"}, "properties": {"repobilityId": "f3dbb9355aeaa6a2", "scanner": "scanner-primary", "fingerprint": "45f114055f72c285", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d3bcdde7ece616db", "level": "note", "message": {"text": "Unused endpoint: GET /items/export"}, "properties": {"repobilityId": "c4b9417d404c96f9", "scanner": "scanner-primary", "fingerprint": "d3bcdde7ece616db", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7e2aebb8dfde31c6", "level": "note", "message": {"text": "Unused endpoint: POST /items"}, "properties": {"repobilityId": "83f6f850cf6f72c9", "scanner": "scanner-primary", "fingerprint": "7e2aebb8dfde31c6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7fd3e0ace72835a4", "level": "note", "message": {"text": "Unused endpoint: GET /movimientos"}, "properties": {"repobilityId": "fe1c68fdb46d089d", "scanner": "scanner-primary", "fingerprint": "7fd3e0ace72835a4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-66cd5e4280b75441", "level": "note", "message": {"text": "Unused endpoint: GET /movimientos/export"}, "properties": {"repobilityId": "4bf809e85fa22847", "scanner": "scanner-primary", "fingerprint": "66cd5e4280b75441", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1506f0b5d0e0cbe8", "level": "note", "message": {"text": "Unused endpoint: GET /items/:id"}, "properties": {"repobilityId": "d3a4350bf3490d70", "scanner": "scanner-primary", "fingerprint": "1506f0b5d0e0cbe8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8481dc09da245492", "level": "note", "message": {"text": "Unused endpoint: PATCH /items/:id"}, "properties": {"repobilityId": "cd0c616498e8c4d6", "scanner": "scanner-primary", "fingerprint": "8481dc09da245492", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-38d7c846122a79ea", "level": "note", "message": {"text": "Unused endpoint: DELETE /items/:id"}, "properties": {"repobilityId": "3f0cc6847ff1f922", "scanner": "scanner-primary", "fingerprint": "38d7c846122a79ea", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e56fa6702a652e43", "level": "note", "message": {"text": "Unused endpoint: POST /items/:id/movimientos"}, "properties": {"repobilityId": "d0bbb302e32eebb1", "scanner": "scanner-primary", "fingerprint": "e56fa6702a652e43", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1e281f1de2a558c8", "level": "note", "message": {"text": "Unused endpoint: POST /:id/reset-password"}, "properties": {"repobilityId": "1544cbef178aa384", "scanner": "scanner-primary", "fingerprint": "1e281f1de2a558c8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ff15dc120c9b481b", "level": "note", "message": {"text": "Unused endpoint: POST /:id/resend-invitation"}, "properties": {"repobilityId": "969e88c94eb5b1d6", "scanner": "scanner-primary", "fingerprint": "ff15dc120c9b481b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b00b191f07958d93", "level": "note", "message": {"text": "Unused endpoint: POST /:id/transplant"}, "properties": {"repobilityId": "9c088f29d43ca180", "scanner": "scanner-primary", "fingerprint": "b00b191f07958d93", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-29d43b7eb446550e", "level": "note", "message": {"text": "Unused endpoint: GET /:id/transplants"}, "properties": {"repobilityId": "d841358c284e1e51", "scanner": "scanner-primary", "fingerprint": "29d43b7eb446550e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9de4cecd0e235584", "level": "note", "message": {"text": "Unused endpoint: GET /pending"}, "properties": {"repobilityId": "f5689cb8d081c6c1", "scanner": "scanner-primary", "fingerprint": "9de4cecd0e235584", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4079fddfeea17e4b", "level": "note", "message": {"text": "Unused endpoint: GET /cierre"}, "properties": {"repobilityId": "1d6a73f4ea92af1b", "scanner": "scanner-primary", "fingerprint": "4079fddfeea17e4b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9876a63a6fc66565", "level": "note", "message": {"text": "Unused endpoint: POST /emitir"}, "properties": {"repobilityId": "24599b04beca7db3", "scanner": "scanner-primary", "fingerprint": "9876a63a6fc66565", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f5f82fdc41165eb8", "level": "note", "message": {"text": "Unused endpoint: POST /nota-credito"}, "properties": {"repobilityId": "37775c304373c11d", "scanner": "scanner-primary", "fingerprint": "f5f82fdc41165eb8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c9aa65ec0e5acc51", "level": "note", "message": {"text": "Unused endpoint: POST /:id/cancelar"}, "properties": {"repobilityId": "1e6189c529fec2f9", "scanner": "scanner-primary", "fingerprint": "c9aa65ec0e5acc51", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-18f43f87db558b27", "level": "note", "message": {"text": "Unused endpoint: POST /file-urls"}, "properties": {"repobilityId": "d59b3766709406dc", "scanner": "scanner-primary", "fingerprint": "18f43f87db558b27", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-14b89bf5c77bfe63", "level": "note", "message": {"text": "Unused endpoint: GET /recibidas"}, "properties": {"repobilityId": "8b7ba2dd84a1abd8", "scanner": "scanner-primary", "fingerprint": "14b89bf5c77bfe63", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4296fd539ce95553", "level": "note", "message": {"text": "Unused endpoint: POST /recibidas"}, "properties": {"repobilityId": "87119feb42bd709f", "scanner": "scanner-primary", "fingerprint": "4296fd539ce95553", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e64932686a18e455", "level": "note", "message": {"text": "Unused endpoint: PATCH /recibidas/:id"}, "properties": {"repobilityId": "bffbe05767ad2d57", "scanner": "scanner-primary", "fingerprint": "e64932686a18e455", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8b1edc602ddeb1c2", "level": "note", "message": {"text": "Unused endpoint: DELETE /recibidas/:id"}, "properties": {"repobilityId": "9d80994b7883391e", "scanner": "scanner-primary", "fingerprint": "8b1edc602ddeb1c2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-61dae1e2e833f1f5", "level": "note", "message": {"text": "Unused endpoint: POST /recibidas/file-urls"}, "properties": {"repobilityId": "d5bb8396b0be0d91", "scanner": "scanner-primary", "fingerprint": "61dae1e2e833f1f5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-598b6786de30f632", "level": "note", "message": {"text": "Unused endpoint: GET /aircraft/:id/maintenance"}, "properties": {"repobilityId": "d4e9e7a377a27550", "scanner": "scanner-primary", "fingerprint": "598b6786de30f632", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e491c5b3be63411d", "level": "note", "message": {"text": "Unused endpoint: POST /aircraft/:id/maintenance"}, "properties": {"repobilityId": "ac348f54e93e91a1", "scanner": "scanner-primary", "fingerprint": "e491c5b3be63411d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d7428a055b30ec10", "level": "note", "message": {"text": "Unused endpoint: PATCH /maintenance/:mid"}, "properties": {"repobilityId": "6a1f2f2cddf6266f", "scanner": "scanner-primary", "fingerprint": "d7428a055b30ec10", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d473069525060bf3", "level": "note", "message": {"text": "Unused endpoint: GET /aircraft/:id/expirations"}, "properties": {"repobilityId": "0c56b17c0aadd494", "scanner": "scanner-primary", "fingerprint": "d473069525060bf3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-269e0e2ce83f1b9a", "level": "note", "message": {"text": "Unused endpoint: POST /aircraft/:id/expirations"}, "properties": {"repobilityId": "2b3f08a8e1934d2c", "scanner": "scanner-primary", "fingerprint": "269e0e2ce83f1b9a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-61daee5f7b3d0fc7", "level": "note", "message": {"text": "Unused endpoint: GET /document-types"}, "properties": {"repobilityId": "156c6e6808f87fb2", "scanner": "scanner-primary", "fingerprint": "61daee5f7b3d0fc7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-49a63852e7dabded", "level": "note", "message": {"text": "Unused endpoint: GET /upcoming"}, "properties": {"repobilityId": "b8af1b9960411cc2", "scanner": "scanner-primary", "fingerprint": "49a63852e7dabded", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-982b6f70fb80d6b5", "level": "note", "message": {"text": "Unused endpoint: GET /:id/metrics"}, "properties": {"repobilityId": "251f11840e84f801", "scanner": "scanner-primary", "fingerprint": "982b6f70fb80d6b5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-749c91b903226404", "level": "note", "message": {"text": "Unused endpoint: GET /:id/snapshot"}, "properties": {"repobilityId": "e3f1fd1c13d66dc7", "scanner": "scanner-primary", "fingerprint": "749c91b903226404", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dc39e689855459e6", "level": "note", "message": {"text": "Unused endpoint: GET /:id/owners"}, "properties": {"repobilityId": "41625e9c10d19857", "scanner": "scanner-primary", "fingerprint": "dc39e689855459e6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e04b5192deb10775", "level": "note", "message": {"text": "Unused endpoint: POST /:id/owners"}, "properties": {"repobilityId": "c791caccbf0627d3", "scanner": "scanner-primary", "fingerprint": "e04b5192deb10775", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dcdf109d8aa05a76", "level": "note", "message": {"text": "Unused endpoint: PATCH /owners/:ownerId"}, "properties": {"repobilityId": "903b13800c9d76fd", "scanner": "scanner-primary", "fingerprint": "dcdf109d8aa05a76", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a3a03cb7ec9f0e8f", "level": "note", "message": {"text": "Unused endpoint: DELETE /owners/:ownerId"}, "properties": {"repobilityId": "b496f1dfd44f08bf", "scanner": "scanner-primary", "fingerprint": "a3a03cb7ec9f0e8f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f8ddae27fad43201", "level": "note", "message": {"text": "Unused endpoint: GET /:id/insurance"}, "properties": {"repobilityId": "6a1adc30670ff042", "scanner": "scanner-primary", "fingerprint": "f8ddae27fad43201", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d65ad3dad37e69e1", "level": "note", "message": {"text": "Unused endpoint: POST /:id/insurance"}, "properties": {"repobilityId": "a4cb5746fb774fe7", "scanner": "scanner-primary", "fingerprint": "d65ad3dad37e69e1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-db711f30ea94bf00", "level": "note", "message": {"text": "Unused endpoint: PATCH /insurance/:seguroId"}, "properties": {"repobilityId": "430641db08caffe4", "scanner": "scanner-primary", "fingerprint": "db711f30ea94bf00", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2970b1b126cff0a2", "level": "note", "message": {"text": "Unused endpoint: DELETE /insurance/:seguroId"}, "properties": {"repobilityId": "97f9ef27867b580f", "scanner": "scanner-primary", "fingerprint": "2970b1b126cff0a2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7d7e90e5ac1b2855", "level": "note", "message": {"text": "Unused endpoint: GET /:id/squawks"}, "properties": {"repobilityId": "72197b11ed402559", "scanner": "scanner-primary", "fingerprint": "7d7e90e5ac1b2855", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ffadbb28cbf0fc5b", "level": "note", "message": {"text": "Unused endpoint: POST /:id/squawks"}, "properties": {"repobilityId": "e37efebfcd06ac06", "scanner": "scanner-primary", "fingerprint": "ffadbb28cbf0fc5b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-393b073e51ae0852", "level": "note", "message": {"text": "Unused endpoint: PATCH /squawks/:squawkId"}, "properties": {"repobilityId": "e4b0844331a2ca36", "scanner": "scanner-primary", "fingerprint": "393b073e51ae0852", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e1a896df91e5b3dc", "level": "note", "message": {"text": "Unused endpoint: DELETE /squawks/:squawkId"}, "properties": {"repobilityId": "da8e90d7fafe4a6f", "scanner": "scanner-primary", "fingerprint": "e1a896df91e5b3dc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}