{"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-bbde6a7577943989", "name": "Possibly dead Python function: gerar_secret_sugerido", "shortDescription": {"text": "Possibly dead Python function: gerar_secret_sugerido"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ec217a52da526e6", "name": "Possibly dead Python function: backup_automatico_inicio", "shortDescription": {"text": "Possibly dead Python function: backup_automatico_inicio"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4f31086bfa10205b", "name": "Possibly dead Python function: texto_ajustado", "shortDescription": {"text": "Possibly dead Python function: texto_ajustado"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c9bc2f6a785e300", "name": "Possibly dead Python function: texto_central_ajustado", "shortDescription": {"text": "Possibly dead Python function: texto_central_ajustado"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-789c70b5b92f4e35", "name": "Possibly dead Python function: consumo_produto", "shortDescription": {"text": "Possibly dead Python function: consumo_produto"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eec135a13330c3d4", "name": "Possibly dead Python function: gerar_etiqueta_pdf_v122", "shortDescription": {"text": "Possibly dead Python function: gerar_etiqueta_pdf_v122"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d7a0eeea24a14c8a", "name": "Possibly dead Python function: extrair_texto_pdf_os", "shortDescription": {"text": "Possibly dead Python function: extrair_texto_pdf_os"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-040a2f969488df07", "name": "Possibly dead Python function: extrair_itens_holdprint", "shortDescription": {"text": "Possibly dead Python function: extrair_itens_holdprint"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-506be2b95088f5d3", "name": "git log failed \u2014 history analysis incomplete", "shortDescription": {"text": "git log failed \u2014 history analysis incomplete"}, "fullDescription": {"text": "fatal: not a git repository (or any parent up to mount point /data)\nStopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "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-77a464701f01cedf", "name": "Possible secret in README.md", "shortDescription": {"text": "Possible secret in README.md"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "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-ab7f018696ebc0d1", "name": "Very large file: main.py (10956 lines)", "shortDescription": {"text": "Very large file: main.py (10956 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 6 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-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, tests. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2679282aa1c484b5", "name": "Agent authority lacks a verifier contract: AGENTS.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: AGENTS.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-818fd813a6c98e1c", "name": "Legacy-named symbol `download_backup` in main.py:7876", "shortDescription": {"text": "Legacy-named symbol `download_backup` in main.py:7876"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b334d875f2339fa1", "name": "5 env vars used in code but missing from .env.example", "shortDescription": {"text": "5 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `M2_ALLOW_SQLITE_FOR_TESTS`, `M2_AUTO_BACKUP_KEEP_DAYS`, `M2_BACKUP_BUCKET`, `M2_RUNTIME_DIR`, `M2_SESSION_COOKIE`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nmain.py:garantir_colunas_modelos, main.py:garantir_colunas\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nmain.py:salvar_empresa, main.py:atualizar_empresa, main.py:salvar_fornecedor, main.py:salvar_produto\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2870158efc2effe1", "name": "Unused endpoint: GET /internal/holdprint-bridge/package/manifest", "shortDescription": {"text": "Unused endpoint: GET /internal/holdprint-bridge/package/manifest"}, "fullDescription": {"text": "`main.py` declares `GET /internal/holdprint-bridge/package/manifest` 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-baa8c2ebc193d58d", "name": "Unused endpoint: GET /internal/holdprint-bridge/package/download", "shortDescription": {"text": "Unused endpoint: GET /internal/holdprint-bridge/package/download"}, "fullDescription": {"text": "`main.py` declares `GET /internal/holdprint-bridge/package/download` 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-2000eb5feefcc113", "name": "Unused endpoint: GET /api/holdprint-desktop/resources", "shortDescription": {"text": "Unused endpoint: GET /api/holdprint-desktop/resources"}, "fullDescription": {"text": "`main.py` declares `GET /api/holdprint-desktop/resources` 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-03cdf6160e876285", "name": "Unused endpoint: GET /api/holdprint-desktop/{resource_key}", "shortDescription": {"text": "Unused endpoint: GET /api/holdprint-desktop/{resource_key}"}, "fullDescription": {"text": "`main.py` declares `GET /api/holdprint-desktop/{resource_key}` 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-3e42d2ba4dbeacc1", "name": "Unused endpoint: GET /api/holdprint-desktop/{resource_key}/{record_id}", "shortDescription": {"text": "Unused endpoint: GET /api/holdprint-desktop/{resource_key}/{record_id}"}, "fullDescription": {"text": "`main.py` declares `GET /api/holdprint-desktop/{resource_key}/{record_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-84e9ec3f5fc7f511", "name": "Unused endpoint: GET /public/api/v1/holdprint/os", "shortDescription": {"text": "Unused endpoint: GET /public/api/v1/holdprint/os"}, "fullDescription": {"text": "`main.py` declares `GET /public/api/v1/holdprint/os` 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-816952bd309bf738", "name": "Unused endpoint: GET /public/api/v1/holdprint/os/{order_id}", "shortDescription": {"text": "Unused endpoint: GET /public/api/v1/holdprint/os/{order_id}"}, "fullDescription": {"text": "`main.py` declares `GET /public/api/v1/holdprint/os/{order_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-ea37fd18e1f2d7a3", "name": "Unused endpoint: GET /integracoes/api", "shortDescription": {"text": "Unused endpoint: GET /integracoes/api"}, "fullDescription": {"text": "`main.py` declares `GET /integracoes/api` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60221c2ef8b982fe", "name": "Unused endpoint: POST /integracoes/api/tokens", "shortDescription": {"text": "Unused endpoint: POST /integracoes/api/tokens"}, "fullDescription": {"text": "`main.py` declares `POST /integracoes/api/tokens` 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-9c6ba1b9a44fd503", "name": "Unused endpoint: POST /integracoes/api/tokens/{token_id}/revogar", "shortDescription": {"text": "Unused endpoint: POST /integracoes/api/tokens/{token_id}/revogar"}, "fullDescription": {"text": "`main.py` declares `POST /integracoes/api/tokens/{token_id}/revogar` 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-f49a6f29c5399d85", "name": "Unused endpoint: GET /integracoes/api/docs/holdprint-os-api.pdf", "shortDescription": {"text": "Unused endpoint: GET /integracoes/api/docs/holdprint-os-api.pdf"}, "fullDescription": {"text": "`main.py` declares `GET /integracoes/api/docs/holdprint-os-api.pdf` 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-eeb948eb5091f838", "name": "Unused endpoint: GET /holdprint_desktop", "shortDescription": {"text": "Unused endpoint: GET /holdprint_desktop"}, "fullDescription": {"text": "`main.py` declares `GET /holdprint_desktop` 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-6a4dfcad3eb1618a", "name": "Unused endpoint: GET /login", "shortDescription": {"text": "Unused endpoint: GET /login"}, "fullDescription": {"text": "`main.py` declares `GET /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-618721b912bad1c2", "name": "Unused endpoint: POST /login", "shortDescription": {"text": "Unused endpoint: POST /login"}, "fullDescription": {"text": "`main.py` declares `POST /login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a34906ddf443bfbf", "name": "Unused endpoint: GET /ativar_conta/{token}", "shortDescription": {"text": "Unused endpoint: GET /ativar_conta/{token}"}, "fullDescription": {"text": "`main.py` declares `GET /ativar_conta/{token}` 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-91b76f04a44367d1", "name": "Unused endpoint: POST /ativar_conta/{token}", "shortDescription": {"text": "Unused endpoint: POST /ativar_conta/{token}"}, "fullDescription": {"text": "`main.py` declares `POST /ativar_conta/{token}` 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-24137af214c686af", "name": "Unused endpoint: GET /trocar_senha", "shortDescription": {"text": "Unused endpoint: GET /trocar_senha"}, "fullDescription": {"text": "`main.py` declares `GET /trocar_senha` 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-ea3d64dd681f5020", "name": "Unused endpoint: POST /trocar_senha", "shortDescription": {"text": "Unused endpoint: POST /trocar_senha"}, "fullDescription": {"text": "`main.py` declares `POST /trocar_senha` 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-5ca735a2e6e3646c", "name": "Unused endpoint: GET /logout", "shortDescription": {"text": "Unused endpoint: GET /logout"}, "fullDescription": {"text": "`main.py` declares `GET /logout` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`main.py` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f1f1c0f0a9eb6d3", "name": "Unused endpoint: GET /modulos", "shortDescription": {"text": "Unused endpoint: GET /modulos"}, "fullDescription": {"text": "`main.py` declares `GET /modulos` 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-5a18f9c4ed89d6cf", "name": "Unused endpoint: GET /modulo_operacional", "shortDescription": {"text": "Unused endpoint: GET /modulo_operacional"}, "fullDescription": {"text": "`main.py` declares `GET /modulo_operacional` 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-15ddf5de83aaf861", "name": "Unused endpoint: GET /modulo_orcamentos", "shortDescription": {"text": "Unused endpoint: GET /modulo_orcamentos"}, "fullDescription": {"text": "`main.py` declares `GET /modulo_orcamentos` 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-ed8dbb04e8f61d16", "name": "Unused endpoint: GET /m2_orcamentos", "shortDescription": {"text": "Unused endpoint: GET /m2_orcamentos"}, "fullDescription": {"text": "`main.py` declares `GET /m2_orcamentos` 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-3a7222c4bbc2019b", "name": "Unused endpoint: GET /m2_orcamentos/redbox_displays", "shortDescription": {"text": "Unused endpoint: GET /m2_orcamentos/redbox_displays"}, "fullDescription": {"text": "`main.py` declares `GET /m2_orcamentos/redbox_displays` 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-6689a47661491161", "name": "Unused endpoint: POST /m2_orcamentos/redbox_displays/proposta", "shortDescription": {"text": "Unused endpoint: POST /m2_orcamentos/redbox_displays/proposta"}, "fullDescription": {"text": "`main.py` declares `POST /m2_orcamentos/redbox_displays/proposta` 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-13b55cf3dc472464", "name": "Unused endpoint: GET /m2_orcamentos/holdprint_calculos", "shortDescription": {"text": "Unused endpoint: GET /m2_orcamentos/holdprint_calculos"}, "fullDescription": {"text": "`main.py` declares `GET /m2_orcamentos/holdprint_calculos` 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-174c24dd8e64c7a0", "name": "Unused endpoint: GET /m2_orcamentos/holdprint_calculos/comunicacao_visual", "shortDescription": {"text": "Unused endpoint: GET /m2_orcamentos/holdprint_calculos/comunicacao_visual"}, "fullDescription": {"text": "`main.py` declares `GET /m2_orcamentos/holdprint_calculos/comunicacao_visual` 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-d8ef2695e1abea5d", "name": "Unused endpoint: GET /m2_orcamentos/holdprint_calculos/{slug}", "shortDescription": {"text": "Unused endpoint: GET /m2_orcamentos/holdprint_calculos/{slug}"}, "fullDescription": {"text": "`main.py` declares `GET /m2_orcamentos/holdprint_calculos/{slug}` 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-a2c7331863c4c527", "name": "Unused endpoint: GET /m2_orcamentos/parametros", "shortDescription": {"text": "Unused endpoint: GET /m2_orcamentos/parametros"}, "fullDescription": {"text": "`main.py` declares `GET /m2_orcamentos/parametros` 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-6e9c72ba4c3e6194", "name": "Unused endpoint: GET /m2_orcamentos/holdprint_produtos", "shortDescription": {"text": "Unused endpoint: GET /m2_orcamentos/holdprint_produtos"}, "fullDescription": {"text": "`main.py` declares `GET /m2_orcamentos/holdprint_produtos` 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-7717c0637d8dc585", "name": "Unused endpoint: GET /m2_orcamentos/holdprint_produtos/{product_id}", "shortDescription": {"text": "Unused endpoint: GET /m2_orcamentos/holdprint_produtos/{product_id}"}, "fullDescription": {"text": "`main.py` declares `GET /m2_orcamentos/holdprint_produtos/{product_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-ddaa3c925ca7dd77", "name": "Unused endpoint: GET /m2_orcamentos/outdoor_h5", "shortDescription": {"text": "Unused endpoint: GET /m2_orcamentos/outdoor_h5"}, "fullDescription": {"text": "`main.py` declares `GET /m2_orcamentos/outdoor_h5` 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-9852ae10db18850d", "name": "Unused endpoint: GET /m2_orcamentos/display_medio", "shortDescription": {"text": "Unused endpoint: GET /m2_orcamentos/display_medio"}, "fullDescription": {"text": "`main.py` declares `GET /m2_orcamentos/display_medio` 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-1369f470fc160f02", "name": "Unused endpoint: POST /orcamentos/outdoor_h5/calcular", "shortDescription": {"text": "Unused endpoint: POST /orcamentos/outdoor_h5/calcular"}, "fullDescription": {"text": "`main.py` declares `POST /orcamentos/outdoor_h5/calcular` 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-816830406295a477", "name": "Unused endpoint: POST /orcamentos/display_medio/calcular", "shortDescription": {"text": "Unused endpoint: POST /orcamentos/display_medio/calcular"}, "fullDescription": {"text": "`main.py` declares `POST /orcamentos/display_medio/calcular` 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-bd05ae8db8d32c42", "name": "Unused endpoint: POST /m2_orcamentos/outdoor_h5", "shortDescription": {"text": "Unused endpoint: POST /m2_orcamentos/outdoor_h5"}, "fullDescription": {"text": "`main.py` declares `POST /m2_orcamentos/outdoor_h5` 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-7bd6fb8317aea97b", "name": "Unused endpoint: GET /modulo_instalacoes", "shortDescription": {"text": "Unused endpoint: GET /modulo_instalacoes"}, "fullDescription": {"text": "`main.py` declares `GET /modulo_instalacoes` 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-b3339d418a0ea3d8", "name": "Unused endpoint: GET /modulo_producao", "shortDescription": {"text": "Unused endpoint: GET /modulo_producao"}, "fullDescription": {"text": "`main.py` declares `GET /modulo_producao` 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-5e14ca51e0dc9524", "name": "Unused endpoint: GET /sugestoes", "shortDescription": {"text": "Unused endpoint: GET /sugestoes"}, "fullDescription": {"text": "`main.py` declares `GET /sugestoes` 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-2b43192a906932a0", "name": "Unused endpoint: POST /sugestoes/salvar", "shortDescription": {"text": "Unused endpoint: POST /sugestoes/salvar"}, "fullDescription": {"text": "`main.py` declares `POST /sugestoes/salvar` 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-a1f5d1f4f243ba10", "name": "Unused endpoint: GET /empresas", "shortDescription": {"text": "Unused endpoint: GET /empresas"}, "fullDescription": {"text": "`main.py` declares `GET /empresas` 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-75a2d86728e06f59", "name": "Unused endpoint: POST /salvar_empresa", "shortDescription": {"text": "Unused endpoint: POST /salvar_empresa"}, "fullDescription": {"text": "`main.py` declares `POST /salvar_empresa` 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-295775c3fa47ea12", "name": "Unused endpoint: GET /clientes", "shortDescription": {"text": "Unused endpoint: GET /clientes"}, "fullDescription": {"text": "`main.py` declares `GET /clientes` 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-4819f9eb6f7623e5", "name": "Unused endpoint: POST /clientes/salvar", "shortDescription": {"text": "Unused endpoint: POST /clientes/salvar"}, "fullDescription": {"text": "`main.py` declares `POST /clientes/salvar` 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-c1008ad87b9b6c21", "name": "Unused endpoint: GET /editar_empresa/{id}", "shortDescription": {"text": "Unused endpoint: GET /editar_empresa/{id}"}, "fullDescription": {"text": "`main.py` declares `GET /editar_empresa/{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-c12fd078d8a26f7b", "name": "Unused endpoint: POST /atualizar_empresa/{id}", "shortDescription": {"text": "Unused endpoint: POST /atualizar_empresa/{id}"}, "fullDescription": {"text": "`main.py` declares `POST /atualizar_empresa/{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-2f2dc9b0bb9cfa25", "name": "Unused endpoint: GET /usuarios", "shortDescription": {"text": "Unused endpoint: GET /usuarios"}, "fullDescription": {"text": "`main.py` declares `GET /usuarios` 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-51df8bafa36b3bf9", "name": "Unused endpoint: POST /salvar_usuario", "shortDescription": {"text": "Unused endpoint: POST /salvar_usuario"}, "fullDescription": {"text": "`main.py` declares `POST /salvar_usuario` 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-11c93b21d4eb9d3f", "name": "Unused endpoint: GET /editar_usuario/{id}", "shortDescription": {"text": "Unused endpoint: GET /editar_usuario/{id}"}, "fullDescription": {"text": "`main.py` declares `GET /editar_usuario/{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/4054"}, "properties": {"repository": "betorw2/controle_de_estoque", "repoUrl": "https://github.com/betorw2/controle_de_estoque", "branch": "main"}, "results": [{"ruleId": "scanner-bbde6a7577943989", "level": "note", "message": {"text": "Possibly dead Python function: gerar_secret_sugerido"}, "properties": {"repobilityId": "3227bf359508e3a9", "scanner": "scanner-primary", "fingerprint": "bbde6a7577943989", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config.py:50"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ec217a52da526e6", "level": "note", "message": {"text": "Possibly dead Python function: backup_automatico_inicio"}, "properties": {"repobilityId": "7e10a098d7ebc975", "scanner": "scanner-primary", "fingerprint": "3ec217a52da526e6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:81"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4f31086bfa10205b", "level": "note", "message": {"text": "Possibly dead Python function: texto_ajustado"}, "properties": {"repobilityId": "9591b6cba6ae80ca", "scanner": "scanner-primary", "fingerprint": "4f31086bfa10205b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:2827"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3c9bc2f6a785e300", "level": "note", "message": {"text": "Possibly dead Python function: texto_central_ajustado"}, "properties": {"repobilityId": "0786cc38404eb5e0", "scanner": "scanner-primary", "fingerprint": "3c9bc2f6a785e300", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:2842"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-789c70b5b92f4e35", "level": "note", "message": {"text": "Possibly dead Python function: consumo_produto"}, "properties": {"repobilityId": "09a4321543900ac2", "scanner": "scanner-primary", "fingerprint": "789c70b5b92f4e35", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:8914"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eec135a13330c3d4", "level": "note", "message": {"text": "Possibly dead Python function: gerar_etiqueta_pdf_v122"}, "properties": {"repobilityId": "31f4d2dcc9be30e2", "scanner": "scanner-primary", "fingerprint": "eec135a13330c3d4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:9626"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d7a0eeea24a14c8a", "level": "note", "message": {"text": "Possibly dead Python function: extrair_texto_pdf_os"}, "properties": {"repobilityId": "832351ac5dfb9576", "scanner": "scanner-primary", "fingerprint": "d7a0eeea24a14c8a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:10109"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-040a2f969488df07", "level": "note", "message": {"text": "Possibly dead Python function: extrair_itens_holdprint"}, "properties": {"repobilityId": "5e5d7255b461b1fa", "scanner": "scanner-primary", "fingerprint": "040a2f969488df07", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:10118"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-506be2b95088f5d3", "level": "none", "message": {"text": "git log failed \u2014 history analysis incomplete"}, "properties": {"repobilityId": "b424308a11bb9b22", "scanner": "scanner-primary", "fingerprint": "506be2b95088f5d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["git", "tooling"]}}, {"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-77a464701f01cedf", "level": "error", "message": {"text": "Possible secret in README.md"}, "properties": {"repobilityId": "03df1be0543b7759", "scanner": "scanner-primary", "fingerprint": "77a464701f01cedf", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "README.md"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"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-ab7f018696ebc0d1", "level": "note", "message": {"text": "Very large file: main.py (10956 lines)"}, "properties": {"repobilityId": "d28330f452f23706", "scanner": "scanner-primary", "fingerprint": "ab7f018696ebc0d1", "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": "c71fd0fbd4c1f62e", "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": "75826af22df94606", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "5143464365d4c36f", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2679282aa1c484b5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: AGENTS.md"}, "properties": {"repobilityId": "27d579812e6be614", "scanner": "scanner-primary", "fingerprint": "2679282aa1c484b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "agents_md"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "AGENTS.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-818fd813a6c98e1c", "level": "note", "message": {"text": "Legacy-named symbol `download_backup` in main.py:7876"}, "properties": {"repobilityId": "f2df5433d9ccd499", "scanner": "scanner-primary", "fingerprint": "818fd813a6c98e1c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b334d875f2339fa1", "level": "note", "message": {"text": "5 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "faa38682016f5d53", "scanner": "scanner-primary", "fingerprint": "b334d875f2339fa1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "a020bc1f5411c9b3", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "02f27de6e77a82c8", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "23c57c7eb65e60eb", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "72853db6b5b1aa23", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "21db6090affddb25", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "2f9787dc4d731ab4", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "acc1d60e7661bde5", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "40d932f1d17893f7", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "ca3a11d208538396", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "628414c298aba8d8", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "8afa92683c1c1bd6", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "8483f6313df2581b", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "ee1fc973122e137c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "a2facee802806d0e", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "4039a9d840ae0748", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2870158efc2effe1", "level": "note", "message": {"text": "Unused endpoint: GET /internal/holdprint-bridge/package/manifest"}, "properties": {"repobilityId": "2d94a046d0de6a8e", "scanner": "scanner-primary", "fingerprint": "2870158efc2effe1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-baa8c2ebc193d58d", "level": "note", "message": {"text": "Unused endpoint: GET /internal/holdprint-bridge/package/download"}, "properties": {"repobilityId": "bf7783d41bfe3b41", "scanner": "scanner-primary", "fingerprint": "baa8c2ebc193d58d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2000eb5feefcc113", "level": "note", "message": {"text": "Unused endpoint: GET /api/holdprint-desktop/resources"}, "properties": {"repobilityId": "b8096364e6f81a57", "scanner": "scanner-primary", "fingerprint": "2000eb5feefcc113", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-03cdf6160e876285", "level": "note", "message": {"text": "Unused endpoint: GET /api/holdprint-desktop/{resource_key}"}, "properties": {"repobilityId": "d42151a514ac7e03", "scanner": "scanner-primary", "fingerprint": "03cdf6160e876285", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3e42d2ba4dbeacc1", "level": "note", "message": {"text": "Unused endpoint: GET /api/holdprint-desktop/{resource_key}/{record_id}"}, "properties": {"repobilityId": "20a2c118d16fdbfe", "scanner": "scanner-primary", "fingerprint": "3e42d2ba4dbeacc1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-84e9ec3f5fc7f511", "level": "note", "message": {"text": "Unused endpoint: GET /public/api/v1/holdprint/os"}, "properties": {"repobilityId": "ad247cedba76121c", "scanner": "scanner-primary", "fingerprint": "84e9ec3f5fc7f511", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-816952bd309bf738", "level": "note", "message": {"text": "Unused endpoint: GET /public/api/v1/holdprint/os/{order_id}"}, "properties": {"repobilityId": "4a2a18f301ffa4c3", "scanner": "scanner-primary", "fingerprint": "816952bd309bf738", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ea37fd18e1f2d7a3", "level": "note", "message": {"text": "Unused endpoint: GET /integracoes/api"}, "properties": {"repobilityId": "9407cd0d8d9f4f8e", "scanner": "scanner-primary", "fingerprint": "ea37fd18e1f2d7a3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-60221c2ef8b982fe", "level": "note", "message": {"text": "Unused endpoint: POST /integracoes/api/tokens"}, "properties": {"repobilityId": "33eccdb9c80452c1", "scanner": "scanner-primary", "fingerprint": "60221c2ef8b982fe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9c6ba1b9a44fd503", "level": "note", "message": {"text": "Unused endpoint: POST /integracoes/api/tokens/{token_id}/revogar"}, "properties": {"repobilityId": "c0c9d0cd86601e4c", "scanner": "scanner-primary", "fingerprint": "9c6ba1b9a44fd503", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f49a6f29c5399d85", "level": "note", "message": {"text": "Unused endpoint: GET /integracoes/api/docs/holdprint-os-api.pdf"}, "properties": {"repobilityId": "3b8d7a773024db58", "scanner": "scanner-primary", "fingerprint": "f49a6f29c5399d85", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-eeb948eb5091f838", "level": "note", "message": {"text": "Unused endpoint: GET /holdprint_desktop"}, "properties": {"repobilityId": "ed93979bad8ea4e2", "scanner": "scanner-primary", "fingerprint": "eeb948eb5091f838", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6a4dfcad3eb1618a", "level": "note", "message": {"text": "Unused endpoint: GET /login"}, "properties": {"repobilityId": "329ac95cf46a474b", "scanner": "scanner-primary", "fingerprint": "6a4dfcad3eb1618a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-618721b912bad1c2", "level": "note", "message": {"text": "Unused endpoint: POST /login"}, "properties": {"repobilityId": "b388ff6da4d47e0a", "scanner": "scanner-primary", "fingerprint": "618721b912bad1c2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a34906ddf443bfbf", "level": "note", "message": {"text": "Unused endpoint: GET /ativar_conta/{token}"}, "properties": {"repobilityId": "e40c7e575f39ed9b", "scanner": "scanner-primary", "fingerprint": "a34906ddf443bfbf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-91b76f04a44367d1", "level": "note", "message": {"text": "Unused endpoint: POST /ativar_conta/{token}"}, "properties": {"repobilityId": "d5320b4f5c0678ea", "scanner": "scanner-primary", "fingerprint": "91b76f04a44367d1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-24137af214c686af", "level": "note", "message": {"text": "Unused endpoint: GET /trocar_senha"}, "properties": {"repobilityId": "c3c92718b920db0e", "scanner": "scanner-primary", "fingerprint": "24137af214c686af", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ea3d64dd681f5020", "level": "note", "message": {"text": "Unused endpoint: POST /trocar_senha"}, "properties": {"repobilityId": "b48795c0abcc5da9", "scanner": "scanner-primary", "fingerprint": "ea3d64dd681f5020", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5ca735a2e6e3646c", "level": "note", "message": {"text": "Unused endpoint: GET /logout"}, "properties": {"repobilityId": "8cf5366cea0991b3", "scanner": "scanner-primary", "fingerprint": "5ca735a2e6e3646c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "6b8de433dc23649f", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1f1f1c0f0a9eb6d3", "level": "note", "message": {"text": "Unused endpoint: GET /modulos"}, "properties": {"repobilityId": "cf93f5c0807dfde6", "scanner": "scanner-primary", "fingerprint": "1f1f1c0f0a9eb6d3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5a18f9c4ed89d6cf", "level": "note", "message": {"text": "Unused endpoint: GET /modulo_operacional"}, "properties": {"repobilityId": "1ed99ecc0dd30f45", "scanner": "scanner-primary", "fingerprint": "5a18f9c4ed89d6cf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-15ddf5de83aaf861", "level": "note", "message": {"text": "Unused endpoint: GET /modulo_orcamentos"}, "properties": {"repobilityId": "98e6a7376c2f6c7a", "scanner": "scanner-primary", "fingerprint": "15ddf5de83aaf861", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ed8dbb04e8f61d16", "level": "note", "message": {"text": "Unused endpoint: GET /m2_orcamentos"}, "properties": {"repobilityId": "6d09a0fb549580ca", "scanner": "scanner-primary", "fingerprint": "ed8dbb04e8f61d16", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3a7222c4bbc2019b", "level": "note", "message": {"text": "Unused endpoint: GET /m2_orcamentos/redbox_displays"}, "properties": {"repobilityId": "aa3cebe4ba340090", "scanner": "scanner-primary", "fingerprint": "3a7222c4bbc2019b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6689a47661491161", "level": "note", "message": {"text": "Unused endpoint: POST /m2_orcamentos/redbox_displays/proposta"}, "properties": {"repobilityId": "7d3e05303ce739c3", "scanner": "scanner-primary", "fingerprint": "6689a47661491161", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-13b55cf3dc472464", "level": "note", "message": {"text": "Unused endpoint: GET /m2_orcamentos/holdprint_calculos"}, "properties": {"repobilityId": "27bf1074b9b74535", "scanner": "scanner-primary", "fingerprint": "13b55cf3dc472464", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-174c24dd8e64c7a0", "level": "note", "message": {"text": "Unused endpoint: GET /m2_orcamentos/holdprint_calculos/comunicacao_visual"}, "properties": {"repobilityId": "9e2ab49cba743a7d", "scanner": "scanner-primary", "fingerprint": "174c24dd8e64c7a0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d8ef2695e1abea5d", "level": "note", "message": {"text": "Unused endpoint: GET /m2_orcamentos/holdprint_calculos/{slug}"}, "properties": {"repobilityId": "7bc438eb2a1695c6", "scanner": "scanner-primary", "fingerprint": "d8ef2695e1abea5d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a2c7331863c4c527", "level": "note", "message": {"text": "Unused endpoint: GET /m2_orcamentos/parametros"}, "properties": {"repobilityId": "9c5eef6bd0e77474", "scanner": "scanner-primary", "fingerprint": "a2c7331863c4c527", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6e9c72ba4c3e6194", "level": "note", "message": {"text": "Unused endpoint: GET /m2_orcamentos/holdprint_produtos"}, "properties": {"repobilityId": "94e50f69c55f83e0", "scanner": "scanner-primary", "fingerprint": "6e9c72ba4c3e6194", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7717c0637d8dc585", "level": "note", "message": {"text": "Unused endpoint: GET /m2_orcamentos/holdprint_produtos/{product_id}"}, "properties": {"repobilityId": "6d7e9ee1bc5cf2aa", "scanner": "scanner-primary", "fingerprint": "7717c0637d8dc585", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ddaa3c925ca7dd77", "level": "note", "message": {"text": "Unused endpoint: GET /m2_orcamentos/outdoor_h5"}, "properties": {"repobilityId": "0b2750a8762501c1", "scanner": "scanner-primary", "fingerprint": "ddaa3c925ca7dd77", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9852ae10db18850d", "level": "note", "message": {"text": "Unused endpoint: GET /m2_orcamentos/display_medio"}, "properties": {"repobilityId": "be1514e8c33bd4fc", "scanner": "scanner-primary", "fingerprint": "9852ae10db18850d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1369f470fc160f02", "level": "note", "message": {"text": "Unused endpoint: POST /orcamentos/outdoor_h5/calcular"}, "properties": {"repobilityId": "73ac6eac1e8b057a", "scanner": "scanner-primary", "fingerprint": "1369f470fc160f02", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-816830406295a477", "level": "note", "message": {"text": "Unused endpoint: POST /orcamentos/display_medio/calcular"}, "properties": {"repobilityId": "79df361919d30254", "scanner": "scanner-primary", "fingerprint": "816830406295a477", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bd05ae8db8d32c42", "level": "note", "message": {"text": "Unused endpoint: POST /m2_orcamentos/outdoor_h5"}, "properties": {"repobilityId": "483002c351e6267b", "scanner": "scanner-primary", "fingerprint": "bd05ae8db8d32c42", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7bd6fb8317aea97b", "level": "note", "message": {"text": "Unused endpoint: GET /modulo_instalacoes"}, "properties": {"repobilityId": "6abac20e7bed556d", "scanner": "scanner-primary", "fingerprint": "7bd6fb8317aea97b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b3339d418a0ea3d8", "level": "note", "message": {"text": "Unused endpoint: GET /modulo_producao"}, "properties": {"repobilityId": "e80c4c57ead356c2", "scanner": "scanner-primary", "fingerprint": "b3339d418a0ea3d8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5e14ca51e0dc9524", "level": "note", "message": {"text": "Unused endpoint: GET /sugestoes"}, "properties": {"repobilityId": "35cdfa66fda7fa19", "scanner": "scanner-primary", "fingerprint": "5e14ca51e0dc9524", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2b43192a906932a0", "level": "note", "message": {"text": "Unused endpoint: POST /sugestoes/salvar"}, "properties": {"repobilityId": "27d445d5a9aa96e1", "scanner": "scanner-primary", "fingerprint": "2b43192a906932a0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a1f5d1f4f243ba10", "level": "note", "message": {"text": "Unused endpoint: GET /empresas"}, "properties": {"repobilityId": "2e51a2452896c0b7", "scanner": "scanner-primary", "fingerprint": "a1f5d1f4f243ba10", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-75a2d86728e06f59", "level": "note", "message": {"text": "Unused endpoint: POST /salvar_empresa"}, "properties": {"repobilityId": "82eeb8f8b5a316d2", "scanner": "scanner-primary", "fingerprint": "75a2d86728e06f59", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-295775c3fa47ea12", "level": "note", "message": {"text": "Unused endpoint: GET /clientes"}, "properties": {"repobilityId": "cc87361520216f85", "scanner": "scanner-primary", "fingerprint": "295775c3fa47ea12", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4819f9eb6f7623e5", "level": "note", "message": {"text": "Unused endpoint: POST /clientes/salvar"}, "properties": {"repobilityId": "a67367cb7ca07c01", "scanner": "scanner-primary", "fingerprint": "4819f9eb6f7623e5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c1008ad87b9b6c21", "level": "note", "message": {"text": "Unused endpoint: GET /editar_empresa/{id}"}, "properties": {"repobilityId": "49ace64e7a126b5e", "scanner": "scanner-primary", "fingerprint": "c1008ad87b9b6c21", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c12fd078d8a26f7b", "level": "note", "message": {"text": "Unused endpoint: POST /atualizar_empresa/{id}"}, "properties": {"repobilityId": "295d7a62b6f3c845", "scanner": "scanner-primary", "fingerprint": "c12fd078d8a26f7b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2f2dc9b0bb9cfa25", "level": "note", "message": {"text": "Unused endpoint: GET /usuarios"}, "properties": {"repobilityId": "62e6c651430dc5ad", "scanner": "scanner-primary", "fingerprint": "2f2dc9b0bb9cfa25", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-51df8bafa36b3bf9", "level": "note", "message": {"text": "Unused endpoint: POST /salvar_usuario"}, "properties": {"repobilityId": "c1e36d3b44057c8d", "scanner": "scanner-primary", "fingerprint": "51df8bafa36b3bf9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-11c93b21d4eb9d3f", "level": "note", "message": {"text": "Unused endpoint: GET /editar_usuario/{id}"}, "properties": {"repobilityId": "dcf2199492752ea0", "scanner": "scanner-primary", "fingerprint": "11c93b21d4eb9d3f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}