{"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-9dfcd8cd5bd7326e", "name": "Possibly dead Python function: go", "shortDescription": {"text": "Possibly dead Python function: go"}, "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-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-0bbede27b2f63367", "name": "Very large file: server.py (1957 lines)", "shortDescription": {"text": "Very large file: server.py (1957 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9207827a0c885e48", "name": "Legacy-named symbol `restore_backup` in server.py:1268", "shortDescription": {"text": "Legacy-named symbol `restore_backup` in server.py:1268"}, "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-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nserver.py:list_tables, server.py:get_pragmas, server.py:dump_sql, server.py:list_backups\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:\nserver.py:get_schema, server.py:list_indexes, server.py:list_triggers\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-46969939caf8120b", "name": "Near-duplicate function bodies in 9 places", "shortDescription": {"text": "Near-duplicate function bodies in 9 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nserver.py:go, server.py:go, server.py:go, server.py:go\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-b83afa0ea7697967", "name": "Flask mutation route `create_database` without `@login_required` \u2014 server.py:442", "shortDescription": {"text": "Flask mutation route `create_database` without `@login_required` \u2014 server.py:442"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f96e56165540c2a3", "name": "Flask mutation route `upload_database` without `@login_required` \u2014 server.py:457", "shortDescription": {"text": "Flask mutation route `upload_database` without `@login_required` \u2014 server.py:457"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eb08d40b02fe503b", "name": "Flask mutation route `open_database` without `@login_required` \u2014 server.py:484", "shortDescription": {"text": "Flask mutation route `open_database` without `@login_required` \u2014 server.py:484"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-158386c7f2574a42", "name": "Flask mutation route `close_database` without `@login_required` \u2014 server.py:517", "shortDescription": {"text": "Flask mutation route `close_database` without `@login_required` \u2014 server.py:517"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b14181f7676760bd", "name": "Flask mutation route `reset_example` without `@login_required` \u2014 server.py:529", "shortDescription": {"text": "Flask mutation route `reset_example` without `@login_required` \u2014 server.py:529"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-70f04a3bc3eb0525", "name": "Flask mutation route `add_column` without `@login_required` \u2014 server.py:665", "shortDescription": {"text": "Flask mutation route `add_column` without `@login_required` \u2014 server.py:665"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5b11e70fb9a15d8f", "name": "Flask mutation route `rename_column` without `@login_required` \u2014 server.py:690", "shortDescription": {"text": "Flask mutation route `rename_column` without `@login_required` \u2014 server.py:690"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-72db6f226cf0e041", "name": "Flask mutation route `drop_column` without `@login_required` \u2014 server.py:706", "shortDescription": {"text": "Flask mutation route `drop_column` without `@login_required` \u2014 server.py:706"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f1b51d2ca67c2386", "name": "Flask mutation route `rename_table` without `@login_required` \u2014 server.py:720", "shortDescription": {"text": "Flask mutation route `rename_table` without `@login_required` \u2014 server.py:720"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e9de48d59855c5a", "name": "Flask mutation route `drop_table` without `@login_required` \u2014 server.py:733", "shortDescription": {"text": "Flask mutation route `drop_table` without `@login_required` \u2014 server.py:733"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-804d880909efbda4", "name": "Flask mutation route `change_column` without `@login_required` \u2014 server.py:830", "shortDescription": {"text": "Flask mutation route `change_column` without `@login_required` \u2014 server.py:830"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-da481d8e3ecdec3f", "name": "Flask mutation route `add_fk` without `@login_required` \u2014 server.py:846", "shortDescription": {"text": "Flask mutation route `add_fk` without `@login_required` \u2014 server.py:846"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b075e06b730da974", "name": "Flask mutation route `create_index` without `@login_required` \u2014 server.py:892", "shortDescription": {"text": "Flask mutation route `create_index` without `@login_required` \u2014 server.py:892"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d9055c9aace76b8", "name": "Flask mutation route `drop_index` without `@login_required` \u2014 server.py:914", "shortDescription": {"text": "Flask mutation route `drop_index` without `@login_required` \u2014 server.py:914"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-95846cbbb181227d", "name": "Flask mutation route `create_trigger` without `@login_required` \u2014 server.py:951", "shortDescription": {"text": "Flask mutation route `create_trigger` without `@login_required` \u2014 server.py:951"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26a300a864bd41dd", "name": "Flask mutation route `drop_trigger` without `@login_required` \u2014 server.py:981", "shortDescription": {"text": "Flask mutation route `drop_trigger` without `@login_required` \u2014 server.py:981"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d3573b3d0d550605", "name": "Flask mutation route `set_pragma` without `@login_required` \u2014 server.py:1026", "shortDescription": {"text": "Flask mutation route `set_pragma` without `@login_required` \u2014 server.py:1026"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0be1875046461392", "name": "Flask mutation route `import_json` without `@login_required` \u2014 server.py:1121", "shortDescription": {"text": "Flask mutation route `import_json` without `@login_required` \u2014 server.py:1121"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de390fb1dc050360", "name": "Flask mutation route `import_sql` without `@login_required` \u2014 server.py:1218", "shortDescription": {"text": "Flask mutation route `import_sql` without `@login_required` \u2014 server.py:1218"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de7b701460c4d50b", "name": "Flask mutation route `restore_backup` without `@login_required` \u2014 server.py:1267", "shortDescription": {"text": "Flask mutation route `restore_backup` without `@login_required` \u2014 server.py:1267"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-99c0f6f08648c55b", "name": "Flask mutation route `delete_backup` without `@login_required` \u2014 server.py:1279", "shortDescription": {"text": "Flask mutation route `delete_backup` without `@login_required` \u2014 server.py:1279"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84a387d048524e53", "name": "Flask mutation route `add_attachment` without `@login_required` \u2014 server.py:1297", "shortDescription": {"text": "Flask mutation route `add_attachment` without `@login_required` \u2014 server.py:1297"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c612a040c8d6c923", "name": "Flask mutation route `remove_attachment` without `@login_required` \u2014 server.py:1320", "shortDescription": {"text": "Flask mutation route `remove_attachment` without `@login_required` \u2014 server.py:1320"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-245748e7ddb2767e", "name": "Flask mutation route `cancel_query` without `@login_required` \u2014 server.py:1400", "shortDescription": {"text": "Flask mutation route `cancel_query` without `@login_required` \u2014 server.py:1400"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b2091c543cd3ee2d", "name": "Flask mutation route `query` without `@login_required` \u2014 server.py:1413", "shortDescription": {"text": "Flask mutation route `query` without `@login_required` \u2014 server.py:1413"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b7953657b1bf79a7", "name": "Flask mutation route `update_row` without `@login_required` \u2014 server.py:1554", "shortDescription": {"text": "Flask mutation route `update_row` without `@login_required` \u2014 server.py:1554"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-221c968dba33e4c3", "name": "Flask mutation route `insert_row` without `@login_required` \u2014 server.py:1589", "shortDescription": {"text": "Flask mutation route `insert_row` without `@login_required` \u2014 server.py:1589"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-129ccac61a623ccb", "name": "Flask mutation route `delete_row` without `@login_required` \u2014 server.py:1622", "shortDescription": {"text": "Flask mutation route `delete_row` without `@login_required` \u2014 server.py:1622"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6a58331092264fb2", "name": "Flask mutation route `import_csv` without `@login_required` \u2014 server.py:1650", "shortDescription": {"text": "Flask mutation route `import_csv` without `@login_required` \u2014 server.py:1650"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dd8129cb7e5b112c", "name": "Flask mutation route `clear_history` without `@login_required` \u2014 server.py:1789", "shortDescription": {"text": "Flask mutation route `clear_history` without `@login_required` \u2014 server.py:1789"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ef57c58a9d42734", "name": "Flask mutation route `save_snippet` without `@login_required` \u2014 server.py:1809", "shortDescription": {"text": "Flask mutation route `save_snippet` without `@login_required` \u2014 server.py:1809"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c04283dfed3c29c8", "name": "Flask mutation route `delete_snippet` without `@login_required` \u2014 server.py:1834", "shortDescription": {"text": "Flask mutation route `delete_snippet` without `@login_required` \u2014 server.py:1834"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/25654"}, "properties": {"repository": "EmyoTyyy/sequencelab", "repoUrl": "https://github.com/EmyoTyyy/sequencelab", "branch": "main"}, "results": [{"ruleId": "scanner-9dfcd8cd5bd7326e", "level": "note", "message": {"text": "Possibly dead Python function: go"}, "properties": {"repobilityId": "4b0bb0f4d33f4075", "scanner": "scanner-primary", "fingerprint": "9dfcd8cd5bd7326e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py:919"}, "region": {"startLine": 1}}}]}, {"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-0bbede27b2f63367", "level": "note", "message": {"text": "Very large file: server.py (1957 lines)"}, "properties": {"repobilityId": "61d8058d744c856e", "scanner": "scanner-primary", "fingerprint": "0bbede27b2f63367", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9207827a0c885e48", "level": "note", "message": {"text": "Legacy-named symbol `restore_backup` in server.py:1268"}, "properties": {"repobilityId": "761d0538aac00288", "scanner": "scanner-primary", "fingerprint": "9207827a0c885e48", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "100d82fc79494961", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "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": "790563e770e3e4bc", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-46969939caf8120b", "level": "note", "message": {"text": "Near-duplicate function bodies in 9 places"}, "properties": {"repobilityId": "7abec378e541cf49", "scanner": "scanner-primary", "fingerprint": "46969939caf8120b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-b83afa0ea7697967", "level": "error", "message": {"text": "Flask mutation route `create_database` without `@login_required` \u2014 server.py:442"}, "properties": {"repobilityId": "355c3499a69e7008", "scanner": "scanner-primary", "fingerprint": "b83afa0ea7697967", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 442}}}]}, {"ruleId": "scanner-f96e56165540c2a3", "level": "error", "message": {"text": "Flask mutation route `upload_database` without `@login_required` \u2014 server.py:457"}, "properties": {"repobilityId": "4efe099683f2f64c", "scanner": "scanner-primary", "fingerprint": "f96e56165540c2a3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 457}}}]}, {"ruleId": "scanner-eb08d40b02fe503b", "level": "error", "message": {"text": "Flask mutation route `open_database` without `@login_required` \u2014 server.py:484"}, "properties": {"repobilityId": "679690ba17aacdfa", "scanner": "scanner-primary", "fingerprint": "eb08d40b02fe503b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 484}}}]}, {"ruleId": "scanner-158386c7f2574a42", "level": "error", "message": {"text": "Flask mutation route `close_database` without `@login_required` \u2014 server.py:517"}, "properties": {"repobilityId": "e041de7540eaad67", "scanner": "scanner-primary", "fingerprint": "158386c7f2574a42", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 517}}}]}, {"ruleId": "scanner-b14181f7676760bd", "level": "error", "message": {"text": "Flask mutation route `reset_example` without `@login_required` \u2014 server.py:529"}, "properties": {"repobilityId": "b8bd59796da8a47d", "scanner": "scanner-primary", "fingerprint": "b14181f7676760bd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 529}}}]}, {"ruleId": "scanner-70f04a3bc3eb0525", "level": "error", "message": {"text": "Flask mutation route `add_column` without `@login_required` \u2014 server.py:665"}, "properties": {"repobilityId": "0b1316bdc7314dc6", "scanner": "scanner-primary", "fingerprint": "70f04a3bc3eb0525", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 665}}}]}, {"ruleId": "scanner-5b11e70fb9a15d8f", "level": "error", "message": {"text": "Flask mutation route `rename_column` without `@login_required` \u2014 server.py:690"}, "properties": {"repobilityId": "aa9ac5d8cca118ec", "scanner": "scanner-primary", "fingerprint": "5b11e70fb9a15d8f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 690}}}]}, {"ruleId": "scanner-72db6f226cf0e041", "level": "error", "message": {"text": "Flask mutation route `drop_column` without `@login_required` \u2014 server.py:706"}, "properties": {"repobilityId": "36d6c7e63208b9e2", "scanner": "scanner-primary", "fingerprint": "72db6f226cf0e041", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 706}}}]}, {"ruleId": "scanner-f1b51d2ca67c2386", "level": "error", "message": {"text": "Flask mutation route `rename_table` without `@login_required` \u2014 server.py:720"}, "properties": {"repobilityId": "bfb79a63e3cca06d", "scanner": "scanner-primary", "fingerprint": "f1b51d2ca67c2386", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 720}}}]}, {"ruleId": "scanner-2e9de48d59855c5a", "level": "error", "message": {"text": "Flask mutation route `drop_table` without `@login_required` \u2014 server.py:733"}, "properties": {"repobilityId": "55e24beeb89bfe80", "scanner": "scanner-primary", "fingerprint": "2e9de48d59855c5a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 733}}}]}, {"ruleId": "scanner-804d880909efbda4", "level": "error", "message": {"text": "Flask mutation route `change_column` without `@login_required` \u2014 server.py:830"}, "properties": {"repobilityId": "56cc2f46e362d65c", "scanner": "scanner-primary", "fingerprint": "804d880909efbda4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 830}}}]}, {"ruleId": "scanner-da481d8e3ecdec3f", "level": "error", "message": {"text": "Flask mutation route `add_fk` without `@login_required` \u2014 server.py:846"}, "properties": {"repobilityId": "11a70e863a8443f8", "scanner": "scanner-primary", "fingerprint": "da481d8e3ecdec3f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 846}}}]}, {"ruleId": "scanner-b075e06b730da974", "level": "error", "message": {"text": "Flask mutation route `create_index` without `@login_required` \u2014 server.py:892"}, "properties": {"repobilityId": "3b6ab388d401a456", "scanner": "scanner-primary", "fingerprint": "b075e06b730da974", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 892}}}]}, {"ruleId": "scanner-1d9055c9aace76b8", "level": "error", "message": {"text": "Flask mutation route `drop_index` without `@login_required` \u2014 server.py:914"}, "properties": {"repobilityId": "8f209f812231d88e", "scanner": "scanner-primary", "fingerprint": "1d9055c9aace76b8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 914}}}]}, {"ruleId": "scanner-95846cbbb181227d", "level": "error", "message": {"text": "Flask mutation route `create_trigger` without `@login_required` \u2014 server.py:951"}, "properties": {"repobilityId": "b86cd1814f63ce16", "scanner": "scanner-primary", "fingerprint": "95846cbbb181227d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 951}}}]}, {"ruleId": "scanner-26a300a864bd41dd", "level": "error", "message": {"text": "Flask mutation route `drop_trigger` without `@login_required` \u2014 server.py:981"}, "properties": {"repobilityId": "58ff8475816011c5", "scanner": "scanner-primary", "fingerprint": "26a300a864bd41dd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 981}}}]}, {"ruleId": "scanner-d3573b3d0d550605", "level": "error", "message": {"text": "Flask mutation route `set_pragma` without `@login_required` \u2014 server.py:1026"}, "properties": {"repobilityId": "c3cb70a23b712aa7", "scanner": "scanner-primary", "fingerprint": "d3573b3d0d550605", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1026}}}]}, {"ruleId": "scanner-0be1875046461392", "level": "error", "message": {"text": "Flask mutation route `import_json` without `@login_required` \u2014 server.py:1121"}, "properties": {"repobilityId": "aaf1cf94dde0c930", "scanner": "scanner-primary", "fingerprint": "0be1875046461392", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1121}}}]}, {"ruleId": "scanner-de390fb1dc050360", "level": "error", "message": {"text": "Flask mutation route `import_sql` without `@login_required` \u2014 server.py:1218"}, "properties": {"repobilityId": "28824edf6b6ffe83", "scanner": "scanner-primary", "fingerprint": "de390fb1dc050360", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1218}}}]}, {"ruleId": "scanner-de7b701460c4d50b", "level": "error", "message": {"text": "Flask mutation route `restore_backup` without `@login_required` \u2014 server.py:1267"}, "properties": {"repobilityId": "b5825d2cfa4155c0", "scanner": "scanner-primary", "fingerprint": "de7b701460c4d50b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1267}}}]}, {"ruleId": "scanner-99c0f6f08648c55b", "level": "error", "message": {"text": "Flask mutation route `delete_backup` without `@login_required` \u2014 server.py:1279"}, "properties": {"repobilityId": "53881c03d33e5c33", "scanner": "scanner-primary", "fingerprint": "99c0f6f08648c55b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1279}}}]}, {"ruleId": "scanner-84a387d048524e53", "level": "error", "message": {"text": "Flask mutation route `add_attachment` without `@login_required` \u2014 server.py:1297"}, "properties": {"repobilityId": "ac47fe446f95e371", "scanner": "scanner-primary", "fingerprint": "84a387d048524e53", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1297}}}]}, {"ruleId": "scanner-c612a040c8d6c923", "level": "error", "message": {"text": "Flask mutation route `remove_attachment` without `@login_required` \u2014 server.py:1320"}, "properties": {"repobilityId": "36db2a1444c87da7", "scanner": "scanner-primary", "fingerprint": "c612a040c8d6c923", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1320}}}]}, {"ruleId": "scanner-245748e7ddb2767e", "level": "error", "message": {"text": "Flask mutation route `cancel_query` without `@login_required` \u2014 server.py:1400"}, "properties": {"repobilityId": "d25c1dbf32e2c7cf", "scanner": "scanner-primary", "fingerprint": "245748e7ddb2767e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1400}}}]}, {"ruleId": "scanner-b2091c543cd3ee2d", "level": "error", "message": {"text": "Flask mutation route `query` without `@login_required` \u2014 server.py:1413"}, "properties": {"repobilityId": "95426f945bd64912", "scanner": "scanner-primary", "fingerprint": "b2091c543cd3ee2d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1413}}}]}, {"ruleId": "scanner-b7953657b1bf79a7", "level": "error", "message": {"text": "Flask mutation route `update_row` without `@login_required` \u2014 server.py:1554"}, "properties": {"repobilityId": "3b5569703f35d2ff", "scanner": "scanner-primary", "fingerprint": "b7953657b1bf79a7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1554}}}]}, {"ruleId": "scanner-221c968dba33e4c3", "level": "error", "message": {"text": "Flask mutation route `insert_row` without `@login_required` \u2014 server.py:1589"}, "properties": {"repobilityId": "ee6ad2b05ccaef59", "scanner": "scanner-primary", "fingerprint": "221c968dba33e4c3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1589}}}]}, {"ruleId": "scanner-129ccac61a623ccb", "level": "error", "message": {"text": "Flask mutation route `delete_row` without `@login_required` \u2014 server.py:1622"}, "properties": {"repobilityId": "ea2458fe60af00f5", "scanner": "scanner-primary", "fingerprint": "129ccac61a623ccb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1622}}}]}, {"ruleId": "scanner-6a58331092264fb2", "level": "error", "message": {"text": "Flask mutation route `import_csv` without `@login_required` \u2014 server.py:1650"}, "properties": {"repobilityId": "e2fe17b330ee13e4", "scanner": "scanner-primary", "fingerprint": "6a58331092264fb2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1650}}}]}, {"ruleId": "scanner-dd8129cb7e5b112c", "level": "error", "message": {"text": "Flask mutation route `clear_history` without `@login_required` \u2014 server.py:1789"}, "properties": {"repobilityId": "f6d5782cdde61272", "scanner": "scanner-primary", "fingerprint": "dd8129cb7e5b112c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1789}}}]}, {"ruleId": "scanner-5ef57c58a9d42734", "level": "error", "message": {"text": "Flask mutation route `save_snippet` without `@login_required` \u2014 server.py:1809"}, "properties": {"repobilityId": "27eb6b0416d58aa3", "scanner": "scanner-primary", "fingerprint": "5ef57c58a9d42734", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1809}}}]}, {"ruleId": "scanner-c04283dfed3c29c8", "level": "error", "message": {"text": "Flask mutation route `delete_snippet` without `@login_required` \u2014 server.py:1834"}, "properties": {"repobilityId": "d33678bcedc3891e", "scanner": "scanner-primary", "fingerprint": "c04283dfed3c29c8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.py"}, "region": {"startLine": 1834}}}]}]}]}