{"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-6be4fbbad1800c49", "name": "Possibly dead Python function: handle_payload", "shortDescription": {"text": "Possibly dead Python function: handle_payload"}, "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-389204d7e12d7494", "name": "Possibly dead Python function: list_sd_files", "shortDescription": {"text": "Possibly dead Python function: list_sd_files"}, "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-3260aa9d583363b7", "name": "Possibly dead Python function: delete_sd_file", "shortDescription": {"text": "Possibly dead Python function: delete_sd_file"}, "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-a2511ef5f2c9ffe1", "name": "Possibly dead Python function: slice_file", "shortDescription": {"text": "Possibly dead Python function: slice_file"}, "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-e6b6a9dca2dceb35", "name": "Insecure pattern 'cors_wildcard' in app/api.py:193", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in app/api.py:193"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 14 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bc769c3c50266ec7", "name": "Network/subprocess call without timeout or try/except \u2014 app/camera_stream.py:280", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 app/camera_stream.py:280"}, "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-98afdd19c8bae787", "name": "Legacy-named symbol `snap_copy` in app/api.py:90", "shortDescription": {"text": "Legacy-named symbol `snap_copy` in app/api.py:90"}, "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-f808a4ef3e1071fb", "name": "14 env vars used in code but missing from .env.example", "shortDescription": {"text": "14 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `API_HOST`, `API_PORT`, `CAMERA_LIBRARY_PATH`, `SLICER_BIN`, `SLICER_FILAMENT`, `SLICER_MACHINE`, `SLICER_MODEL_CODE`, `SLICER_MODEL_NAME` + 6 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napp/ftps_upload.py:sock, app/ftps_upload.py:sock\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-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napp/api.py:move_home, app/api.py:move_jog, app/api.py:extrude\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-2e5eab39a394d955", "name": "FastAPI POST `print_start` without auth dependency \u2014 app/api.py:229", "shortDescription": {"text": "FastAPI POST `print_start` without auth dependency \u2014 app/api.py:229"}, "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-c0e477c1900fae2c", "name": "FastAPI POST `print_control` without auth dependency \u2014 app/api.py:302", "shortDescription": {"text": "FastAPI POST `print_control` without auth dependency \u2014 app/api.py:302"}, "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-36d27c59a70fa636", "name": "FastAPI POST `light_control` without auth dependency \u2014 app/api.py:320", "shortDescription": {"text": "FastAPI POST `light_control` without auth dependency \u2014 app/api.py:320"}, "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-59e3f010b7f9161d", "name": "FastAPI POST `set_temp` without auth dependency \u2014 app/api.py:357", "shortDescription": {"text": "FastAPI POST `set_temp` without auth dependency \u2014 app/api.py:357"}, "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-bf4ef70ab7b19f9b", "name": "FastAPI POST `set_fan` without auth dependency \u2014 app/api.py:372", "shortDescription": {"text": "FastAPI POST `set_fan` without auth dependency \u2014 app/api.py:372"}, "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-3163034c9616ed24", "name": "FastAPI POST `set_speed` without auth dependency \u2014 app/api.py:387", "shortDescription": {"text": "FastAPI POST `set_speed` without auth dependency \u2014 app/api.py:387"}, "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-cac244e118b4ecfa", "name": "FastAPI POST `move_home` without auth dependency \u2014 app/api.py:408", "shortDescription": {"text": "FastAPI POST `move_home` without auth dependency \u2014 app/api.py:408"}, "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-90b18899e4d95fec", "name": "FastAPI POST `move_jog` without auth dependency \u2014 app/api.py:419", "shortDescription": {"text": "FastAPI POST `move_jog` without auth dependency \u2014 app/api.py:419"}, "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-5dcc196f79ccf14a", "name": "FastAPI POST `extrude` without auth dependency \u2014 app/api.py:438", "shortDescription": {"text": "FastAPI POST `extrude` without auth dependency \u2014 app/api.py:438"}, "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-f4a87f858f29784e", "name": "FastAPI POST `print_sd_file` without auth dependency \u2014 app/api.py:496", "shortDescription": {"text": "FastAPI POST `print_sd_file` without auth dependency \u2014 app/api.py:496"}, "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-aaf677ac6f70f394", "name": "FastAPI DELETE `delete_sd_file` without auth dependency \u2014 app/api.py:511", "shortDescription": {"text": "FastAPI DELETE `delete_sd_file` without auth dependency \u2014 app/api.py:511"}, "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-57d5447355cebd9b", "name": "FastAPI POST `slice_model` without auth dependency \u2014 app/api.py:533", "shortDescription": {"text": "FastAPI POST `slice_model` without auth dependency \u2014 app/api.py:533"}, "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-f847a774c99bb50d", "name": "FastAPI POST `slice_print` without auth dependency \u2014 app/api.py:594", "shortDescription": {"text": "FastAPI POST `slice_print` without auth dependency \u2014 app/api.py:594"}, "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}}]}}, "automationDetails": {"id": "repobility/24546"}, "properties": {"repository": "benkjcheong/bambuonline-be", "repoUrl": "https://github.com/benkjcheong/bambuonline-be", "branch": "main"}, "results": [{"ruleId": "scanner-6be4fbbad1800c49", "level": "note", "message": {"text": "Possibly dead Python function: handle_payload"}, "properties": {"repobilityId": "d9f0bffa06d6548f", "scanner": "scanner-primary", "fingerprint": "6be4fbbad1800c49", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/__main__.py:40"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-389204d7e12d7494", "level": "note", "message": {"text": "Possibly dead Python function: list_sd_files"}, "properties": {"repobilityId": "86022dbe4d6fddbe", "scanner": "scanner-primary", "fingerprint": "389204d7e12d7494", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/printer_control.py:170"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3260aa9d583363b7", "level": "note", "message": {"text": "Possibly dead Python function: delete_sd_file"}, "properties": {"repobilityId": "79a1f0615a316087", "scanner": "scanner-primary", "fingerprint": "3260aa9d583363b7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/printer_control.py:173"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a2511ef5f2c9ffe1", "level": "note", "message": {"text": "Possibly dead Python function: slice_file"}, "properties": {"repobilityId": "77eb604cb2a333dc", "scanner": "scanner-primary", "fingerprint": "a2511ef5f2c9ffe1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/slicer.py:218"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e6b6a9dca2dceb35", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in app/api.py:193"}, "properties": {"repobilityId": "dca4ad719751ad14", "scanner": "scanner-primary", "fingerprint": "e6b6a9dca2dceb35", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api.py"}, "region": {"startLine": 193}}}]}, {"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-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "55f26aaeaaacf4b2", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "654c27f27156a185", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-bc769c3c50266ec7", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 app/camera_stream.py:280"}, "properties": {"repobilityId": "20bc81ac6846d4e5", "scanner": "scanner-primary", "fingerprint": "bc769c3c50266ec7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-98afdd19c8bae787", "level": "note", "message": {"text": "Legacy-named symbol `snap_copy` in app/api.py:90"}, "properties": {"repobilityId": "9be217450664d2a7", "scanner": "scanner-primary", "fingerprint": "98afdd19c8bae787", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f808a4ef3e1071fb", "level": "note", "message": {"text": "14 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "ce6b2ec4be4ec75a", "scanner": "scanner-primary", "fingerprint": "f808a4ef3e1071fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "2323daf3f51d2052", "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": "3ca704f20ade8aff", "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": "61116a5b01fcb9dd", "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": "b361e3badff57aad", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "19847dd4f9c6ccc1", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2e5eab39a394d955", "level": "error", "message": {"text": "FastAPI POST `print_start` without auth dependency \u2014 app/api.py:229"}, "properties": {"repobilityId": "e81c3457536d9d76", "scanner": "scanner-primary", "fingerprint": "2e5eab39a394d955", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api.py"}, "region": {"startLine": 229}}}]}, {"ruleId": "scanner-c0e477c1900fae2c", "level": "error", "message": {"text": "FastAPI POST `print_control` without auth dependency \u2014 app/api.py:302"}, "properties": {"repobilityId": "fbd960e35b4df9b6", "scanner": "scanner-primary", "fingerprint": "c0e477c1900fae2c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api.py"}, "region": {"startLine": 302}}}]}, {"ruleId": "scanner-36d27c59a70fa636", "level": "error", "message": {"text": "FastAPI POST `light_control` without auth dependency \u2014 app/api.py:320"}, "properties": {"repobilityId": "239025f53e07ab92", "scanner": "scanner-primary", "fingerprint": "36d27c59a70fa636", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api.py"}, "region": {"startLine": 320}}}]}, {"ruleId": "scanner-59e3f010b7f9161d", "level": "error", "message": {"text": "FastAPI POST `set_temp` without auth dependency \u2014 app/api.py:357"}, "properties": {"repobilityId": "3bb22c7ca59a5140", "scanner": "scanner-primary", "fingerprint": "59e3f010b7f9161d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api.py"}, "region": {"startLine": 357}}}]}, {"ruleId": "scanner-bf4ef70ab7b19f9b", "level": "error", "message": {"text": "FastAPI POST `set_fan` without auth dependency \u2014 app/api.py:372"}, "properties": {"repobilityId": "4068091d734110d0", "scanner": "scanner-primary", "fingerprint": "bf4ef70ab7b19f9b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api.py"}, "region": {"startLine": 372}}}]}, {"ruleId": "scanner-3163034c9616ed24", "level": "error", "message": {"text": "FastAPI POST `set_speed` without auth dependency \u2014 app/api.py:387"}, "properties": {"repobilityId": "a60efc629f9347b2", "scanner": "scanner-primary", "fingerprint": "3163034c9616ed24", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api.py"}, "region": {"startLine": 387}}}]}, {"ruleId": "scanner-cac244e118b4ecfa", "level": "error", "message": {"text": "FastAPI POST `move_home` without auth dependency \u2014 app/api.py:408"}, "properties": {"repobilityId": "ff31b7061871b7e0", "scanner": "scanner-primary", "fingerprint": "cac244e118b4ecfa", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api.py"}, "region": {"startLine": 408}}}]}, {"ruleId": "scanner-90b18899e4d95fec", "level": "error", "message": {"text": "FastAPI POST `move_jog` without auth dependency \u2014 app/api.py:419"}, "properties": {"repobilityId": "2851ce22c2c1f134", "scanner": "scanner-primary", "fingerprint": "90b18899e4d95fec", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api.py"}, "region": {"startLine": 419}}}]}, {"ruleId": "scanner-5dcc196f79ccf14a", "level": "error", "message": {"text": "FastAPI POST `extrude` without auth dependency \u2014 app/api.py:438"}, "properties": {"repobilityId": "8168f956c1a833b3", "scanner": "scanner-primary", "fingerprint": "5dcc196f79ccf14a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api.py"}, "region": {"startLine": 438}}}]}, {"ruleId": "scanner-f4a87f858f29784e", "level": "error", "message": {"text": "FastAPI POST `print_sd_file` without auth dependency \u2014 app/api.py:496"}, "properties": {"repobilityId": "e654020cc166b316", "scanner": "scanner-primary", "fingerprint": "f4a87f858f29784e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api.py"}, "region": {"startLine": 496}}}]}, {"ruleId": "scanner-aaf677ac6f70f394", "level": "error", "message": {"text": "FastAPI DELETE `delete_sd_file` without auth dependency \u2014 app/api.py:511"}, "properties": {"repobilityId": "c92db4c1ef9b0c92", "scanner": "scanner-primary", "fingerprint": "aaf677ac6f70f394", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api.py"}, "region": {"startLine": 511}}}]}, {"ruleId": "scanner-57d5447355cebd9b", "level": "error", "message": {"text": "FastAPI POST `slice_model` without auth dependency \u2014 app/api.py:533"}, "properties": {"repobilityId": "419cbc7b0aada0e7", "scanner": "scanner-primary", "fingerprint": "57d5447355cebd9b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api.py"}, "region": {"startLine": 533}}}]}, {"ruleId": "scanner-f847a774c99bb50d", "level": "error", "message": {"text": "FastAPI POST `slice_print` without auth dependency \u2014 app/api.py:594"}, "properties": {"repobilityId": "10a167e1fb62b8cb", "scanner": "scanner-primary", "fingerprint": "f847a774c99bb50d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api.py"}, "region": {"startLine": 594}}}]}]}]}