{"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-4e7ba6872bc05c3b", "name": "Possibly dead Python function: open_browser", "shortDescription": {"text": "Possibly dead Python function: open_browser"}, "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-61f32610e7f5eac3", "name": "Possibly dead Python function: cmd_status", "shortDescription": {"text": "Possibly dead Python function: cmd_status"}, "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-494cf698527b20e6", "name": "Possibly dead Python function: cmd_killswitch", "shortDescription": {"text": "Possibly dead Python function: cmd_killswitch"}, "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-98ac7f29fb99558e", "name": "Possibly dead Python function: cmd_material_add", "shortDescription": {"text": "Possibly dead Python function: cmd_material_add"}, "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-97c9baff6f332df8", "name": "Possibly dead Python function: cmd_material_list", "shortDescription": {"text": "Possibly dead Python function: cmd_material_list"}, "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-2e24c184617d57f6", "name": "Possibly dead Python function: cmd_material_rm", "shortDescription": {"text": "Possibly dead Python function: cmd_material_rm"}, "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-9e862d8b89948a64", "name": "Possibly dead Python function: cmd_industry_flow_set", "shortDescription": {"text": "Possibly dead Python function: cmd_industry_flow_set"}, "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-7b994f54ca8937ed", "name": "Possibly dead Python function: cmd_industry_seed", "shortDescription": {"text": "Possibly dead Python function: cmd_industry_seed"}, "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-88e7c4002ccad3cc", "name": "Possibly dead Python function: update_tracking_item", "shortDescription": {"text": "Possibly dead Python function: update_tracking_item"}, "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-f34ad96407502e99", "name": "Possibly dead Python function: delete_tracking_item", "shortDescription": {"text": "Possibly dead Python function: delete_tracking_item"}, "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-f64d55827f5f1679", "name": "Possibly dead Python function: update_thesis_essay", "shortDescription": {"text": "Possibly dead Python function: update_thesis_essay"}, "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-75717964c5447d1e", "name": "Possibly dead Python function: delete_events_by_symbol", "shortDescription": {"text": "Possibly dead Python function: delete_events_by_symbol"}, "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-ac34b66373e4f4e0", "name": "Possibly dead Python function: list_info_by_themes", "shortDescription": {"text": "Possibly dead Python function: list_info_by_themes"}, "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-e3cfd1832e715f4d", "name": "Possibly dead Python function: set_industry_infer_flow", "shortDescription": {"text": "Possibly dead Python function: set_industry_infer_flow"}, "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-eb0e6ebbc8778adb", "name": "Possibly dead Python function: set_theme_infer_flow", "shortDescription": {"text": "Possibly dead Python function: set_theme_infer_flow"}, "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-f133d4bfc291906e", "name": "Possibly dead Python function: list_profile_changes", "shortDescription": {"text": "Possibly dead Python function: list_profile_changes"}, "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-2ad3c83d69f30b3b", "name": "Possibly dead Python function: refresh_events_after_trade", "shortDescription": {"text": "Possibly dead Python function: refresh_events_after_trade"}, "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-0a5479037d66edbb", "name": "Possibly dead Python function: get_20d_ago_close", "shortDescription": {"text": "Possibly dead Python function: get_20d_ago_close"}, "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-ed3f76cd8b247232", "name": "Possibly dead Python function: sync_all", "shortDescription": {"text": "Possibly dead Python function: sync_all"}, "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-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-e2d0d8d6b1209dbc", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/static/blockmap.html:210", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/static/blockmap.html:210"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bc496c6e2fcf815d", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/static/trade-history-mockup.html:319", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/static/trade-history-mockup.html:319"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "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-fbb0ee0814154034", "name": "Very large file: app/db.py (3277 lines)", "shortDescription": {"text": "Very large file: app/db.py (3277 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-f96602658c6cc5a9", "name": "Very large file: app/routes/pages.py (1380 lines)", "shortDescription": {"text": "Very large file: app/routes/pages.py (1380 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-8913f7ad35280269", "name": "Very large file: app/routes/api.py (1750 lines)", "shortDescription": {"text": "Very large file: app/routes/api.py (1750 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": "4 test file(s) for 60 source file(s) (ratio 0.07). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 98 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-166c7237b61c5342", "name": "Network/subprocess call without timeout or try/except \u2014 run.py:64", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 run.py:64"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa4f32129326df5f", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/check_tracking.py:4", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/check_tracking.py:4"}, "fullDescription": {"text": "`urllib.request.urlopen(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-23e689a1e62d06cd", "name": "Legacy-named symbol `new_to_old` in app/promotion.py:56", "shortDescription": {"text": "Legacy-named symbol `new_to_old` in app/promotion.py:56"}, "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-8b1a6a67a49eee28", "name": "Legacy-named symbol `daily_backup` in app/scheduler.py:10", "shortDescription": {"text": "Legacy-named symbol `daily_backup` in app/scheduler.py:10"}, "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-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:\nscripts/write_research_lens.py:main, scripts/write_extraction.py:main\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-770254b7361ffab7", "name": "FastAPI POST `create_account` without auth dependency \u2014 app/routes/api.py:25", "shortDescription": {"text": "FastAPI POST `create_account` without auth dependency \u2014 app/routes/api.py:25"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a7403bc092d996f", "name": "FastAPI PUT `update_account` without auth dependency \u2014 app/routes/api.py:33", "shortDescription": {"text": "FastAPI PUT `update_account` without auth dependency \u2014 app/routes/api.py:33"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b130540420c80a41", "name": "FastAPI DELETE `delete_account` without auth dependency \u2014 app/routes/api.py:57", "shortDescription": {"text": "FastAPI DELETE `delete_account` without auth dependency \u2014 app/routes/api.py:57"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-21018282f9faab1b", "name": "FastAPI POST `create_trade` without auth dependency \u2014 app/routes/api.py:101", "shortDescription": {"text": "FastAPI POST `create_trade` without auth dependency \u2014 app/routes/api.py:101"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2af37cc7343af462", "name": "FastAPI POST `create_fx` without auth dependency \u2014 app/routes/api.py:170", "shortDescription": {"text": "FastAPI POST `create_fx` without auth dependency \u2014 app/routes/api.py:170"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-889db54ad6490680", "name": "FastAPI DELETE `delete_trade` without auth dependency \u2014 app/routes/api.py:203", "shortDescription": {"text": "FastAPI DELETE `delete_trade` without auth dependency \u2014 app/routes/api.py:203"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-02c3144321796b29", "name": "FastAPI PATCH `update_trade` without auth dependency \u2014 app/routes/api.py:212", "shortDescription": {"text": "FastAPI PATCH `update_trade` without auth dependency \u2014 app/routes/api.py:212"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7119b3e9891f795c", "name": "FastAPI POST `rebuild_snapshots` without auth dependency \u2014 app/routes/api.py:576", "shortDescription": {"text": "FastAPI POST `rebuild_snapshots` without auth dependency \u2014 app/routes/api.py:576"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0573211ef1f5556a", "name": "FastAPI POST `save_fee_settings` without auth dependency \u2014 app/routes/api.py:591", "shortDescription": {"text": "FastAPI POST `save_fee_settings` without auth dependency \u2014 app/routes/api.py:591"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8021f9680904b1cd", "name": "FastAPI POST `recalculate_fees` without auth dependency \u2014 app/routes/api.py:618", "shortDescription": {"text": "FastAPI POST `recalculate_fees` without auth dependency \u2014 app/routes/api.py:618"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-872569a297a31f6a", "name": "FastAPI POST `create_dca_plan` without auth dependency \u2014 app/routes/api.py:703", "shortDescription": {"text": "FastAPI POST `create_dca_plan` without auth dependency \u2014 app/routes/api.py:703"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-035b9f879fef205b", "name": "FastAPI PATCH `update_dca_plan` without auth dependency \u2014 app/routes/api.py:717", "shortDescription": {"text": "FastAPI PATCH `update_dca_plan` without auth dependency \u2014 app/routes/api.py:717"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-586e579b08a5f39e", "name": "FastAPI DELETE `delete_dca_plan` without auth dependency \u2014 app/routes/api.py:728", "shortDescription": {"text": "FastAPI DELETE `delete_dca_plan` without auth dependency \u2014 app/routes/api.py:728"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c588cc72ea321405", "name": "FastAPI POST `import_existing_to_dca_plan` without auth dependency \u2014 app/routes/api.py:736", "shortDescription": {"text": "FastAPI POST `import_existing_to_dca_plan` without auth dependency \u2014 app/routes/api.py:736"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4d496989a956cb04", "name": "FastAPI POST `apply_promotion_api` without auth dependency \u2014 app/routes/api.py:752", "shortDescription": {"text": "FastAPI POST `apply_promotion_api` without auth dependency \u2014 app/routes/api.py:752"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-910c0d793690d031", "name": "FastAPI POST `import_preview` without auth dependency \u2014 app/routes/api.py:780", "shortDescription": {"text": "FastAPI POST `import_preview` without auth dependency \u2014 app/routes/api.py:780"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0ce9c442148671ff", "name": "FastAPI POST `import_commit` without auth dependency \u2014 app/routes/api.py:792", "shortDescription": {"text": "FastAPI POST `import_commit` without auth dependency \u2014 app/routes/api.py:792"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2733971039b00acc", "name": "FastAPI PUT `put_symbol_note` without auth dependency \u2014 app/routes/api.py:851", "shortDescription": {"text": "FastAPI PUT `put_symbol_note` without auth dependency \u2014 app/routes/api.py:851"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-23ab9f0ecd71e93f", "name": "FastAPI PATCH `patch_symbol_status` without auth dependency \u2014 app/routes/api.py:885", "shortDescription": {"text": "FastAPI PATCH `patch_symbol_status` without auth dependency \u2014 app/routes/api.py:885"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bb0fadab29821ff8", "name": "FastAPI PATCH `patch_kill_switch` without auth dependency \u2014 app/routes/api.py:899", "shortDescription": {"text": "FastAPI PATCH `patch_kill_switch` without auth dependency \u2014 app/routes/api.py:899"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-132f6a12ff9c0ae7", "name": "FastAPI PATCH `patch_tracking_text` without auth dependency \u2014 app/routes/api.py:904", "shortDescription": {"text": "FastAPI PATCH `patch_tracking_text` without auth dependency \u2014 app/routes/api.py:904"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eddfe598dd44d158", "name": "FastAPI PATCH `patch_sources_text` without auth dependency \u2014 app/routes/api.py:909", "shortDescription": {"text": "FastAPI PATCH `patch_sources_text` without auth dependency \u2014 app/routes/api.py:909"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d0bcdda4c3c45771", "name": "FastAPI PATCH `patch_thesis_essay` without auth dependency \u2014 app/routes/api.py:914", "shortDescription": {"text": "FastAPI PATCH `patch_thesis_essay` without auth dependency \u2014 app/routes/api.py:914"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e33b90060cda2431", "name": "FastAPI DELETE `delete_extraction_api` without auth dependency \u2014 app/routes/api.py:919", "shortDescription": {"text": "FastAPI DELETE `delete_extraction_api` without auth dependency \u2014 app/routes/api.py:919"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cce8624a63f16b24", "name": "FastAPI POST `create_research_material_api` without auth dependency \u2014 app/routes/api.py:933", "shortDescription": {"text": "FastAPI POST `create_research_material_api` without auth dependency \u2014 app/routes/api.py:933"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-03868783838df899", "name": "FastAPI DELETE `delete_research_material_api` without auth dependency \u2014 app/routes/api.py:954", "shortDescription": {"text": "FastAPI DELETE `delete_research_material_api` without auth dependency \u2014 app/routes/api.py:954"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dbd4a9dc4a0b4e02", "name": "FastAPI POST `create_info_item_api` without auth dependency \u2014 app/routes/api.py:966", "shortDescription": {"text": "FastAPI POST `create_info_item_api` without auth dependency \u2014 app/routes/api.py:966"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1a9d39ca07168316", "name": "FastAPI DELETE `delete_info_item_api` without auth dependency \u2014 app/routes/api.py:984", "shortDescription": {"text": "FastAPI DELETE `delete_info_item_api` without auth dependency \u2014 app/routes/api.py:984"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f9e6c0420cf63c6b", "name": "FastAPI POST `create_related_api` without auth dependency \u2014 app/routes/api.py:997", "shortDescription": {"text": "FastAPI POST `create_related_api` without auth dependency \u2014 app/routes/api.py:997"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-447f1c5c40d6e48c", "name": "FastAPI DELETE `delete_related_api` without auth dependency \u2014 app/routes/api.py:1008", "shortDescription": {"text": "FastAPI DELETE `delete_related_api` without auth dependency \u2014 app/routes/api.py:1008"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-58dc50bebd248cda", "name": "FastAPI PATCH `update_tags_api` without auth dependency \u2014 app/routes/api.py:1016", "shortDescription": {"text": "FastAPI PATCH `update_tags_api` without auth dependency \u2014 app/routes/api.py:1016"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba35cba5d761331a", "name": "FastAPI POST `refresh_profile_api` without auth dependency \u2014 app/routes/api.py:1023", "shortDescription": {"text": "FastAPI POST `refresh_profile_api` without auth dependency \u2014 app/routes/api.py:1023"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ca10c70264615e0", "name": "FastAPI POST `refresh_events_api` without auth dependency \u2014 app/routes/api.py:1045", "shortDescription": {"text": "FastAPI POST `refresh_events_api` without auth dependency \u2014 app/routes/api.py:1045"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f0ec904810c9ea5", "name": "FastAPI POST `refresh_news_api` without auth dependency \u2014 app/routes/api.py:1086", "shortDescription": {"text": "FastAPI POST `refresh_news_api` without auth dependency \u2014 app/routes/api.py:1086"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0a64a19312254d03", "name": "FastAPI POST `create_theme_api` without auth dependency \u2014 app/routes/api.py:1132", "shortDescription": {"text": "FastAPI POST `create_theme_api` without auth dependency \u2014 app/routes/api.py:1132"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-37aa3a3f896a55e5", "name": "FastAPI PATCH `update_theme_api` without auth dependency \u2014 app/routes/api.py:1146", "shortDescription": {"text": "FastAPI PATCH `update_theme_api` without auth dependency \u2014 app/routes/api.py:1146"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a57b06845b45f306", "name": "FastAPI DELETE `delete_theme_api` without auth dependency \u2014 app/routes/api.py:1166", "shortDescription": {"text": "FastAPI DELETE `delete_theme_api` without auth dependency \u2014 app/routes/api.py:1166"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d60bd40a7dcab65d", "name": "FastAPI POST `refresh_theme_news_api` without auth dependency \u2014 app/routes/api.py:1219", "shortDescription": {"text": "FastAPI POST `refresh_theme_news_api` without auth dependency \u2014 app/routes/api.py:1219"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-034dbb96b70957ca", "name": "FastAPI POST `refresh_all_themes_news_api` without auth dependency \u2014 app/routes/api.py:1229", "shortDescription": {"text": "FastAPI POST `refresh_all_themes_news_api` without auth dependency \u2014 app/routes/api.py:1229"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-51b37208ae474523", "name": "FastAPI POST `add_theme_member_api` without auth dependency \u2014 app/routes/api.py:1247", "shortDescription": {"text": "FastAPI POST `add_theme_member_api` without auth dependency \u2014 app/routes/api.py:1247"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4002fc1968728c80", "name": "FastAPI PATCH `update_theme_member_api` without auth dependency \u2014 app/routes/api.py:1271", "shortDescription": {"text": "FastAPI PATCH `update_theme_member_api` without auth dependency \u2014 app/routes/api.py:1271"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4e5d3b3a21b72841", "name": "FastAPI DELETE `delete_theme_member_api` without auth dependency \u2014 app/routes/api.py:1281", "shortDescription": {"text": "FastAPI DELETE `delete_theme_member_api` without auth dependency \u2014 app/routes/api.py:1281"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a2613b774c58b7d1", "name": "FastAPI POST `reset_positions_api` without auth dependency \u2014 app/routes/api.py:1288", "shortDescription": {"text": "FastAPI POST `reset_positions_api` without auth dependency \u2014 app/routes/api.py:1288"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-782b328e4064aabf", "name": "FastAPI POST `import_podcasts_api` without auth dependency \u2014 app/routes/api.py:1345", "shortDescription": {"text": "FastAPI POST `import_podcasts_api` without auth dependency \u2014 app/routes/api.py:1345"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-411bbb76b3714714", "name": "FastAPI DELETE `delete_podcast_api` without auth dependency \u2014 app/routes/api.py:1362", "shortDescription": {"text": "FastAPI DELETE `delete_podcast_api` without auth dependency \u2014 app/routes/api.py:1362"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6a7880d13dc3b09f", "name": "FastAPI POST `update_podcast_settings_api` without auth dependency \u2014 app/routes/api.py:1389", "shortDescription": {"text": "FastAPI POST `update_podcast_settings_api` without auth dependency \u2014 app/routes/api.py:1389"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-02d740d77df75ac3", "name": "FastAPI POST `run_podcast_import_now_api` without auth dependency \u2014 app/routes/api.py:1411", "shortDescription": {"text": "FastAPI POST `run_podcast_import_now_api` without auth dependency \u2014 app/routes/api.py:1411"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e1246adb0014c76c", "name": "FastAPI POST `upsert_channel_api` without auth dependency \u2014 app/routes/api.py:1433", "shortDescription": {"text": "FastAPI POST `upsert_channel_api` without auth dependency \u2014 app/routes/api.py:1433"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ad29308881dbfc91", "name": "FastAPI DELETE `delete_channel_api` without auth dependency \u2014 app/routes/api.py:1441", "shortDescription": {"text": "FastAPI DELETE `delete_channel_api` without auth dependency \u2014 app/routes/api.py:1441"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1f482a7758f13a0a", "name": "FastAPI PUT `save_prompt_api` without auth dependency \u2014 app/routes/api.py:1474", "shortDescription": {"text": "FastAPI PUT `save_prompt_api` without auth dependency \u2014 app/routes/api.py:1474"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b50df8d408ca902", "name": "FastAPI POST `commit_profile_review` without auth dependency \u2014 app/routes/api.py:1537", "shortDescription": {"text": "FastAPI POST `commit_profile_review` without auth dependency \u2014 app/routes/api.py:1537"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`app/routes/pages.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-b4e5abd7fdafaaa0", "name": "Unused endpoint: GET /research", "shortDescription": {"text": "Unused endpoint: GET /research"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /research` 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-fabb7c34be04ccd3", "name": "Unused endpoint: GET /research/themes/", "shortDescription": {"text": "Unused endpoint: GET /research/themes/"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /research/themes/` 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-365b6a407a7f6b05", "name": "Unused endpoint: GET /research/themes/{theme_id}", "shortDescription": {"text": "Unused endpoint: GET /research/themes/{theme_id}"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /research/themes/{theme_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-f27f0e6a9fb07b9b", "name": "Unused endpoint: GET /trades", "shortDescription": {"text": "Unused endpoint: GET /trades"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /trades` 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-339af45ebe7b3984", "name": "Unused endpoint: GET /trades/{symbol}", "shortDescription": {"text": "Unused endpoint: GET /trades/{symbol}"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /trades/{symbol}` 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-5c6e7c6a92305dd2", "name": "Unused endpoint: GET /research/{symbol}", "shortDescription": {"text": "Unused endpoint: GET /research/{symbol}"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /research/{symbol}` 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-5f9819d9ecb49931", "name": "Unused endpoint: GET /calendar", "shortDescription": {"text": "Unused endpoint: GET /calendar"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /calendar` 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-8898f32c3352cb11", "name": "Unused endpoint: GET /risk", "shortDescription": {"text": "Unused endpoint: GET /risk"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /risk` 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-c0ac2ef565a5459b", "name": "Unused endpoint: GET /graph", "shortDescription": {"text": "Unused endpoint: GET /graph"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /graph` 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-ee732b4833130237", "name": "Unused endpoint: GET /industries", "shortDescription": {"text": "Unused endpoint: GET /industries"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /industries` 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-9d6236c300f99a63", "name": "Unused endpoint: GET /industry-map", "shortDescription": {"text": "Unused endpoint: GET /industry-map"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /industry-map` 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-d23687cec5d99c5e", "name": "Unused endpoint: GET /industry-map/{ic_code}", "shortDescription": {"text": "Unused endpoint: GET /industry-map/{ic_code}"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /industry-map/{ic_code}` 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-8740852e5c395f91", "name": "Unused endpoint: GET /podcasts", "shortDescription": {"text": "Unused endpoint: GET /podcasts"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /podcasts` 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-c41ba8ecab9821d3", "name": "Unused endpoint: GET /podcasts/settings", "shortDescription": {"text": "Unused endpoint: GET /podcasts/settings"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /podcasts/settings` 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-6c833cfc8c2cd7be", "name": "Unused endpoint: GET /podcasts/{digest_id}", "shortDescription": {"text": "Unused endpoint: GET /podcasts/{digest_id}"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /podcasts/{digest_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-512ccb0fd0b230ba", "name": "Unused endpoint: GET /settings", "shortDescription": {"text": "Unused endpoint: GET /settings"}, "fullDescription": {"text": "`app/routes/pages.py` declares `GET /settings` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e3f71caf6c981e5", "name": "Unused endpoint: GET /api/accounts", "shortDescription": {"text": "Unused endpoint: GET /api/accounts"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/accounts` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-28000b968544f7e4", "name": "Unused endpoint: POST /api/accounts", "shortDescription": {"text": "Unused endpoint: POST /api/accounts"}, "fullDescription": {"text": "`app/routes/api.py` declares `POST /api/accounts` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-000c2d676b956ab5", "name": "Unused endpoint: PUT /api/accounts/{account_id}", "shortDescription": {"text": "Unused endpoint: PUT /api/accounts/{account_id}"}, "fullDescription": {"text": "`app/routes/api.py` declares `PUT /api/accounts/{account_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-832112469f437dd7", "name": "Unused endpoint: DELETE /api/accounts/{account_id}", "shortDescription": {"text": "Unused endpoint: DELETE /api/accounts/{account_id}"}, "fullDescription": {"text": "`app/routes/api.py` declares `DELETE /api/accounts/{account_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-ee8074ee7069437d", "name": "Unused endpoint: GET /api/export/holdings.xlsx", "shortDescription": {"text": "Unused endpoint: GET /api/export/holdings.xlsx"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/export/holdings.xlsx` 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-3633f395d296d41d", "name": "Unused endpoint: GET /api/fee-preview", "shortDescription": {"text": "Unused endpoint: GET /api/fee-preview"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/fee-preview` 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-60a4b0a6061b87b6", "name": "Unused endpoint: POST /api/trades", "shortDescription": {"text": "Unused endpoint: POST /api/trades"}, "fullDescription": {"text": "`app/routes/api.py` declares `POST /api/trades` 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-2f4d55ac87cd799f", "name": "Unused endpoint: GET /api/fx-rate", "shortDescription": {"text": "Unused endpoint: GET /api/fx-rate"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/fx-rate` 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-1ec5f3988080b216", "name": "Unused endpoint: POST /api/fx", "shortDescription": {"text": "Unused endpoint: POST /api/fx"}, "fullDescription": {"text": "`app/routes/api.py` declares `POST /api/fx` 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-585a077454e056c3", "name": "Unused endpoint: DELETE /api/trades/{trade_id}", "shortDescription": {"text": "Unused endpoint: DELETE /api/trades/{trade_id}"}, "fullDescription": {"text": "`app/routes/api.py` declares `DELETE /api/trades/{trade_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-16f093a2758728d6", "name": "Unused endpoint: PATCH /api/trades/{trade_id}", "shortDescription": {"text": "Unused endpoint: PATCH /api/trades/{trade_id}"}, "fullDescription": {"text": "`app/routes/api.py` declares `PATCH /api/trades/{trade_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-fd8689e9b362f590", "name": "Unused endpoint: GET /api/symbol-lookup", "shortDescription": {"text": "Unused endpoint: GET /api/symbol-lookup"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/symbol-lookup` 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-9a56af81c74a0ead", "name": "Unused endpoint: GET /api/prices", "shortDescription": {"text": "Unused endpoint: GET /api/prices"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/prices` 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-940c9666b46713fb", "name": "Unused endpoint: GET /api/ohlc", "shortDescription": {"text": "Unused endpoint: GET /api/ohlc"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/ohlc` 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-d719b1a2f9169c89", "name": "Unused endpoint: GET /api/symbols/{symbol}/trades", "shortDescription": {"text": "Unused endpoint: GET /api/symbols/{symbol}/trades"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/symbols/{symbol}/trades` 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-33f4160b6282bf51", "name": "Unused endpoint: GET /api/symbols/{symbol}/tracking", "shortDescription": {"text": "Unused endpoint: GET /api/symbols/{symbol}/tracking"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/symbols/{symbol}/tracking` 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-92e55a744d649afd", "name": "Unused endpoint: GET /api/dashboard/snapshot", "shortDescription": {"text": "Unused endpoint: GET /api/dashboard/snapshot"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/dashboard/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-a8c0e64db85611e0", "name": "Unused endpoint: GET /api/snapshots", "shortDescription": {"text": "Unused endpoint: GET /api/snapshots"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/snapshots` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4756b4c4da7d2088", "name": "Unused endpoint: GET /api/health", "shortDescription": {"text": "Unused endpoint: GET /api/health"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60c11441a8c20421", "name": "Unused endpoint: POST /api/snapshots/rebuild", "shortDescription": {"text": "Unused endpoint: POST /api/snapshots/rebuild"}, "fullDescription": {"text": "`app/routes/api.py` declares `POST /api/snapshots/rebuild` 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-d392c911f8948e35", "name": "Unused endpoint: GET /api/settings/fees", "shortDescription": {"text": "Unused endpoint: GET /api/settings/fees"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/settings/fees` 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-160f237161eddc9a", "name": "Unused endpoint: POST /api/settings/fees", "shortDescription": {"text": "Unused endpoint: POST /api/settings/fees"}, "fullDescription": {"text": "`app/routes/api.py` declares `POST /api/settings/fees` 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-0bb8ee204f8004b7", "name": "Unused endpoint: POST /api/trades/recalculate-fees", "shortDescription": {"text": "Unused endpoint: POST /api/trades/recalculate-fees"}, "fullDescription": {"text": "`app/routes/api.py` declares `POST /api/trades/recalculate-fees` 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-63097d34bcbc2fdb", "name": "Unused endpoint: GET /api/dca-plans", "shortDescription": {"text": "Unused endpoint: GET /api/dca-plans"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/dca-plans` 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-9e1a484815c228f9", "name": "Unused endpoint: POST /api/dca-plans", "shortDescription": {"text": "Unused endpoint: POST /api/dca-plans"}, "fullDescription": {"text": "`app/routes/api.py` declares `POST /api/dca-plans` 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-3b514cdde31732ac", "name": "Unused endpoint: PATCH /api/dca-plans/{plan_id}", "shortDescription": {"text": "Unused endpoint: PATCH /api/dca-plans/{plan_id}"}, "fullDescription": {"text": "`app/routes/api.py` declares `PATCH /api/dca-plans/{plan_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-bf48c9ac54d14945", "name": "Unused endpoint: DELETE /api/dca-plans/{plan_id}", "shortDescription": {"text": "Unused endpoint: DELETE /api/dca-plans/{plan_id}"}, "fullDescription": {"text": "`app/routes/api.py` declares `DELETE /api/dca-plans/{plan_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-e19e971cd6b95813", "name": "Unused endpoint: POST /api/dca-plans/{plan_id}/import-existing", "shortDescription": {"text": "Unused endpoint: POST /api/dca-plans/{plan_id}/import-existing"}, "fullDescription": {"text": "`app/routes/api.py` declares `POST /api/dca-plans/{plan_id}/import-existing` 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-a1023f2fe8d8c550", "name": "Unused endpoint: GET /api/promotions", "shortDescription": {"text": "Unused endpoint: GET /api/promotions"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/promotions` 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-edc36d3b37eb31d9", "name": "Unused endpoint: POST /api/promotions/apply", "shortDescription": {"text": "Unused endpoint: POST /api/promotions/apply"}, "fullDescription": {"text": "`app/routes/api.py` declares `POST /api/promotions/apply` 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-587ef646942c9b22", "name": "Unused endpoint: POST /api/import/preview", "shortDescription": {"text": "Unused endpoint: POST /api/import/preview"}, "fullDescription": {"text": "`app/routes/api.py` declares `POST /api/import/preview` 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-cfb44b1ff06a8f3f", "name": "Unused endpoint: POST /api/import/commit", "shortDescription": {"text": "Unused endpoint: POST /api/import/commit"}, "fullDescription": {"text": "`app/routes/api.py` declares `POST /api/import/commit` 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-f8219457686ff0f5", "name": "Unused endpoint: GET /api/import/template", "shortDescription": {"text": "Unused endpoint: GET /api/import/template"}, "fullDescription": {"text": "`app/routes/api.py` declares `GET /api/import/template` 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/19200"}, "properties": {"repository": "sehha555/portfolio-tracker", "repoUrl": "https://github.com/sehha555/portfolio-tracker", "branch": "main"}, "results": [{"ruleId": "scanner-4e7ba6872bc05c3b", "level": "note", "message": {"text": "Possibly dead Python function: open_browser"}, "properties": {"repobilityId": "d6455af6e78d5e19", "scanner": "scanner-primary", "fingerprint": "4e7ba6872bc05c3b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run.py:151"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-61f32610e7f5eac3", "level": "note", "message": {"text": "Possibly dead Python function: cmd_status"}, "properties": {"repobilityId": "244b91f3ae7622bf", "scanner": "scanner-primary", "fingerprint": "61f32610e7f5eac3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/pt.py:72"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-494cf698527b20e6", "level": "note", "message": {"text": "Possibly dead Python function: cmd_killswitch"}, "properties": {"repobilityId": "9e1a8cab8496e780", "scanner": "scanner-primary", "fingerprint": "494cf698527b20e6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/pt.py:114"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-98ac7f29fb99558e", "level": "note", "message": {"text": "Possibly dead Python function: cmd_material_add"}, "properties": {"repobilityId": "7c25490ad6e89073", "scanner": "scanner-primary", "fingerprint": "98ac7f29fb99558e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/pt.py:152"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-97c9baff6f332df8", "level": "note", "message": {"text": "Possibly dead Python function: cmd_material_list"}, "properties": {"repobilityId": "52fb85290b56d629", "scanner": "scanner-primary", "fingerprint": "97c9baff6f332df8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/pt.py:218"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2e24c184617d57f6", "level": "note", "message": {"text": "Possibly dead Python function: cmd_material_rm"}, "properties": {"repobilityId": "56f293c31622d667", "scanner": "scanner-primary", "fingerprint": "2e24c184617d57f6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/pt.py:228"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9e862d8b89948a64", "level": "note", "message": {"text": "Possibly dead Python function: cmd_industry_flow_set"}, "properties": {"repobilityId": "1961a44d8eafd7e9", "scanner": "scanner-primary", "fingerprint": "9e862d8b89948a64", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/pt.py:316"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7b994f54ca8937ed", "level": "note", "message": {"text": "Possibly dead Python function: cmd_industry_seed"}, "properties": {"repobilityId": "5d7470f9f35bca00", "scanner": "scanner-primary", "fingerprint": "7b994f54ca8937ed", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/pt.py:366"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-88e7c4002ccad3cc", "level": "note", "message": {"text": "Possibly dead Python function: update_tracking_item"}, "properties": {"repobilityId": "06c43fba897c54d3", "scanner": "scanner-primary", "fingerprint": "88e7c4002ccad3cc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/db.py:974"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f34ad96407502e99", "level": "note", "message": {"text": "Possibly dead Python function: delete_tracking_item"}, "properties": {"repobilityId": "51a6da22ccee5f98", "scanner": "scanner-primary", "fingerprint": "f34ad96407502e99", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/db.py:987"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f64d55827f5f1679", "level": "note", "message": {"text": "Possibly dead Python function: update_thesis_essay"}, "properties": {"repobilityId": "b3234b8b1ef2882d", "scanner": "scanner-primary", "fingerprint": "f64d55827f5f1679", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/db.py:1679"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-75717964c5447d1e", "level": "note", "message": {"text": "Possibly dead Python function: delete_events_by_symbol"}, "properties": {"repobilityId": "f1f94329927b3b1a", "scanner": "scanner-primary", "fingerprint": "75717964c5447d1e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/db.py:2014"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ac34b66373e4f4e0", "level": "note", "message": {"text": "Possibly dead Python function: list_info_by_themes"}, "properties": {"repobilityId": "5b1bb8ec6d55d703", "scanner": "scanner-primary", "fingerprint": "ac34b66373e4f4e0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/db.py:2329"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e3cfd1832e715f4d", "level": "note", "message": {"text": "Possibly dead Python function: set_industry_infer_flow"}, "properties": {"repobilityId": "37f21412e4c0973c", "scanner": "scanner-primary", "fingerprint": "e3cfd1832e715f4d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/db.py:2557"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eb0e6ebbc8778adb", "level": "note", "message": {"text": "Possibly dead Python function: set_theme_infer_flow"}, "properties": {"repobilityId": "473a27c9dd7b27c3", "scanner": "scanner-primary", "fingerprint": "eb0e6ebbc8778adb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/db.py:2597"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f133d4bfc291906e", "level": "note", "message": {"text": "Possibly dead Python function: list_profile_changes"}, "properties": {"repobilityId": "c4481d60d480067f", "scanner": "scanner-primary", "fingerprint": "f133d4bfc291906e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/db.py:3143"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2ad3c83d69f30b3b", "level": "note", "message": {"text": "Possibly dead Python function: refresh_events_after_trade"}, "properties": {"repobilityId": "76659f984e144393", "scanner": "scanner-primary", "fingerprint": "2ad3c83d69f30b3b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/scheduler.py:356"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0a5479037d66edbb", "level": "note", "message": {"text": "Possibly dead Python function: get_20d_ago_close"}, "properties": {"repobilityId": "113fb235b76b1241", "scanner": "scanner-primary", "fingerprint": "0a5479037d66edbb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/prices.py:328"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ed3f76cd8b247232", "level": "note", "message": {"text": "Possibly dead Python function: sync_all"}, "properties": {"repobilityId": "4eee92d110631200", "scanner": "scanner-primary", "fingerprint": "ed3f76cd8b247232", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/dividends.py:124"}, "region": {"startLine": 1}}}]}, {"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-e2d0d8d6b1209dbc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/static/blockmap.html:210"}, "properties": {"repobilityId": "ad67aa2a618b2b86", "scanner": "scanner-primary", "fingerprint": "e2d0d8d6b1209dbc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/static/blockmap.html"}, "region": {"startLine": 210}}}]}, {"ruleId": "scanner-bc496c6e2fcf815d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/static/trade-history-mockup.html:319"}, "properties": {"repobilityId": "38f734bca071b288", "scanner": "scanner-primary", "fingerprint": "bc496c6e2fcf815d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/static/trade-history-mockup.html"}, "region": {"startLine": 319}}}]}, {"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-fbb0ee0814154034", "level": "note", "message": {"text": "Very large file: app/db.py (3277 lines)"}, "properties": {"repobilityId": "e68f17d001b39bdf", "scanner": "scanner-primary", "fingerprint": "fbb0ee0814154034", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f96602658c6cc5a9", "level": "note", "message": {"text": "Very large file: app/routes/pages.py (1380 lines)"}, "properties": {"repobilityId": "8839548a249e6b3f", "scanner": "scanner-primary", "fingerprint": "f96602658c6cc5a9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8913f7ad35280269", "level": "note", "message": {"text": "Very large file: app/routes/api.py (1750 lines)"}, "properties": {"repobilityId": "ba0560b69f342bdc", "scanner": "scanner-primary", "fingerprint": "8913f7ad35280269", "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-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "ae61e89c791fa9d2", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "670dcad2d0d6fa0e", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "8425bdebf6f55b4c", "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": "b038a277a199ee26", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-166c7237b61c5342", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 run.py:64"}, "properties": {"repobilityId": "e871296a6ca7707a", "scanner": "scanner-primary", "fingerprint": "166c7237b61c5342", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aa4f32129326df5f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/check_tracking.py:4"}, "properties": {"repobilityId": "3295640f49363795", "scanner": "scanner-primary", "fingerprint": "aa4f32129326df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-23e689a1e62d06cd", "level": "note", "message": {"text": "Legacy-named symbol `new_to_old` in app/promotion.py:56"}, "properties": {"repobilityId": "2c269bafb03aaa01", "scanner": "scanner-primary", "fingerprint": "23e689a1e62d06cd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8b1a6a67a49eee28", "level": "note", "message": {"text": "Legacy-named symbol `daily_backup` in app/scheduler.py:10"}, "properties": {"repobilityId": "a1fd192c67235114", "scanner": "scanner-primary", "fingerprint": "8b1a6a67a49eee28", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "dc7c8ecdcbf2b585", "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": "2a3c20b4b2919428", "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": "841306544bc70269", "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": "bdc78716610dca67", "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": "421aa2db57e6202f", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-770254b7361ffab7", "level": "error", "message": {"text": "FastAPI POST `create_account` without auth dependency \u2014 app/routes/api.py:25"}, "properties": {"repobilityId": "f893c6eeecac759c", "scanner": "scanner-primary", "fingerprint": "770254b7361ffab7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-8a7403bc092d996f", "level": "error", "message": {"text": "FastAPI PUT `update_account` without auth dependency \u2014 app/routes/api.py:33"}, "properties": {"repobilityId": "e161dcca99229538", "scanner": "scanner-primary", "fingerprint": "8a7403bc092d996f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-b130540420c80a41", "level": "error", "message": {"text": "FastAPI DELETE `delete_account` without auth dependency \u2014 app/routes/api.py:57"}, "properties": {"repobilityId": "e40b54fb6df6daed", "scanner": "scanner-primary", "fingerprint": "b130540420c80a41", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-21018282f9faab1b", "level": "error", "message": {"text": "FastAPI POST `create_trade` without auth dependency \u2014 app/routes/api.py:101"}, "properties": {"repobilityId": "3c29aa8e539189a2", "scanner": "scanner-primary", "fingerprint": "21018282f9faab1b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-2af37cc7343af462", "level": "error", "message": {"text": "FastAPI POST `create_fx` without auth dependency \u2014 app/routes/api.py:170"}, "properties": {"repobilityId": "75745ac07018d897", "scanner": "scanner-primary", "fingerprint": "2af37cc7343af462", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 170}}}]}, {"ruleId": "scanner-889db54ad6490680", "level": "error", "message": {"text": "FastAPI DELETE `delete_trade` without auth dependency \u2014 app/routes/api.py:203"}, "properties": {"repobilityId": "9c8daa2aab21f193", "scanner": "scanner-primary", "fingerprint": "889db54ad6490680", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 203}}}]}, {"ruleId": "scanner-02c3144321796b29", "level": "error", "message": {"text": "FastAPI PATCH `update_trade` without auth dependency \u2014 app/routes/api.py:212"}, "properties": {"repobilityId": "e63c319a8a41b505", "scanner": "scanner-primary", "fingerprint": "02c3144321796b29", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 212}}}]}, {"ruleId": "scanner-7119b3e9891f795c", "level": "error", "message": {"text": "FastAPI POST `rebuild_snapshots` without auth dependency \u2014 app/routes/api.py:576"}, "properties": {"repobilityId": "c4917f7494920d3e", "scanner": "scanner-primary", "fingerprint": "7119b3e9891f795c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 576}}}]}, {"ruleId": "scanner-0573211ef1f5556a", "level": "error", "message": {"text": "FastAPI POST `save_fee_settings` without auth dependency \u2014 app/routes/api.py:591"}, "properties": {"repobilityId": "0bdd99d6671f201e", "scanner": "scanner-primary", "fingerprint": "0573211ef1f5556a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 591}}}]}, {"ruleId": "scanner-8021f9680904b1cd", "level": "error", "message": {"text": "FastAPI POST `recalculate_fees` without auth dependency \u2014 app/routes/api.py:618"}, "properties": {"repobilityId": "131da51546a9bbc9", "scanner": "scanner-primary", "fingerprint": "8021f9680904b1cd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 618}}}]}, {"ruleId": "scanner-872569a297a31f6a", "level": "error", "message": {"text": "FastAPI POST `create_dca_plan` without auth dependency \u2014 app/routes/api.py:703"}, "properties": {"repobilityId": "a8ff7a083ab19751", "scanner": "scanner-primary", "fingerprint": "872569a297a31f6a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 703}}}]}, {"ruleId": "scanner-035b9f879fef205b", "level": "error", "message": {"text": "FastAPI PATCH `update_dca_plan` without auth dependency \u2014 app/routes/api.py:717"}, "properties": {"repobilityId": "0ec85fc3e928421a", "scanner": "scanner-primary", "fingerprint": "035b9f879fef205b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 717}}}]}, {"ruleId": "scanner-586e579b08a5f39e", "level": "error", "message": {"text": "FastAPI DELETE `delete_dca_plan` without auth dependency \u2014 app/routes/api.py:728"}, "properties": {"repobilityId": "3054b5d36c1c45a7", "scanner": "scanner-primary", "fingerprint": "586e579b08a5f39e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 728}}}]}, {"ruleId": "scanner-c588cc72ea321405", "level": "error", "message": {"text": "FastAPI POST `import_existing_to_dca_plan` without auth dependency \u2014 app/routes/api.py:736"}, "properties": {"repobilityId": "33aa11cde1e630c9", "scanner": "scanner-primary", "fingerprint": "c588cc72ea321405", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 736}}}]}, {"ruleId": "scanner-4d496989a956cb04", "level": "error", "message": {"text": "FastAPI POST `apply_promotion_api` without auth dependency \u2014 app/routes/api.py:752"}, "properties": {"repobilityId": "6aae53d2dbd5b15a", "scanner": "scanner-primary", "fingerprint": "4d496989a956cb04", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 752}}}]}, {"ruleId": "scanner-910c0d793690d031", "level": "error", "message": {"text": "FastAPI POST `import_preview` without auth dependency \u2014 app/routes/api.py:780"}, "properties": {"repobilityId": "9e51561c120c1f22", "scanner": "scanner-primary", "fingerprint": "910c0d793690d031", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 780}}}]}, {"ruleId": "scanner-0ce9c442148671ff", "level": "error", "message": {"text": "FastAPI POST `import_commit` without auth dependency \u2014 app/routes/api.py:792"}, "properties": {"repobilityId": "dd70c680de62bb29", "scanner": "scanner-primary", "fingerprint": "0ce9c442148671ff", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 792}}}]}, {"ruleId": "scanner-2733971039b00acc", "level": "error", "message": {"text": "FastAPI PUT `put_symbol_note` without auth dependency \u2014 app/routes/api.py:851"}, "properties": {"repobilityId": "bdbef2e8e96b60c7", "scanner": "scanner-primary", "fingerprint": "2733971039b00acc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 851}}}]}, {"ruleId": "scanner-23ab9f0ecd71e93f", "level": "error", "message": {"text": "FastAPI PATCH `patch_symbol_status` without auth dependency \u2014 app/routes/api.py:885"}, "properties": {"repobilityId": "ef0c37620b13ef0e", "scanner": "scanner-primary", "fingerprint": "23ab9f0ecd71e93f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 885}}}]}, {"ruleId": "scanner-bb0fadab29821ff8", "level": "error", "message": {"text": "FastAPI PATCH `patch_kill_switch` without auth dependency \u2014 app/routes/api.py:899"}, "properties": {"repobilityId": "6c28531f9ffb5456", "scanner": "scanner-primary", "fingerprint": "bb0fadab29821ff8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 899}}}]}, {"ruleId": "scanner-132f6a12ff9c0ae7", "level": "error", "message": {"text": "FastAPI PATCH `patch_tracking_text` without auth dependency \u2014 app/routes/api.py:904"}, "properties": {"repobilityId": "287e0f0df393fea8", "scanner": "scanner-primary", "fingerprint": "132f6a12ff9c0ae7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 904}}}]}, {"ruleId": "scanner-eddfe598dd44d158", "level": "error", "message": {"text": "FastAPI PATCH `patch_sources_text` without auth dependency \u2014 app/routes/api.py:909"}, "properties": {"repobilityId": "47f7db0026db2dec", "scanner": "scanner-primary", "fingerprint": "eddfe598dd44d158", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 909}}}]}, {"ruleId": "scanner-d0bcdda4c3c45771", "level": "error", "message": {"text": "FastAPI PATCH `patch_thesis_essay` without auth dependency \u2014 app/routes/api.py:914"}, "properties": {"repobilityId": "3f4616e73a9cfaad", "scanner": "scanner-primary", "fingerprint": "d0bcdda4c3c45771", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 914}}}]}, {"ruleId": "scanner-e33b90060cda2431", "level": "error", "message": {"text": "FastAPI DELETE `delete_extraction_api` without auth dependency \u2014 app/routes/api.py:919"}, "properties": {"repobilityId": "b7a4f5255ee6639e", "scanner": "scanner-primary", "fingerprint": "e33b90060cda2431", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 919}}}]}, {"ruleId": "scanner-cce8624a63f16b24", "level": "error", "message": {"text": "FastAPI POST `create_research_material_api` without auth dependency \u2014 app/routes/api.py:933"}, "properties": {"repobilityId": "98df3658590a4fac", "scanner": "scanner-primary", "fingerprint": "cce8624a63f16b24", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 933}}}]}, {"ruleId": "scanner-03868783838df899", "level": "error", "message": {"text": "FastAPI DELETE `delete_research_material_api` without auth dependency \u2014 app/routes/api.py:954"}, "properties": {"repobilityId": "cfd135d2e1573379", "scanner": "scanner-primary", "fingerprint": "03868783838df899", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 954}}}]}, {"ruleId": "scanner-dbd4a9dc4a0b4e02", "level": "error", "message": {"text": "FastAPI POST `create_info_item_api` without auth dependency \u2014 app/routes/api.py:966"}, "properties": {"repobilityId": "499a0670b6d6e967", "scanner": "scanner-primary", "fingerprint": "dbd4a9dc4a0b4e02", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 966}}}]}, {"ruleId": "scanner-1a9d39ca07168316", "level": "error", "message": {"text": "FastAPI DELETE `delete_info_item_api` without auth dependency \u2014 app/routes/api.py:984"}, "properties": {"repobilityId": "b4a3b44b5c02cfe9", "scanner": "scanner-primary", "fingerprint": "1a9d39ca07168316", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 984}}}]}, {"ruleId": "scanner-f9e6c0420cf63c6b", "level": "error", "message": {"text": "FastAPI POST `create_related_api` without auth dependency \u2014 app/routes/api.py:997"}, "properties": {"repobilityId": "4f3848c3dde06e59", "scanner": "scanner-primary", "fingerprint": "f9e6c0420cf63c6b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 997}}}]}, {"ruleId": "scanner-447f1c5c40d6e48c", "level": "error", "message": {"text": "FastAPI DELETE `delete_related_api` without auth dependency \u2014 app/routes/api.py:1008"}, "properties": {"repobilityId": "02fab600e39d12dd", "scanner": "scanner-primary", "fingerprint": "447f1c5c40d6e48c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1008}}}]}, {"ruleId": "scanner-58dc50bebd248cda", "level": "error", "message": {"text": "FastAPI PATCH `update_tags_api` without auth dependency \u2014 app/routes/api.py:1016"}, "properties": {"repobilityId": "e60bc674be15db19", "scanner": "scanner-primary", "fingerprint": "58dc50bebd248cda", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1016}}}]}, {"ruleId": "scanner-ba35cba5d761331a", "level": "error", "message": {"text": "FastAPI POST `refresh_profile_api` without auth dependency \u2014 app/routes/api.py:1023"}, "properties": {"repobilityId": "3f5da4af53c816f7", "scanner": "scanner-primary", "fingerprint": "ba35cba5d761331a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1023}}}]}, {"ruleId": "scanner-5ca10c70264615e0", "level": "error", "message": {"text": "FastAPI POST `refresh_events_api` without auth dependency \u2014 app/routes/api.py:1045"}, "properties": {"repobilityId": "9b429119b3a4d47c", "scanner": "scanner-primary", "fingerprint": "5ca10c70264615e0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1045}}}]}, {"ruleId": "scanner-5f0ec904810c9ea5", "level": "error", "message": {"text": "FastAPI POST `refresh_news_api` without auth dependency \u2014 app/routes/api.py:1086"}, "properties": {"repobilityId": "151f1fe9b40a7afe", "scanner": "scanner-primary", "fingerprint": "5f0ec904810c9ea5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1086}}}]}, {"ruleId": "scanner-0a64a19312254d03", "level": "error", "message": {"text": "FastAPI POST `create_theme_api` without auth dependency \u2014 app/routes/api.py:1132"}, "properties": {"repobilityId": "b68792b1b648ba6c", "scanner": "scanner-primary", "fingerprint": "0a64a19312254d03", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1132}}}]}, {"ruleId": "scanner-37aa3a3f896a55e5", "level": "error", "message": {"text": "FastAPI PATCH `update_theme_api` without auth dependency \u2014 app/routes/api.py:1146"}, "properties": {"repobilityId": "b8279d3d05da3191", "scanner": "scanner-primary", "fingerprint": "37aa3a3f896a55e5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1146}}}]}, {"ruleId": "scanner-a57b06845b45f306", "level": "error", "message": {"text": "FastAPI DELETE `delete_theme_api` without auth dependency \u2014 app/routes/api.py:1166"}, "properties": {"repobilityId": "c9500d67b9106971", "scanner": "scanner-primary", "fingerprint": "a57b06845b45f306", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1166}}}]}, {"ruleId": "scanner-d60bd40a7dcab65d", "level": "error", "message": {"text": "FastAPI POST `refresh_theme_news_api` without auth dependency \u2014 app/routes/api.py:1219"}, "properties": {"repobilityId": "6c8598c2606f9172", "scanner": "scanner-primary", "fingerprint": "d60bd40a7dcab65d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1219}}}]}, {"ruleId": "scanner-034dbb96b70957ca", "level": "error", "message": {"text": "FastAPI POST `refresh_all_themes_news_api` without auth dependency \u2014 app/routes/api.py:1229"}, "properties": {"repobilityId": "7aa017f507eae69b", "scanner": "scanner-primary", "fingerprint": "034dbb96b70957ca", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1229}}}]}, {"ruleId": "scanner-51b37208ae474523", "level": "error", "message": {"text": "FastAPI POST `add_theme_member_api` without auth dependency \u2014 app/routes/api.py:1247"}, "properties": {"repobilityId": "dfb1e13dd393085f", "scanner": "scanner-primary", "fingerprint": "51b37208ae474523", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1247}}}]}, {"ruleId": "scanner-4002fc1968728c80", "level": "error", "message": {"text": "FastAPI PATCH `update_theme_member_api` without auth dependency \u2014 app/routes/api.py:1271"}, "properties": {"repobilityId": "44271ed57fa3cafa", "scanner": "scanner-primary", "fingerprint": "4002fc1968728c80", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1271}}}]}, {"ruleId": "scanner-4e5d3b3a21b72841", "level": "error", "message": {"text": "FastAPI DELETE `delete_theme_member_api` without auth dependency \u2014 app/routes/api.py:1281"}, "properties": {"repobilityId": "032f1676b60792a6", "scanner": "scanner-primary", "fingerprint": "4e5d3b3a21b72841", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1281}}}]}, {"ruleId": "scanner-a2613b774c58b7d1", "level": "error", "message": {"text": "FastAPI POST `reset_positions_api` without auth dependency \u2014 app/routes/api.py:1288"}, "properties": {"repobilityId": "9ed3ff59f2390bb9", "scanner": "scanner-primary", "fingerprint": "a2613b774c58b7d1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1288}}}]}, {"ruleId": "scanner-782b328e4064aabf", "level": "error", "message": {"text": "FastAPI POST `import_podcasts_api` without auth dependency \u2014 app/routes/api.py:1345"}, "properties": {"repobilityId": "d9f3de756df5684e", "scanner": "scanner-primary", "fingerprint": "782b328e4064aabf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1345}}}]}, {"ruleId": "scanner-411bbb76b3714714", "level": "error", "message": {"text": "FastAPI DELETE `delete_podcast_api` without auth dependency \u2014 app/routes/api.py:1362"}, "properties": {"repobilityId": "f68d19825fa2d761", "scanner": "scanner-primary", "fingerprint": "411bbb76b3714714", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1362}}}]}, {"ruleId": "scanner-6a7880d13dc3b09f", "level": "error", "message": {"text": "FastAPI POST `update_podcast_settings_api` without auth dependency \u2014 app/routes/api.py:1389"}, "properties": {"repobilityId": "2756a5addb93c55c", "scanner": "scanner-primary", "fingerprint": "6a7880d13dc3b09f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1389}}}]}, {"ruleId": "scanner-02d740d77df75ac3", "level": "error", "message": {"text": "FastAPI POST `run_podcast_import_now_api` without auth dependency \u2014 app/routes/api.py:1411"}, "properties": {"repobilityId": "22b3eec5c7bf47e8", "scanner": "scanner-primary", "fingerprint": "02d740d77df75ac3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1411}}}]}, {"ruleId": "scanner-e1246adb0014c76c", "level": "error", "message": {"text": "FastAPI POST `upsert_channel_api` without auth dependency \u2014 app/routes/api.py:1433"}, "properties": {"repobilityId": "ce98a988b56dd855", "scanner": "scanner-primary", "fingerprint": "e1246adb0014c76c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1433}}}]}, {"ruleId": "scanner-ad29308881dbfc91", "level": "error", "message": {"text": "FastAPI DELETE `delete_channel_api` without auth dependency \u2014 app/routes/api.py:1441"}, "properties": {"repobilityId": "f57908c6b260fd25", "scanner": "scanner-primary", "fingerprint": "ad29308881dbfc91", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1441}}}]}, {"ruleId": "scanner-1f482a7758f13a0a", "level": "error", "message": {"text": "FastAPI PUT `save_prompt_api` without auth dependency \u2014 app/routes/api.py:1474"}, "properties": {"repobilityId": "5b964eec51475f7a", "scanner": "scanner-primary", "fingerprint": "1f482a7758f13a0a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1474}}}]}, {"ruleId": "scanner-3b50df8d408ca902", "level": "error", "message": {"text": "FastAPI POST `commit_profile_review` without auth dependency \u2014 app/routes/api.py:1537"}, "properties": {"repobilityId": "9b54d48163ec4eee", "scanner": "scanner-primary", "fingerprint": "3b50df8d408ca902", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/routes/api.py"}, "region": {"startLine": 1537}}}]}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "51249fa657af9b7f", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b4e5abd7fdafaaa0", "level": "note", "message": {"text": "Unused endpoint: GET /research"}, "properties": {"repobilityId": "46d79fd3df2a9647", "scanner": "scanner-primary", "fingerprint": "b4e5abd7fdafaaa0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fabb7c34be04ccd3", "level": "note", "message": {"text": "Unused endpoint: GET /research/themes/"}, "properties": {"repobilityId": "b3366525246ef04b", "scanner": "scanner-primary", "fingerprint": "fabb7c34be04ccd3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-365b6a407a7f6b05", "level": "note", "message": {"text": "Unused endpoint: GET /research/themes/{theme_id}"}, "properties": {"repobilityId": "3722bb2be2eb9224", "scanner": "scanner-primary", "fingerprint": "365b6a407a7f6b05", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f27f0e6a9fb07b9b", "level": "note", "message": {"text": "Unused endpoint: GET /trades"}, "properties": {"repobilityId": "d0ad36b689630e31", "scanner": "scanner-primary", "fingerprint": "f27f0e6a9fb07b9b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-339af45ebe7b3984", "level": "note", "message": {"text": "Unused endpoint: GET /trades/{symbol}"}, "properties": {"repobilityId": "8fd1baa7ea73e783", "scanner": "scanner-primary", "fingerprint": "339af45ebe7b3984", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5c6e7c6a92305dd2", "level": "note", "message": {"text": "Unused endpoint: GET /research/{symbol}"}, "properties": {"repobilityId": "5e3de208a582b763", "scanner": "scanner-primary", "fingerprint": "5c6e7c6a92305dd2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5f9819d9ecb49931", "level": "note", "message": {"text": "Unused endpoint: GET /calendar"}, "properties": {"repobilityId": "153d46eb51bef4d6", "scanner": "scanner-primary", "fingerprint": "5f9819d9ecb49931", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8898f32c3352cb11", "level": "note", "message": {"text": "Unused endpoint: GET /risk"}, "properties": {"repobilityId": "7ffd7b3a6c165e8f", "scanner": "scanner-primary", "fingerprint": "8898f32c3352cb11", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c0ac2ef565a5459b", "level": "note", "message": {"text": "Unused endpoint: GET /graph"}, "properties": {"repobilityId": "0b8f64a8c43965d4", "scanner": "scanner-primary", "fingerprint": "c0ac2ef565a5459b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ee732b4833130237", "level": "note", "message": {"text": "Unused endpoint: GET /industries"}, "properties": {"repobilityId": "4a08d435db7a97a9", "scanner": "scanner-primary", "fingerprint": "ee732b4833130237", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9d6236c300f99a63", "level": "note", "message": {"text": "Unused endpoint: GET /industry-map"}, "properties": {"repobilityId": "b596975b9d921af3", "scanner": "scanner-primary", "fingerprint": "9d6236c300f99a63", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d23687cec5d99c5e", "level": "note", "message": {"text": "Unused endpoint: GET /industry-map/{ic_code}"}, "properties": {"repobilityId": "93e32661cc133f3b", "scanner": "scanner-primary", "fingerprint": "d23687cec5d99c5e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8740852e5c395f91", "level": "note", "message": {"text": "Unused endpoint: GET /podcasts"}, "properties": {"repobilityId": "29a3717ae1742f88", "scanner": "scanner-primary", "fingerprint": "8740852e5c395f91", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c41ba8ecab9821d3", "level": "note", "message": {"text": "Unused endpoint: GET /podcasts/settings"}, "properties": {"repobilityId": "f590a93ed5b1ef0c", "scanner": "scanner-primary", "fingerprint": "c41ba8ecab9821d3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6c833cfc8c2cd7be", "level": "note", "message": {"text": "Unused endpoint: GET /podcasts/{digest_id}"}, "properties": {"repobilityId": "20e145d1d5baa0b5", "scanner": "scanner-primary", "fingerprint": "6c833cfc8c2cd7be", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-512ccb0fd0b230ba", "level": "note", "message": {"text": "Unused endpoint: GET /settings"}, "properties": {"repobilityId": "5430c16dfaa89cba", "scanner": "scanner-primary", "fingerprint": "512ccb0fd0b230ba", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7e3f71caf6c981e5", "level": "note", "message": {"text": "Unused endpoint: GET /api/accounts"}, "properties": {"repobilityId": "7d52125c2fd040d0", "scanner": "scanner-primary", "fingerprint": "7e3f71caf6c981e5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-28000b968544f7e4", "level": "note", "message": {"text": "Unused endpoint: POST /api/accounts"}, "properties": {"repobilityId": "e16cc8e915ee23c9", "scanner": "scanner-primary", "fingerprint": "28000b968544f7e4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-000c2d676b956ab5", "level": "note", "message": {"text": "Unused endpoint: PUT /api/accounts/{account_id}"}, "properties": {"repobilityId": "e62f51a240a6e101", "scanner": "scanner-primary", "fingerprint": "000c2d676b956ab5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-832112469f437dd7", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/accounts/{account_id}"}, "properties": {"repobilityId": "fc9ac89104f1fa93", "scanner": "scanner-primary", "fingerprint": "832112469f437dd7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ee8074ee7069437d", "level": "note", "message": {"text": "Unused endpoint: GET /api/export/holdings.xlsx"}, "properties": {"repobilityId": "865eb151a5a512de", "scanner": "scanner-primary", "fingerprint": "ee8074ee7069437d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3633f395d296d41d", "level": "note", "message": {"text": "Unused endpoint: GET /api/fee-preview"}, "properties": {"repobilityId": "4bbc83d1f6fc9f50", "scanner": "scanner-primary", "fingerprint": "3633f395d296d41d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-60a4b0a6061b87b6", "level": "note", "message": {"text": "Unused endpoint: POST /api/trades"}, "properties": {"repobilityId": "513d4d3d98691760", "scanner": "scanner-primary", "fingerprint": "60a4b0a6061b87b6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2f4d55ac87cd799f", "level": "note", "message": {"text": "Unused endpoint: GET /api/fx-rate"}, "properties": {"repobilityId": "751c82f9f15a13b8", "scanner": "scanner-primary", "fingerprint": "2f4d55ac87cd799f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1ec5f3988080b216", "level": "note", "message": {"text": "Unused endpoint: POST /api/fx"}, "properties": {"repobilityId": "b350687665232742", "scanner": "scanner-primary", "fingerprint": "1ec5f3988080b216", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-585a077454e056c3", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/trades/{trade_id}"}, "properties": {"repobilityId": "25c298c8ee02666c", "scanner": "scanner-primary", "fingerprint": "585a077454e056c3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-16f093a2758728d6", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/trades/{trade_id}"}, "properties": {"repobilityId": "2e42745e0886f32c", "scanner": "scanner-primary", "fingerprint": "16f093a2758728d6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fd8689e9b362f590", "level": "note", "message": {"text": "Unused endpoint: GET /api/symbol-lookup"}, "properties": {"repobilityId": "798725a9294566c6", "scanner": "scanner-primary", "fingerprint": "fd8689e9b362f590", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9a56af81c74a0ead", "level": "note", "message": {"text": "Unused endpoint: GET /api/prices"}, "properties": {"repobilityId": "487d50af55b83811", "scanner": "scanner-primary", "fingerprint": "9a56af81c74a0ead", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-940c9666b46713fb", "level": "note", "message": {"text": "Unused endpoint: GET /api/ohlc"}, "properties": {"repobilityId": "5ae35cbb3e2cf3fd", "scanner": "scanner-primary", "fingerprint": "940c9666b46713fb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d719b1a2f9169c89", "level": "note", "message": {"text": "Unused endpoint: GET /api/symbols/{symbol}/trades"}, "properties": {"repobilityId": "bbbe337d703cace0", "scanner": "scanner-primary", "fingerprint": "d719b1a2f9169c89", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-33f4160b6282bf51", "level": "note", "message": {"text": "Unused endpoint: GET /api/symbols/{symbol}/tracking"}, "properties": {"repobilityId": "57cd5bc764a464f6", "scanner": "scanner-primary", "fingerprint": "33f4160b6282bf51", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-92e55a744d649afd", "level": "note", "message": {"text": "Unused endpoint: GET /api/dashboard/snapshot"}, "properties": {"repobilityId": "ba919283a4a7b7ed", "scanner": "scanner-primary", "fingerprint": "92e55a744d649afd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a8c0e64db85611e0", "level": "note", "message": {"text": "Unused endpoint: GET /api/snapshots"}, "properties": {"repobilityId": "7ec0d2ff58eddabd", "scanner": "scanner-primary", "fingerprint": "a8c0e64db85611e0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4756b4c4da7d2088", "level": "note", "message": {"text": "Unused endpoint: GET /api/health"}, "properties": {"repobilityId": "c20b3fa5d6d37d90", "scanner": "scanner-primary", "fingerprint": "4756b4c4da7d2088", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-60c11441a8c20421", "level": "note", "message": {"text": "Unused endpoint: POST /api/snapshots/rebuild"}, "properties": {"repobilityId": "adf4e51393450742", "scanner": "scanner-primary", "fingerprint": "60c11441a8c20421", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d392c911f8948e35", "level": "note", "message": {"text": "Unused endpoint: GET /api/settings/fees"}, "properties": {"repobilityId": "4683c71fbe2aaeee", "scanner": "scanner-primary", "fingerprint": "d392c911f8948e35", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-160f237161eddc9a", "level": "note", "message": {"text": "Unused endpoint: POST /api/settings/fees"}, "properties": {"repobilityId": "40b5824d673de18f", "scanner": "scanner-primary", "fingerprint": "160f237161eddc9a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0bb8ee204f8004b7", "level": "note", "message": {"text": "Unused endpoint: POST /api/trades/recalculate-fees"}, "properties": {"repobilityId": "7e063a6a50b3663d", "scanner": "scanner-primary", "fingerprint": "0bb8ee204f8004b7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-63097d34bcbc2fdb", "level": "note", "message": {"text": "Unused endpoint: GET /api/dca-plans"}, "properties": {"repobilityId": "58f3ceff347c2493", "scanner": "scanner-primary", "fingerprint": "63097d34bcbc2fdb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9e1a484815c228f9", "level": "note", "message": {"text": "Unused endpoint: POST /api/dca-plans"}, "properties": {"repobilityId": "5d8fcb1041ae3e32", "scanner": "scanner-primary", "fingerprint": "9e1a484815c228f9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3b514cdde31732ac", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/dca-plans/{plan_id}"}, "properties": {"repobilityId": "33c3a7a4aa0000ae", "scanner": "scanner-primary", "fingerprint": "3b514cdde31732ac", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bf48c9ac54d14945", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/dca-plans/{plan_id}"}, "properties": {"repobilityId": "9fd0fc597f0af633", "scanner": "scanner-primary", "fingerprint": "bf48c9ac54d14945", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e19e971cd6b95813", "level": "note", "message": {"text": "Unused endpoint: POST /api/dca-plans/{plan_id}/import-existing"}, "properties": {"repobilityId": "49babb941b1d9aec", "scanner": "scanner-primary", "fingerprint": "e19e971cd6b95813", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a1023f2fe8d8c550", "level": "note", "message": {"text": "Unused endpoint: GET /api/promotions"}, "properties": {"repobilityId": "642d5aa87891e39b", "scanner": "scanner-primary", "fingerprint": "a1023f2fe8d8c550", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-edc36d3b37eb31d9", "level": "note", "message": {"text": "Unused endpoint: POST /api/promotions/apply"}, "properties": {"repobilityId": "2a6415e4e31428b2", "scanner": "scanner-primary", "fingerprint": "edc36d3b37eb31d9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-587ef646942c9b22", "level": "note", "message": {"text": "Unused endpoint: POST /api/import/preview"}, "properties": {"repobilityId": "fa61e312a7a94908", "scanner": "scanner-primary", "fingerprint": "587ef646942c9b22", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cfb44b1ff06a8f3f", "level": "note", "message": {"text": "Unused endpoint: POST /api/import/commit"}, "properties": {"repobilityId": "2c5b94e38f5b4445", "scanner": "scanner-primary", "fingerprint": "cfb44b1ff06a8f3f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f8219457686ff0f5", "level": "note", "message": {"text": "Unused endpoint: GET /api/import/template"}, "properties": {"repobilityId": "7756fdf57042a4e6", "scanner": "scanner-primary", "fingerprint": "f8219457686ff0f5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}