{"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-ab0d825a37599ace", "name": "Possibly dead Python function: add_glow_line", "shortDescription": {"text": "Possibly dead Python function: add_glow_line"}, "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-ef784870158b24eb", "name": "Possibly dead Python function: decode_csv_content", "shortDescription": {"text": "Possibly dead Python function: decode_csv_content"}, "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-96c8661fa0c0c69f", "name": "Possibly dead Python function: format_bytes", "shortDescription": {"text": "Possibly dead Python function: format_bytes"}, "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-7c50844d83f70971", "name": "Possibly dead Python function: truncate_string", "shortDescription": {"text": "Possibly dead Python function: truncate_string"}, "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-1b138c281ee2c9ff", "name": "Possibly dead Python function: safe_float", "shortDescription": {"text": "Possibly dead Python function: safe_float"}, "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-5032c7c35fb8cf3a", "name": "Possibly dead Python function: warm_up_connections", "shortDescription": {"text": "Possibly dead Python function: warm_up_connections"}, "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-b591932241974ee8", "name": "Possibly dead Python function: create_product", "shortDescription": {"text": "Possibly dead Python function: create_product"}, "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-503eb60b511252c4", "name": "Possibly dead Python function: is_rakuten_only_image", "shortDescription": {"text": "Possibly dead Python function: is_rakuten_only_image"}, "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-06f3b17265845f24", "name": "Possibly dead Python function: decode_csv", "shortDescription": {"text": "Possibly dead Python function: decode_csv"}, "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-e1769c134bb90557", "name": "Possibly dead Python function: create_csv_response", "shortDescription": {"text": "Possibly dead Python function: create_csv_response"}, "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-9641e4abba4b5a1b", "name": "Possibly dead Python function: write_csv_to_file", "shortDescription": {"text": "Possibly dead Python function: write_csv_to_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-ca500f70b4d0097c", "name": "Possibly dead Python function: row_to_product", "shortDescription": {"text": "Possibly dead Python function: row_to_product"}, "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-b2cf548ce77397b3", "name": "Possibly dead Python function: generate_main_rows", "shortDescription": {"text": "Possibly dead Python function: generate_main_rows"}, "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-dd53c9431aeb587e", "name": "Possibly dead Python function: generate_sku_rows", "shortDescription": {"text": "Possibly dead Python function: generate_sku_rows"}, "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-3d3ce9a332a95055", "name": "Possibly dead Python function: import_item", "shortDescription": {"text": "Possibly dead Python function: import_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-7d9e50c26e6166dc", "name": "Possibly dead Python function: is_master_loaded", "shortDescription": {"text": "Possibly dead Python function: is_master_loaded"}, "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-74f5d5cedf647bbe", "name": "Possibly dead Python function: json_default", "shortDescription": {"text": "Possibly dead Python function: json_default"}, "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-23d73d4423469e35", "name": "Possibly dead Python function: fetch_all_auction_metadata_from_supabase", "shortDescription": {"text": "Possibly dead Python function: fetch_all_auction_metadata_from_supabase"}, "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-3f876af98196cc5e", "name": "Possibly dead Python function: fetch_all_flick_metadata_from_supabase", "shortDescription": {"text": "Possibly dead Python function: fetch_all_flick_metadata_from_supabase"}, "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-02ce8671ebeadea2", "name": "Possibly dead Python function: reload_category_mapping", "shortDescription": {"text": "Possibly dead Python function: reload_category_mapping"}, "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-4b02bdc60f106cbd", "name": "Possibly dead Python function: clear_warnings", "shortDescription": {"text": "Possibly dead Python function: clear_warnings"}, "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-8051e5697fc503b1", "name": "Possibly dead Python function: has_warnings", "shortDescription": {"text": "Possibly dead Python function: has_warnings"}, "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-3cdd67aa401d222a", "name": "Stray `console.log` in TS/JS \u2014 frontend/electron/main.js:1", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/main.js:1"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90915da672486813", "name": "Stray `console.log` in TS/JS \u2014 frontend/electron/main_original.js:1", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/main_original.js:1"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4f2894f0f974fd91", "name": "Stray `console.log` in TS/JS \u2014 frontend/electron/main.src.js:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/main.src.js:68"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-447e3d5e3d706102", "name": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/config.src.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/config.src.js:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-255ab331e681f7cd", "name": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/deep-link.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/deep-link.js:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d0b698a4bc473b8a", "name": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/backend.src.js:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/backend.src.js:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-480368adda795025", "name": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/deep-link.src.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/deep-link.src.js:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ab8a3c914c266922", "name": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/updater.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/updater.js:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ff2557e44f83058", "name": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/updater.src.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/updater.src.js:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c3ed4764f55665c6", "name": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/config.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/config.js:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d4646318baad2089", "name": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/backend.js:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/backend.js:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f9db1b5361b0a6de", "name": "Stray `console.log` in TS/JS \u2014 frontend/scripts/minify-electron.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/minify-electron.js:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c059927b681afe9d", "name": "Stray `console.log` in TS/JS \u2014 frontend/scripts/verify-build.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/verify-build.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8ff241bca152abdf", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SearchPanel.tsx:390", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SearchPanel.tsx:390"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7aaad53151e49f81", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/product/ProductSidebar.tsx:599", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/product/ProductSidebar.tsx:599"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99ac3683a3f6cffd", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/product/sidebar/ProductListItem.tsx:59", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/product/sidebar/ProductListItem.tsx:59"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e6d0f86e3044622", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/PageHeader.tsx:29", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/PageHeader.tsx:29"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c00129f7c1bde903", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/glass-select.tsx:154", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/glass-select.tsx:154"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b4ffba915ca3ae6", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/RelatedProductsCopyDialog.tsx:214", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/RelatedProductsCopyDialog.tsx:214"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-afdf191cb19a93cd", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/ImageOptimizeDialog.tsx:388", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/ImageOptimizeDialog.tsx:388"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-01d3c2fcb21a2009", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/ProductPageGapCheckDialog.tsx:179", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/ProductPageGapCheckDialog.tsx:179"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ea263a8288f700ff", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/MaterialSpecDialog.tsx:220", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/MaterialSpecDialog.tsx:220"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5ab1150d8046a9d0", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/MigrationDialog.tsx:169", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/MigrationDialog.tsx:169"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e02d3bf24a7dadf6", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/ProductDuplicateDialog.tsx:143", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/ProductDuplicateDialog.tsx:143"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b32d83aec9a92ad", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/user-settings/YahuokuOutputSection.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/user-settings/YahuokuOutputSection.tsx:51"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-511a2a5a3de11b39", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/user-settings/ImageFolderSection.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/user-settings/ImageFolderSection.tsx:51"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dd030a53c6bef33b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/html-generation/sections/ImageSetti", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/html-generation/sections/ImageSettingsSection.tsx:69"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dfd0d11d8d377b10", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/image-tools/ImageSelectList.tsx:256", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/image-tools/ImageSelectList.tsx:256"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bb36a8a19278620f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ProductsPage.tsx:1067", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ProductsPage.tsx:1067"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0a6b3ae898194fe6", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/DeliveryWidgetPage.tsx:385", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/DeliveryWidgetPage.tsx:385"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-576f1db6b6932a1a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/YahuokuPage.tsx:356", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/YahuokuPage.tsx:356"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0da7f9a61b3cee0e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/AIImageChatPage.tsx:388", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/AIImageChatPage.tsx:388"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-baff33de93d62bed", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/pages/delivery-widget/components/WidgetPreview.tsx:20", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/pages/delivery-widget/components/WidgetPreview.tsx:200"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3675a0fc137f94fd", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/delivery-widget/components/GoldUploadPanel.tsx:4", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/delivery-widget/components/GoldUploadPanel.tsx:454"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-047a34201e6e0cd3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/pages/delivery-widget/components/GoldUploadPanel.tsx:", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/pages/delivery-widget/components/GoldUploadPanel.tsx:702"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9b3731748c0c8f65", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/mercari-csv/MercariProductDuplicateDialog.tsx:13", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/mercari-csv/MercariProductDuplicateDialog.tsx:131"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-872777c331876092", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/mercari-csv/RakutenImportDialog.tsx:349", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/mercari-csv/RakutenImportDialog.tsx:349"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a1a136a254e916f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/mercari-csv/MercariSidebarRow.tsx:142", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/mercari-csv/MercariSidebarRow.tsx:142"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fb8d670ba44d98bc", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/import/ImportSinglePreviewCard.tsx:199", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/import/ImportSinglePreviewCard.tsx:199"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2739701b0d02ae83", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/import/ImportMatrixResultsCard.tsx:101", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/import/ImportMatrixResultsCard.tsx:101"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-39f65fbae1370665", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/image-upload/YahooImageSection.tsx:246", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/image-upload/YahooImageSection.tsx:246"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17a111bca4516336", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/image-upload/BulkImageSection.tsx:260", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/image-upload/BulkImageSection.tsx:260"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1a077cdeba8082d2", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/image-upload/RakutenImageSection.tsx:225", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/image-upload/RakutenImageSection.tsx:225"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-232c28850e8ca54a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/mercari-tab/MercariTabDialogs.tsx:373", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/mercari-tab/MercariTabDialogs.tsx:373"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8a554db8af7276a3", "name": "Privileged port 21 in use", "shortDescription": {"text": "Privileged port 21 in use"}, "fullDescription": {"text": "Port 21 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9457f7afdabbd29f", "name": "Privileged port 15 in use", "shortDescription": {"text": "Privileged port 15 in use"}, "fullDescription": {"text": "Port 15 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4e5f1d7b9c4a5777", "name": "Privileged port 3 in use", "shortDescription": {"text": "Privileged port 3 in use"}, "fullDescription": {"text": "Port 3 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ec0ae8da97af91f1", "name": "Privileged port 12 in use", "shortDescription": {"text": "Privileged port 12 in use"}, "fullDescription": {"text": "Port 12 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c25d3e95baccac22", "name": "Insecure pattern 'node_child_process' in frontend/electron/main_original.js:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in frontend/electron/main_original.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ef58395e4521456c", "name": "Insecure pattern 'node_child_process' in frontend/electron/lib/backend.src.js:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in frontend/electron/lib/backend.src.js:12"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2a6821ccfe8bac53", "name": "Insecure pattern 'node_child_process' in frontend/electron/lib/updater.js:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in frontend/electron/lib/updater.js:4"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c5eec44c3de58b49", "name": "Insecure pattern 'node_child_process' in frontend/electron/lib/updater.src.js:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in frontend/electron/lib/updater.src.js:4"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc09c7338d4462f6", "name": "Insecure pattern 'node_child_process' in frontend/electron/lib/backend.js:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in frontend/electron/lib/backend.js:12"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f299c81695945672", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/main.tsx:20", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/main.tsx:20"}, "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-418653e391694ff6", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/page-editor/HtmlLiveEditor.tsx:122", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/page-editor/HtmlLiveEditor.tsx:122"}, "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-41384f0c58988588", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/pages/delivery-widget/components/WidgetPreview.tsx:200", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/pages/delivery-widget/components/WidgetPreview.tsx:200"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e6a22ea77ea291b4", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/pages/delivery-widget/components/GoldUploadPanel.tsx:702", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/pages/delivery-widget/components/GoldUploadPanel.tsx:702"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eec2ab2f9ba43284", "name": "Insecure pattern 'cors_wildcard' in backend/supabase/functions/admin-invite-user/index.ts:15", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in backend/supabase/functions/admin-invite-user/index.ts:15"}, "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-5f1367acd3721aef", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72113c9c2403d473", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-python@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-46c644c6227e4d4a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1838a141491ce38c", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a98ee0b15c1c1d28", "name": "Very large file: frontend/src/pages/ProductsPage.tsx (1345 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/ProductsPage.tsx (1345 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-629f38b39f0e4293", "name": "Very large file: frontend/src/pages/mercari-csv/MercariProductForm.tsx (1059 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/mercari-csv/MercariProductForm.tsx (1059 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-d55a8c44ebaf066e", "name": "Very large file: backend/app/services/mercari_inventory_sync_service.py (1256 lines)", "shortDescription": {"text": "Very large file: backend/app/services/mercari_inventory_sync_service.py (1256 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-73f0ea058d1b0207", "name": "Very large file: backend/app/services/rakuten/client.py (1924 lines)", "shortDescription": {"text": "Very large file: backend/app/services/rakuten/client.py (1924 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": "48 test file(s) for 577 source file(s) (ratio 0.08). 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 371 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-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 185 placeholder/mock markers across 64 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "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-a78b9b20cdac793a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/api/index.ts:505", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/api/index.ts:505"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6f8d33aeef653646", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/api/mercari.ts:684", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/api/mercari.ts:684"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7abc99bd828d2d5b", "name": "Legacy-named symbol `convertDbToLegacy` in frontend/src/hooks/useMasterData.ts:77", "shortDescription": {"text": "Legacy-named symbol `convertDbToLegacy` in frontend/src/hooks/useMasterData.ts:77"}, "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-15f862036f8f2326", "name": "Commented-code block (6 lines) in scripts/release/prepare-backend-env.mjs:4", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/release/prepare-backend-env.mjs:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0fc0717701b0ac58", "name": "Commented-code block (5 lines) in scripts/release/scan-bundled-env-secrets.mjs:4", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/release/scan-bundled-env-secrets.mjs:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-44a6a8530f2178ec", "name": "Commented-code block (7 lines) in scripts/release/prepare-frontend-env.mjs:4", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/release/prepare-frontend-env.mjs:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc1d2dcbbe05e014", "name": "Network/subprocess call without timeout or try/except \u2014 backend/build_mac.py:120", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 backend/build_mac.py:120"}, "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-bdf2f07c210305d5", "name": "Network/subprocess call without timeout or try/except \u2014 backend/build_nuitka.py:83", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 backend/build_nuitka.py:83"}, "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-b7a4a379454f641c", "name": "Legacy-named symbol `features_v2` in backend/tests/test_ai_assist_service.py:209", "shortDescription": {"text": "Legacy-named symbol `features_v2` in backend/tests/test_ai_assist_service.py:209"}, "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-312c1c2482b35c28", "name": "Legacy-named symbol `database_backup` in backend/scripts/export_supabase_csv.py:21", "shortDescription": {"text": "Legacy-named symbol `database_backup` in backend/scripts/export_supabase_csv.py:21"}, "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-2e33634ca68fb189", "name": "Legacy-named symbol `database_backup` in backend/scripts/restore_supabase_backup.py:20", "shortDescription": {"text": "Legacy-named symbol `database_backup` in backend/scripts/restore_supabase_backup.py:20"}, "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-272c916eb5ef560a", "name": "Legacy-named symbol `r_catch_copy` in backend/scripts/migrate_to_supabase.py:27", "shortDescription": {"text": "Legacy-named symbol `r_catch_copy` in backend/scripts/migrate_to_supabase.py:27"}, "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-8acaa55334d1cad4", "name": "Legacy-named symbol `database_backup` in backend/app/main.py:39", "shortDescription": {"text": "Legacy-named symbol `database_backup` in backend/app/main.py:39"}, "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-41a777868eb024da", "name": "Legacy-named symbol `model_copy` in backend/app/services/field_merge.py:243", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/app/services/field_merge.py:243"}, "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-3cb70552585e9455", "name": "Network/subprocess call without timeout or try/except \u2014 backend/app/services/csv_export_service.py:555", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 backend/app/services/csv_export_service.py:555"}, "fullDescription": {"text": "`subprocess.Popen(...)` 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-2b96e8d714f8aa9f", "name": "Legacy-named symbol `inspect_backup` in backend/app/services/database_backup.py:110", "shortDescription": {"text": "Legacy-named symbol `inspect_backup` in backend/app/services/database_backup.py:110"}, "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-54213e6bb3b392d5", "name": "Legacy-named symbol `model_copy` in backend/app/services/delivery_widget_config_service.py:17", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/app/services/delivery_widget_config_service.py:17"}, "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-45c8278200199bf7", "name": "Commented-code block (6 lines) in backend/app/services/product_register/yahoo_auction_converter.py:179", "shortDescription": {"text": "Commented-code block (6 lines) in backend/app/services/product_register/yahoo_auction_converter.py:179"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-91e320b5d3195982", "name": "Commented-code block (6 lines) in backend/app/services/ai_suggest/draft_field_policy.py:10", "shortDescription": {"text": "Commented-code block (6 lines) in backend/app/services/ai_suggest/draft_field_policy.py:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-91eff5787745dbb9", "name": "Legacy-named symbol `create_backup` in backend/app/routers/product_csv.py:118", "shortDescription": {"text": "Legacy-named symbol `create_backup` in backend/app/routers/product_csv.py:118"}, "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-96a5e90405cc5445", "name": "Legacy-named symbol `database_backup` in backend/app/routers/database_backup.py:13", "shortDescription": {"text": "Legacy-named symbol `database_backup` in backend/app/routers/database_backup.py:13"}, "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-156811fd43844c14", "name": "`fetch()` without try/.catch or AbortSignal \u2014 backend/templates/delivery_widget/search.js:531", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/templates/delivery_widget/search.js:531"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f084f383bf75066d", "name": "Commented-code block (5 lines) in backend/supabase/functions/admin-invite-user/index.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in backend/supabase/functions/admin-invite-user/index.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-022e6399d1ef2beb", "name": "12 env vars used in code but missing from .env.example", "shortDescription": {"text": "12 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `BACKEND_BASE_PATH`, `BASE_URL`, `DEV`, `LOCALAPPDATA`, `NODE_ENV`, `NO_OBFUSCATE`, `STRUCTURED_LOGGING`, `SUPABASE_SERVICE_KEY` + 4 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:\nbackend/build_mac.py:clean, backend/build_nuitka.py:clean\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-fe48145fce7c8a1c", "name": "FastAPI POST `export_to_excel` without auth dependency \u2014 backend/app/routers/csv_export.py:54", "shortDescription": {"text": "FastAPI POST `export_to_excel` without auth dependency \u2014 backend/app/routers/csv_export.py:54"}, "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-a66c8b2a7853cc34", "name": "FastAPI POST `generate_csv` without auth dependency \u2014 backend/app/routers/csv_export.py:70", "shortDescription": {"text": "FastAPI POST `generate_csv` without auth dependency \u2014 backend/app/routers/csv_export.py:70"}, "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-bafe555b045e627e", "name": "FastAPI POST `export_and_generate_csv` without auth dependency \u2014 backend/app/routers/csv_export.py:85", "shortDescription": {"text": "FastAPI POST `export_and_generate_csv` without auth dependency \u2014 backend/app/routers/csv_export.py:85"}, "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-304e88b165a61345", "name": "FastAPI POST `export_and_generate_csv_stream` without auth dependency \u2014 backend/app/routers/csv_export.py:115", "shortDescription": {"text": "FastAPI POST `export_and_generate_csv_stream` without auth dependency \u2014 backend/app/routers/csv_export.py:115"}, "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-fe11d82a6a702d91", "name": "FastAPI POST `analyze_delivery_banner` without auth dependency \u2014 backend/app/routers/yahoo_delivery_banner.py:52", "shortDescription": {"text": "FastAPI POST `analyze_delivery_banner` without auth dependency \u2014 backend/app/routers/yahoo_delivery_banner.py:52"}, "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-26ad8cf50e74394a", "name": "FastAPI POST `apply_delivery_banner` without auth dependency \u2014 backend/app/routers/yahoo_delivery_banner.py:73", "shortDescription": {"text": "FastAPI POST `apply_delivery_banner` without auth dependency \u2014 backend/app/routers/yahoo_delivery_banner.py:73"}, "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-a8ec2af6023decf0", "name": "FastAPI POST `create_shop` without auth dependency \u2014 backend/app/routers/yahoo_settings.py:76", "shortDescription": {"text": "FastAPI POST `create_shop` without auth dependency \u2014 backend/app/routers/yahoo_settings.py:76"}, "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-8e23826c11c51ee2", "name": "FastAPI PUT `update_shop` without auth dependency \u2014 backend/app/routers/yahoo_settings.py:95", "shortDescription": {"text": "FastAPI PUT `update_shop` without auth dependency \u2014 backend/app/routers/yahoo_settings.py:95"}, "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-8ff02233f5a22a46", "name": "FastAPI DELETE `delete_shop` without auth dependency \u2014 backend/app/routers/yahoo_settings.py:117", "shortDescription": {"text": "FastAPI DELETE `delete_shop` without auth dependency \u2014 backend/app/routers/yahoo_settings.py:117"}, "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-7fb43692510ba835", "name": "FastAPI PUT `set_active_shop` without auth dependency \u2014 backend/app/routers/yahoo_settings.py:129", "shortDescription": {"text": "FastAPI PUT `set_active_shop` without auth dependency \u2014 backend/app/routers/yahoo_settings.py:129"}, "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-24e978f8997cae94", "name": "FastAPI POST `validate_connection` without auth dependency \u2014 backend/app/routers/yahoo_settings.py:143", "shortDescription": {"text": "FastAPI POST `validate_connection` without auth dependency \u2014 backend/app/routers/yahoo_settings.py:143"}, "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-bcf0a132e5bba031", "name": "FastAPI POST `analyze_delivery_banner` without auth dependency \u2014 backend/app/routers/rakuten_delivery_banner.py:127", "shortDescription": {"text": "FastAPI POST `analyze_delivery_banner` without auth dependency \u2014 backend/app/routers/rakuten_delivery_banner.py:127"}, "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-9efc4b51964f4276", "name": "FastAPI POST `apply_delivery_banner` without auth dependency \u2014 backend/app/routers/rakuten_delivery_banner.py:140", "shortDescription": {"text": "FastAPI POST `apply_delivery_banner` without auth dependency \u2014 backend/app/routers/rakuten_delivery_banner.py:140"}, "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-3c23bf8076983bc1", "name": "FastAPI POST `record_product_history` without auth dependency \u2014 backend/app/routers/mercari_history.py:38", "shortDescription": {"text": "FastAPI POST `record_product_history` without auth dependency \u2014 backend/app/routers/mercari_history.py:38"}, "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-3431b8a11d5a472c", "name": "FastAPI POST `get_products_history_batch` without auth dependency \u2014 backend/app/routers/mercari_history.py:68", "shortDescription": {"text": "FastAPI POST `get_products_history_batch` without auth dependency \u2014 backend/app/routers/mercari_history.py:68"}, "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-c4378eb936adab84", "name": "FastAPI PUT `update_rakuten_price` without auth dependency \u2014 backend/app/routers/price_management.py:65", "shortDescription": {"text": "FastAPI PUT `update_rakuten_price` without auth dependency \u2014 backend/app/routers/price_management.py:65"}, "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-3b40e6563e2afac3", "name": "FastAPI PUT `bulk_update_rakuten_prices` without auth dependency \u2014 backend/app/routers/price_management.py:91", "shortDescription": {"text": "FastAPI PUT `bulk_update_rakuten_prices` without auth dependency \u2014 backend/app/routers/price_management.py:91"}, "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-e9756a556ff1516b", "name": "FastAPI PUT `update_yahoo_price` without auth dependency \u2014 backend/app/routers/price_management.py:145", "shortDescription": {"text": "FastAPI PUT `update_yahoo_price` without auth dependency \u2014 backend/app/routers/price_management.py:145"}, "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-29f503033e1d8aa0", "name": "FastAPI PUT `bulk_update_yahoo_prices` without auth dependency \u2014 backend/app/routers/price_management.py:170", "shortDescription": {"text": "FastAPI PUT `bulk_update_yahoo_prices` without auth dependency \u2014 backend/app/routers/price_management.py:170"}, "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-aaf59aa7b3d60669", "name": "FastAPI POST `sync_prices_from_rakuten` without auth dependency \u2014 backend/app/routers/price_management.py:198", "shortDescription": {"text": "FastAPI POST `sync_prices_from_rakuten` without auth dependency \u2014 backend/app/routers/price_management.py:198"}, "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-5fcdd44c441daaee", "name": "FastAPI POST `save_product` without auth dependency \u2014 backend/app/routers/mercari.py:384", "shortDescription": {"text": "FastAPI POST `save_product` without auth dependency \u2014 backend/app/routers/mercari.py:384"}, "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-97957bfebfcbbc28", "name": "FastAPI PUT `update_product` without auth dependency \u2014 backend/app/routers/mercari.py:407", "shortDescription": {"text": "FastAPI PUT `update_product` without auth dependency \u2014 backend/app/routers/mercari.py:407"}, "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-55e9e8b082bc3c14", "name": "FastAPI DELETE `delete_product` without auth dependency \u2014 backend/app/routers/mercari.py:434", "shortDescription": {"text": "FastAPI DELETE `delete_product` without auth dependency \u2014 backend/app/routers/mercari.py:434"}, "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-81999b1bf2b820d3", "name": "FastAPI PATCH `update_batch_status` without auth dependency \u2014 backend/app/routers/mercari.py:456", "shortDescription": {"text": "FastAPI PATCH `update_batch_status` without auth dependency \u2014 backend/app/routers/mercari.py:456"}, "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-37ba7b0a1f4f13ea", "name": "FastAPI PATCH `update_batch_shipping_fee` without auth dependency \u2014 backend/app/routers/mercari.py:497", "shortDescription": {"text": "FastAPI PATCH `update_batch_shipping_fee` without auth dependency \u2014 backend/app/routers/mercari.py:497"}, "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-756e1f285d300dfa", "name": "FastAPI PATCH `batch_sanitize_sku_names` without auth dependency \u2014 backend/app/routers/mercari.py:568", "shortDescription": {"text": "FastAPI PATCH `batch_sanitize_sku_names` without auth dependency \u2014 backend/app/routers/mercari.py:568"}, "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-a0081f56f05773dc", "name": "FastAPI POST `bulk_get_inventory` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:61", "shortDescription": {"text": "FastAPI POST `bulk_get_inventory` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:61"}, "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-3ef6c7476c22a8b4", "name": "FastAPI PUT `update_inventory_item` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:315", "shortDescription": {"text": "FastAPI PUT `update_inventory_item` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:315"}, "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-4666dd2a832c9b54", "name": "FastAPI POST `bulk_update_inventory` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:395", "shortDescription": {"text": "FastAPI POST `bulk_update_inventory` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:395"}, "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-c90e71efc4730161", "name": "FastAPI PUT `update_item_display` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:496", "shortDescription": {"text": "FastAPI PUT `update_item_display` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:496"}, "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-4cf8f9a524731177", "name": "FastAPI PUT `bulk_update_items_display` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:530", "shortDescription": {"text": "FastAPI PUT `bulk_update_items_display` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:530"}, "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-5e9df401a0ad7d6f", "name": "FastAPI DELETE `delete_product` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:576", "shortDescription": {"text": "FastAPI DELETE `delete_product` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:576"}, "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-cba5fafe47672003", "name": "FastAPI POST `refresh_leadtime` without auth dependency \u2014 backend/app/routers/delivery_widget.py:37", "shortDescription": {"text": "FastAPI POST `refresh_leadtime` without auth dependency \u2014 backend/app/routers/delivery_widget.py:37"}, "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-e059658a092a3b47", "name": "FastAPI POST `refresh_holidays` without auth dependency \u2014 backend/app/routers/delivery_widget.py:72", "shortDescription": {"text": "FastAPI POST `refresh_holidays` without auth dependency \u2014 backend/app/routers/delivery_widget.py:72"}, "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-3bed383015c36208", "name": "FastAPI PUT `put_overrides` without auth dependency \u2014 backend/app/routers/delivery_widget.py:104", "shortDescription": {"text": "FastAPI PUT `put_overrides` without auth dependency \u2014 backend/app/routers/delivery_widget.py:104"}, "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-dfe5ca3841495a07", "name": "FastAPI POST `sync_rakuten_calendar_endpoint` without auth dependency \u2014 backend/app/routers/delivery_widget.py:110", "shortDescription": {"text": "FastAPI POST `sync_rakuten_calendar_endpoint` without auth dependency \u2014 backend/app/routers/delivery_widget.py:110"}, "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-ebebc0ad5c9c3776", "name": "FastAPI PUT `put_config` without auth dependency \u2014 backend/app/routers/delivery_widget.py:128", "shortDescription": {"text": "FastAPI PUT `put_config` without auth dependency \u2014 backend/app/routers/delivery_widget.py:128"}, "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-18f63d607dc80cbf", "name": "FastAPI POST `generate_widget` without auth dependency \u2014 backend/app/routers/delivery_widget.py:134", "shortDescription": {"text": "FastAPI POST `generate_widget` without auth dependency \u2014 backend/app/routers/delivery_widget.py:134"}, "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-4937d1dbd19348e8", "name": "FastAPI POST `optimize_single_image` without auth dependency \u2014 backend/app/routers/image_optimize.py:202", "shortDescription": {"text": "FastAPI POST `optimize_single_image` without auth dependency \u2014 backend/app/routers/image_optimize.py:202"}, "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-bd0baf8c1aeaa3b6", "name": "FastAPI POST `optimize_batch_images` without auth dependency \u2014 backend/app/routers/image_optimize.py:275", "shortDescription": {"text": "FastAPI POST `optimize_batch_images` without auth dependency \u2014 backend/app/routers/image_optimize.py:275"}, "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-06b5f0b7d0efcde7", "name": "FastAPI POST `optimize_uploaded_images` without auth dependency \u2014 backend/app/routers/image_optimize.py:378", "shortDescription": {"text": "FastAPI POST `optimize_uploaded_images` without auth dependency \u2014 backend/app/routers/image_optimize.py:378"}, "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-311f7c787845be46", "name": "FastAPI POST `optimize_paths` without auth dependency \u2014 backend/app/routers/image_optimize.py:474", "shortDescription": {"text": "FastAPI POST `optimize_paths` without auth dependency \u2014 backend/app/routers/image_optimize.py:474"}, "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-2cb50a8115674d81", "name": "FastAPI POST `combine_manual` without auth dependency \u2014 backend/app/routers/image_optimize.py:621", "shortDescription": {"text": "FastAPI POST `combine_manual` without auth dependency \u2014 backend/app/routers/image_optimize.py:621"}, "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-a98b0aa4d5f42284", "name": "FastAPI PUT `update_settings` without auth dependency \u2014 backend/app/routers/ai_assist.py:310", "shortDescription": {"text": "FastAPI PUT `update_settings` without auth dependency \u2014 backend/app/routers/ai_assist.py:310"}, "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-a6ef89024f9d6f29", "name": "FastAPI POST `test_local` without auth dependency \u2014 backend/app/routers/ai_assist.py:333", "shortDescription": {"text": "FastAPI POST `test_local` without auth dependency \u2014 backend/app/routers/ai_assist.py:333"}, "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-19e8adceb7ca0c2b", "name": "FastAPI POST `test_ollama` without auth dependency \u2014 backend/app/routers/ai_assist.py:340", "shortDescription": {"text": "FastAPI POST `test_ollama` without auth dependency \u2014 backend/app/routers/ai_assist.py:340"}, "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-ede2925db6ea973e", "name": "FastAPI POST `pull_ollama_model` without auth dependency \u2014 backend/app/routers/ai_assist.py:355", "shortDescription": {"text": "FastAPI POST `pull_ollama_model` without auth dependency \u2014 backend/app/routers/ai_assist.py:355"}, "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-1d9958341d87c59f", "name": "FastAPI POST `draft_product` without auth dependency \u2014 backend/app/routers/ai_assist.py:364", "shortDescription": {"text": "FastAPI POST `draft_product` without auth dependency \u2014 backend/app/routers/ai_assist.py:364"}, "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-7da78fff6a565aeb", "name": "FastAPI POST `set_api_key` without auth dependency \u2014 backend/app/routers/ai_assist.py:399", "shortDescription": {"text": "FastAPI POST `set_api_key` without auth dependency \u2014 backend/app/routers/ai_assist.py:399"}, "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-388778196170ad4f", "name": "FastAPI DELETE `clear_api_key` without auth dependency \u2014 backend/app/routers/ai_assist.py:412", "shortDescription": {"text": "FastAPI DELETE `clear_api_key` without auth dependency \u2014 backend/app/routers/ai_assist.py:412"}, "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-d04ba6c2d3640b7c", "name": "FastAPI POST `suggest_product_name` without auth dependency \u2014 backend/app/routers/ai_assist.py:422", "shortDescription": {"text": "FastAPI POST `suggest_product_name` without auth dependency \u2014 backend/app/routers/ai_assist.py:422"}, "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-e7283fd2f142260c", "name": "FastAPI POST `suggest_catchcopy` without auth dependency \u2014 backend/app/routers/ai_assist.py:457", "shortDescription": {"text": "FastAPI POST `suggest_catchcopy` without auth dependency \u2014 backend/app/routers/ai_assist.py:457"}, "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-ba03a1539f25c87e", "name": "FastAPI POST `suggest_features` without auth dependency \u2014 backend/app/routers/ai_assist.py:492", "shortDescription": {"text": "FastAPI POST `suggest_features` without auth dependency \u2014 backend/app/routers/ai_assist.py:492"}, "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-16ef65abd18bd4c4", "name": "FastAPI POST `record_selection` without auth dependency \u2014 backend/app/routers/ai_assist.py:527", "shortDescription": {"text": "FastAPI POST `record_selection` without auth dependency \u2014 backend/app/routers/ai_assist.py:527"}, "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-46a91e04da039455", "name": "FastAPI POST `clear_cache` without auth dependency \u2014 backend/app/routers/ai_assist.py:552", "shortDescription": {"text": "FastAPI POST `clear_cache` without auth dependency \u2014 backend/app/routers/ai_assist.py:552"}, "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-8e6a69e4ed6ba0c1", "name": "FastAPI POST `export_all_csv` without auth dependency \u2014 backend/app/routers/product_csv.py:75", "shortDescription": {"text": "FastAPI POST `export_all_csv` without auth dependency \u2014 backend/app/routers/product_csv.py:75"}, "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-f11e86a1074fef3c", "name": "FastAPI POST `create_backup` without auth dependency \u2014 backend/app/routers/product_csv.py:117", "shortDescription": {"text": "FastAPI POST `create_backup` without auth dependency \u2014 backend/app/routers/product_csv.py:117"}, "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-455e844c61c2917b", "name": "FastAPI POST `preview_products_import` without auth dependency \u2014 backend/app/routers/product_csv.py:157", "shortDescription": {"text": "FastAPI POST `preview_products_import` without auth dependency \u2014 backend/app/routers/product_csv.py:157"}, "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-cb80f2a5e360e38a", "name": "FastAPI POST `preview_skus_import` without auth dependency \u2014 backend/app/routers/product_csv.py:223", "shortDescription": {"text": "FastAPI POST `preview_skus_import` without auth dependency \u2014 backend/app/routers/product_csv.py:223"}, "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-5c3874e9d1faf4a9", "name": "FastAPI POST `import_products_csv` without auth dependency \u2014 backend/app/routers/product_csv.py:282", "shortDescription": {"text": "FastAPI POST `import_products_csv` without auth dependency \u2014 backend/app/routers/product_csv.py:282"}, "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-85d71c498baaac62", "name": "FastAPI POST `import_skus_csv` without auth dependency \u2014 backend/app/routers/product_csv.py:336", "shortDescription": {"text": "FastAPI POST `import_skus_csv` without auth dependency \u2014 backend/app/routers/product_csv.py:336"}, "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-b5d43dab1f32b060", "name": "FastAPI POST `create_shop` without auth dependency \u2014 backend/app/routers/rakuten.py:136", "shortDescription": {"text": "FastAPI POST `create_shop` without auth dependency \u2014 backend/app/routers/rakuten.py:136"}, "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-77eabf8858aeb240", "name": "FastAPI PUT `update_shop` without auth dependency \u2014 backend/app/routers/rakuten.py:189", "shortDescription": {"text": "FastAPI PUT `update_shop` without auth dependency \u2014 backend/app/routers/rakuten.py:189"}, "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-ae93e5996ba02acd", "name": "FastAPI DELETE `delete_shop` without auth dependency \u2014 backend/app/routers/rakuten.py:251", "shortDescription": {"text": "FastAPI DELETE `delete_shop` without auth dependency \u2014 backend/app/routers/rakuten.py:251"}, "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-bf0a35330687fc64", "name": "FastAPI PUT `set_active_shop` without auth dependency \u2014 backend/app/routers/rakuten.py:267", "shortDescription": {"text": "FastAPI PUT `set_active_shop` without auth dependency \u2014 backend/app/routers/rakuten.py:267"}, "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-39181dad0eaefaeb", "name": "FastAPI POST `validate_connection` without auth dependency \u2014 backend/app/routers/rakuten.py:286", "shortDescription": {"text": "FastAPI POST `validate_connection` without auth dependency \u2014 backend/app/routers/rakuten.py:286"}, "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-c3ce9d6c394a3437", "name": "FastAPI POST `upload_product_name_master` without auth dependency \u2014 backend/app/routers/master_data.py:61", "shortDescription": {"text": "FastAPI POST `upload_product_name_master` without auth dependency \u2014 backend/app/routers/master_data.py:61"}, "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-b97211c39080f2b1", "name": "FastAPI POST `check_product_page_gap` without auth dependency \u2014 backend/app/routers/master_data.py:210", "shortDescription": {"text": "FastAPI POST `check_product_page_gap` without auth dependency \u2014 backend/app/routers/master_data.py:210"}, "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-4684bb16d148718b", "name": "FastAPI POST `fetch_product` without auth dependency \u2014 backend/app/routers/page_editor.py:111", "shortDescription": {"text": "FastAPI POST `fetch_product` without auth dependency \u2014 backend/app/routers/page_editor.py:111"}, "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-3c118eb7a8c315ea", "name": "FastAPI POST `update_product` without auth dependency \u2014 backend/app/routers/page_editor.py:165", "shortDescription": {"text": "FastAPI POST `update_product` without auth dependency \u2014 backend/app/routers/page_editor.py:165"}, "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-cc66c7a902a5676f", "name": "FastAPI POST `bulk_fetch_products` without auth dependency \u2014 backend/app/routers/page_editor.py:284", "shortDescription": {"text": "FastAPI POST `bulk_fetch_products` without auth dependency \u2014 backend/app/routers/page_editor.py:284"}, "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-b83f60348b734deb", "name": "FastAPI POST `bulk_update_products` without auth dependency \u2014 backend/app/routers/page_editor.py:312", "shortDescription": {"text": "FastAPI POST `bulk_update_products` without auth dependency \u2014 backend/app/routers/page_editor.py:312"}, "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-a9c280f82559e135", "name": "FastAPI POST `preview_changes` without auth dependency \u2014 backend/app/routers/page_editor.py:355", "shortDescription": {"text": "FastAPI POST `preview_changes` without auth dependency \u2014 backend/app/routers/page_editor.py:355"}, "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-3e4eb813a07625b4", "name": "FastAPI POST `import_downloaded_csv` without auth dependency \u2014 backend/app/routers/mercari_csv_import.py:20", "shortDescription": {"text": "FastAPI POST `import_downloaded_csv` without auth dependency \u2014 backend/app/routers/mercari_csv_import.py:20"}, "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-1a2c26e2ef1be28d", "name": "FastAPI POST `export_furimaru_diff_csv` without auth dependency \u2014 backend/app/routers/mercari_csv_import.py:41", "shortDescription": {"text": "FastAPI POST `export_furimaru_diff_csv` without auth dependency \u2014 backend/app/routers/mercari_csv_import.py:41"}, "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-bef1650cbc955542", "name": "FastAPI POST `export_manage_number_batches` without auth dependency \u2014 backend/app/routers/mercari_csv_import.py:74", "shortDescription": {"text": "FastAPI POST `export_manage_number_batches` without auth dependency \u2014 backend/app/routers/mercari_csv_import.py:74"}, "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-ccc92f36f05f3b71", "name": "FastAPI POST `import_item` without auth dependency \u2014 backend/app/routers/item_import.py:104", "shortDescription": {"text": "FastAPI POST `import_item` without auth dependency \u2014 backend/app/routers/item_import.py:104"}, "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-448bbc74c967313f", "name": "FastAPI POST `import_items_bulk` without auth dependency \u2014 backend/app/routers/item_import.py:238", "shortDescription": {"text": "FastAPI POST `import_items_bulk` without auth dependency \u2014 backend/app/routers/item_import.py:238"}, "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-aab1437e259cefac", "name": "FastAPI POST `export_csv` without auth dependency \u2014 backend/app/routers/mercari_csv_export.py:29", "shortDescription": {"text": "FastAPI POST `export_csv` without auth dependency \u2014 backend/app/routers/mercari_csv_export.py:29"}, "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-8fbd124690aaa72f", "name": "FastAPI POST `export_csv_by_ids` without auth dependency \u2014 backend/app/routers/mercari_csv_export.py:96", "shortDescription": {"text": "FastAPI POST `export_csv_by_ids` without auth dependency \u2014 backend/app/routers/mercari_csv_export.py:96"}, "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-3316a0871040d9c0", "name": "FastAPI POST `export_update_bundle_by_ids` without auth dependency \u2014 backend/app/routers/mercari_csv_export.py:133", "shortDescription": {"text": "FastAPI POST `export_update_bundle_by_ids` without auth dependency \u2014 backend/app/routers/mercari_csv_export.py:133"}, "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-cc5a07ffc06e9ab5", "name": "FastAPI POST `validate_images` without auth dependency \u2014 backend/app/routers/mercari_csv_export.py:184", "shortDescription": {"text": "FastAPI POST `validate_images` without auth dependency \u2014 backend/app/routers/mercari_csv_export.py:184"}, "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-8bad894f77ed05ec", "name": "FastAPI POST `upload_rakuten_folder` without auth dependency \u2014 backend/app/routers/rakuten_images.py:135", "shortDescription": {"text": "FastAPI POST `upload_rakuten_folder` without auth dependency \u2014 backend/app/routers/rakuten_images.py:135"}, "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-738d5f6c020d1217", "name": "FastAPI POST `upload_rakuten_files` without auth dependency \u2014 backend/app/routers/rakuten_images.py:246", "shortDescription": {"text": "FastAPI POST `upload_rakuten_files` without auth dependency \u2014 backend/app/routers/rakuten_images.py:246"}, "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-558cdbb5a31d3691", "name": "FastAPI POST `upload_rakuten_folder_stream` without auth dependency \u2014 backend/app/routers/rakuten_images.py:425", "shortDescription": {"text": "FastAPI POST `upload_rakuten_folder_stream` without auth dependency \u2014 backend/app/routers/rakuten_images.py:425"}, "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-14a6c2e3688506e6", "name": "FastAPI POST `upload_rakuten_files_stream` without auth dependency \u2014 backend/app/routers/rakuten_images.py:478", "shortDescription": {"text": "FastAPI POST `upload_rakuten_files_stream` without auth dependency \u2014 backend/app/routers/rakuten_images.py:478"}, "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-8263f23b395e0ca7", "name": "FastAPI POST `reload_defaults` without auth dependency \u2014 backend/app/routers/mercari_constants.py:249", "shortDescription": {"text": "FastAPI POST `reload_defaults` without auth dependency \u2014 backend/app/routers/mercari_constants.py:249"}, "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-931e8b3b4a57684a", "name": "FastAPI POST `generate_ai_image` without auth dependency \u2014 backend/app/routers/ai_image_generation.py:112", "shortDescription": {"text": "FastAPI POST `generate_ai_image` without auth dependency \u2014 backend/app/routers/ai_image_generation.py:112"}, "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-a10ab98868435599", "name": "FastAPI POST `generate_html` without auth dependency \u2014 backend/app/routers/html_generation.py:148", "shortDescription": {"text": "FastAPI POST `generate_html` without auth dependency \u2014 backend/app/routers/html_generation.py:148"}, "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-56ea7460d2792afd", "name": "FastAPI POST `optimize_images` without auth dependency \u2014 backend/app/routers/html_generation.py:218", "shortDescription": {"text": "FastAPI POST `optimize_images` without auth dependency \u2014 backend/app/routers/html_generation.py:218"}, "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-4fa6914a7a3aefe5", "name": "FastAPI POST `generate_flick_metadata` without auth dependency \u2014 backend/app/routers/html_generation.py:256", "shortDescription": {"text": "FastAPI POST `generate_flick_metadata` without auth dependency \u2014 backend/app/routers/html_generation.py:256"}, "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-8ebcfe571efe1d19", "name": "FastAPI POST `copy_images` without auth dependency \u2014 backend/app/routers/html_generation.py:301", "shortDescription": {"text": "FastAPI POST `copy_images` without auth dependency \u2014 backend/app/routers/html_generation.py:301"}, "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-a1583b7d7ee230b9", "name": "FastAPI POST `check_image_folder` without auth dependency \u2014 backend/app/routers/html_generation.py:324", "shortDescription": {"text": "FastAPI POST `check_image_folder` without auth dependency \u2014 backend/app/routers/html_generation.py:324"}, "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-d5b729064b7526b3", "name": "FastAPI POST `count_images` without auth dependency \u2014 backend/app/routers/html_generation.py:349", "shortDescription": {"text": "FastAPI POST `count_images` without auth dependency \u2014 backend/app/routers/html_generation.py:349"}, "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-c3548c5383cb6cec", "name": "FastAPI POST `cleanup_combined_images` without auth dependency \u2014 backend/app/routers/html_generation.py:369", "shortDescription": {"text": "FastAPI POST `cleanup_combined_images` without auth dependency \u2014 backend/app/routers/html_generation.py:369"}, "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-8e4f42347a1191df", "name": "FastAPI POST `sync_flick_metadata` without auth dependency \u2014 backend/app/routers/html_generation.py:409", "shortDescription": {"text": "FastAPI POST `sync_flick_metadata` without auth dependency \u2014 backend/app/routers/html_generation.py:409"}, "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-21248fc9fa8c8630", "name": "FastAPI POST `sync_auction_metadata` without auth dependency \u2014 backend/app/routers/html_generation.py:462", "shortDescription": {"text": "FastAPI POST `sync_auction_metadata` without auth dependency \u2014 backend/app/routers/html_generation.py:462"}, "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-954dec037ecc17ea", "name": "FastAPI PUT `update_settings` without auth dependency \u2014 backend/app/routers/settings.py:74", "shortDescription": {"text": "FastAPI PUT `update_settings` without auth dependency \u2014 backend/app/routers/settings.py:74"}, "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-aa62fad2a825412e", "name": "FastAPI POST `process_csv_by_path` without auth dependency \u2014 backend/app/routers/yahuoku_csv.py:47", "shortDescription": {"text": "FastAPI POST `process_csv_by_path` without auth dependency \u2014 backend/app/routers/yahuoku_csv.py:47"}, "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-0a0267a341d886c1", "name": "FastAPI POST `process_uploaded_csv` without auth dependency \u2014 backend/app/routers/yahuoku_csv.py:80", "shortDescription": {"text": "FastAPI POST `process_uploaded_csv` without auth dependency \u2014 backend/app/routers/yahuoku_csv.py:80"}, "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-4582249118421c5f", "name": "FastAPI POST `upload_image_pack` without auth dependency \u2014 backend/app/routers/yahoo_images.py:108", "shortDescription": {"text": "FastAPI POST `upload_image_pack` without auth dependency \u2014 backend/app/routers/yahoo_images.py:108"}, "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-dffbcb4ba92a1d74", "name": "FastAPI POST `create_zip_and_upload` without auth dependency \u2014 backend/app/routers/yahoo_images.py:128", "shortDescription": {"text": "FastAPI POST `create_zip_and_upload` without auth dependency \u2014 backend/app/routers/yahoo_images.py:128"}, "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-0a9d0d8481658fea", "name": "FastAPI POST `upload_from_folder` without auth dependency \u2014 backend/app/routers/yahoo_images.py:177", "shortDescription": {"text": "FastAPI POST `upload_from_folder` without auth dependency \u2014 backend/app/routers/yahoo_images.py:177"}, "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-d2debf9fd1c840f3", "name": "FastAPI POST `upload_from_folder_stream` without auth dependency \u2014 backend/app/routers/yahoo_images.py:389", "shortDescription": {"text": "FastAPI POST `upload_from_folder_stream` without auth dependency \u2014 backend/app/routers/yahoo_images.py:389"}, "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-1782c86ff78a00c8", "name": "FastAPI POST `create_zip_and_upload_stream` without auth dependency \u2014 backend/app/routers/yahoo_images.py:419", "shortDescription": {"text": "FastAPI POST `create_zip_and_upload_stream` without auth dependency \u2014 backend/app/routers/yahoo_images.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-b9d6587bbb6d8045", "name": "FastAPI POST `inspect_database_backup` without auth dependency \u2014 backend/app/routers/database_backup.py:61", "shortDescription": {"text": "FastAPI POST `inspect_database_backup` without auth dependency \u2014 backend/app/routers/database_backup.py:61"}, "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-df03cdd0192a0cad", "name": "FastAPI POST `create_database_backup` without auth dependency \u2014 backend/app/routers/database_backup.py:73", "shortDescription": {"text": "FastAPI POST `create_database_backup` without auth dependency \u2014 backend/app/routers/database_backup.py:73"}, "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-7ef13416adba00e4", "name": "FastAPI POST `restore_database_backup` without auth dependency \u2014 backend/app/routers/database_backup.py:97", "shortDescription": {"text": "FastAPI POST `restore_database_backup` without auth dependency \u2014 backend/app/routers/database_backup.py:97"}, "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-9a0823ddeb71999d", "name": "FastAPI POST `search_products` without auth dependency \u2014 backend/app/routers/product.py:110", "shortDescription": {"text": "FastAPI POST `search_products` without auth dependency \u2014 backend/app/routers/product.py:110"}, "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-b68ffb5ce50cb1e0", "name": "FastAPI POST `save_product_api` without auth dependency \u2014 backend/app/routers/product.py:152", "shortDescription": {"text": "FastAPI POST `save_product_api` without auth dependency \u2014 backend/app/routers/product.py:152"}, "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-40ba60e7c03d5185", "name": "FastAPI POST `validate_product` without auth dependency \u2014 backend/app/routers/product.py:165", "shortDescription": {"text": "FastAPI POST `validate_product` without auth dependency \u2014 backend/app/routers/product.py:165"}, "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-1d6c3ad5a4dec928", "name": "FastAPI POST `batch_update_control_column` without auth dependency \u2014 backend/app/routers/product.py:172", "shortDescription": {"text": "FastAPI POST `batch_update_control_column` without auth dependency \u2014 backend/app/routers/product.py:172"}, "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-561ae7caa23d8566", "name": "FastAPI POST `batch_delete_products` without auth dependency \u2014 backend/app/routers/product.py:198", "shortDescription": {"text": "FastAPI POST `batch_delete_products` without auth dependency \u2014 backend/app/routers/product.py:198"}, "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-5e621195d83b4f5b", "name": "FastAPI POST `duplicate_product` without auth dependency \u2014 backend/app/routers/product.py:210", "shortDescription": {"text": "FastAPI POST `duplicate_product` without auth dependency \u2014 backend/app/routers/product.py:210"}, "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-54ade36b9c13247d", "name": "FastAPI POST `copy_related_products` without auth dependency \u2014 backend/app/routers/product.py:233", "shortDescription": {"text": "FastAPI POST `copy_related_products` without auth dependency \u2014 backend/app/routers/product.py:233"}, "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-4712e9bc4f286351", "name": "FastAPI POST `convert_r_to_y` without auth dependency \u2014 backend/app/routers/product.py:294", "shortDescription": {"text": "FastAPI POST `convert_r_to_y` without auth dependency \u2014 backend/app/routers/product.py:294"}, "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-dd29e7f32527c6ce", "name": "FastAPI POST `upload_product_images` without auth dependency \u2014 backend/app/routers/product.py:318", "shortDescription": {"text": "FastAPI POST `upload_product_images` without auth dependency \u2014 backend/app/routers/product.py:318"}, "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-6be472ed031e97aa", "name": "FastAPI POST `preview_rakuten_import` without auth dependency \u2014 backend/app/routers/mercari_rakuten_import.py:344", "shortDescription": {"text": "FastAPI POST `preview_rakuten_import` without auth dependency \u2014 backend/app/routers/mercari_rakuten_import.py:344"}, "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-130af61de3a97958", "name": "FastAPI POST `import_rakuten_products` without auth dependency \u2014 backend/app/routers/mercari_rakuten_import.py:436", "shortDescription": {"text": "FastAPI POST `import_rakuten_products` without auth dependency \u2014 backend/app/routers/mercari_rakuten_import.py:436"}, "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-4c1022175e4b3ba2", "name": "FastAPI POST `save_preview_products` without auth dependency \u2014 backend/app/routers/mercari_rakuten_import.py:586", "shortDescription": {"text": "FastAPI POST `save_preview_products` without auth dependency \u2014 backend/app/routers/mercari_rakuten_import.py:586"}, "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-cd8c1fd214c3112c", "name": "FastAPI POST `authenticate` without auth dependency \u2014 backend/app/routers/inventory_master.py:126", "shortDescription": {"text": "FastAPI POST `authenticate` without auth dependency \u2014 backend/app/routers/inventory_master.py:126"}, "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-023e9e9b61d54c0a", "name": "FastAPI POST `create_sheet` without auth dependency \u2014 backend/app/routers/inventory_master.py:137", "shortDescription": {"text": "FastAPI POST `create_sheet` without auth dependency \u2014 backend/app/routers/inventory_master.py:137"}, "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-f302681c859d07a7", "name": "FastAPI POST `set_spreadsheet` without auth dependency \u2014 backend/app/routers/inventory_master.py:153", "shortDescription": {"text": "FastAPI POST `set_spreadsheet` without auth dependency \u2014 backend/app/routers/inventory_master.py:153"}, "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-850afc9fe1e61a0b", "name": "FastAPI POST `set_header` without auth dependency \u2014 backend/app/routers/inventory_master.py:161", "shortDescription": {"text": "FastAPI POST `set_header` without auth dependency \u2014 backend/app/routers/inventory_master.py:161"}, "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-fd0462e631d85de5", "name": "FastAPI POST `clear_data` without auth dependency \u2014 backend/app/routers/inventory_master.py:183", "shortDescription": {"text": "FastAPI POST `clear_data` without auth dependency \u2014 backend/app/routers/inventory_master.py:183"}, "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-57aaeb985335cda2", "name": "FastAPI POST `update_quantity` without auth dependency \u2014 backend/app/routers/inventory_master.py:249", "shortDescription": {"text": "FastAPI POST `update_quantity` without auth dependency \u2014 backend/app/routers/inventory_master.py:249"}, "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-493345ceccef91c1", "name": "FastAPI POST `upsert_item` without auth dependency \u2014 backend/app/routers/inventory_master.py:269", "shortDescription": {"text": "FastAPI POST `upsert_item` without auth dependency \u2014 backend/app/routers/inventory_master.py:269"}, "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-fbcd4dde2a0a5a46", "name": "FastAPI POST `sync_from_mall` without auth dependency \u2014 backend/app/routers/inventory_master.py:351", "shortDescription": {"text": "FastAPI POST `sync_from_mall` without auth dependency \u2014 backend/app/routers/inventory_master.py:351"}, "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-bba3619d59c9e4ab", "name": "FastAPI POST `import_rakuten_csv` without auth dependency \u2014 backend/app/routers/inventory_master.py:481", "shortDescription": {"text": "FastAPI POST `import_rakuten_csv` without auth dependency \u2014 backend/app/routers/inventory_master.py:481"}, "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-59dfe5f16489be22", "name": "FastAPI POST `preview_migration` without auth dependency \u2014 backend/app/routers/migration.py:188", "shortDescription": {"text": "FastAPI POST `preview_migration` without auth dependency \u2014 backend/app/routers/migration.py:188"}, "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-d9ad7c5f2ebf5c10", "name": "FastAPI POST `execute_migration` without auth dependency \u2014 backend/app/routers/migration.py:256", "shortDescription": {"text": "FastAPI POST `execute_migration` without auth dependency \u2014 backend/app/routers/migration.py:256"}, "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-372887b3a42cb842", "name": "FastAPI POST `bulk_get_inventory` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:168", "shortDescription": {"text": "FastAPI POST `bulk_get_inventory` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:168"}, "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-e330012e61cbce6e", "name": "FastAPI PUT `update_inventory_item` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:293", "shortDescription": {"text": "FastAPI PUT `update_inventory_item` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:293"}, "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-4f7e0cb90e6bb83d", "name": "FastAPI POST `bulk_update_inventory` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:436", "shortDescription": {"text": "FastAPI POST `bulk_update_inventory` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:436"}, "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-1f969d7bfbb90b2e", "name": "FastAPI DELETE `delete_inventory_item` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:582", "shortDescription": {"text": "FastAPI DELETE `delete_inventory_item` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:582"}, "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-398267fb2544e553", "name": "FastAPI PUT `update_product_hide_item` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:652", "shortDescription": {"text": "FastAPI PUT `update_product_hide_item` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:652"}, "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-3a38be400c3819c5", "name": "FastAPI PUT `bulk_update_product_hide_item` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:685", "shortDescription": {"text": "FastAPI PUT `bulk_update_product_hide_item` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:685"}, "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-375c9785b655650b", "name": "FastAPI DELETE `delete_product` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:744", "shortDescription": {"text": "FastAPI DELETE `delete_product` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:744"}, "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-38545805fce5a758", "name": "FastAPI POST `create_material_spec` without auth dependency \u2014 backend/app/routers/material_specs.py:105", "shortDescription": {"text": "FastAPI POST `create_material_spec` without auth dependency \u2014 backend/app/routers/material_specs.py:105"}, "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-e492caf95666b90e", "name": "FastAPI PUT `update_material_spec` without auth dependency \u2014 backend/app/routers/material_specs.py:150", "shortDescription": {"text": "FastAPI PUT `update_material_spec` without auth dependency \u2014 backend/app/routers/material_specs.py:150"}, "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-0bb916b185b0ffcd", "name": "FastAPI DELETE `delete_material_spec` without auth dependency \u2014 backend/app/routers/material_specs.py:214", "shortDescription": {"text": "FastAPI DELETE `delete_material_spec` without auth dependency \u2014 backend/app/routers/material_specs.py:214"}, "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-fa67f819a2f652da", "name": "FastAPI POST `restore_material_spec` without auth dependency \u2014 backend/app/routers/material_specs.py:248", "shortDescription": {"text": "FastAPI POST `restore_material_spec` without auth dependency \u2014 backend/app/routers/material_specs.py:248"}, "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-eb0f2aa699cbe4d3", "name": "FastAPI DELETE `clear_logs` without auth dependency \u2014 backend/app/routers/unified_logs.py:101", "shortDescription": {"text": "FastAPI DELETE `clear_logs` without auth dependency \u2014 backend/app/routers/unified_logs.py:101"}, "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-6b89204cf28c5567", "name": "FastAPI DELETE `remove_log` without auth dependency \u2014 backend/app/routers/unified_logs.py:119", "shortDescription": {"text": "FastAPI DELETE `remove_log` without auth dependency \u2014 backend/app/routers/unified_logs.py:119"}, "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-01d76638a180dc60", "name": "FastAPI POST `refresh_sku_mapping` without auth dependency \u2014 backend/app/routers/mercari_inventory.py:20", "shortDescription": {"text": "FastAPI POST `refresh_sku_mapping` without auth dependency \u2014 backend/app/routers/mercari_inventory.py:20"}, "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-f5c60f3d410c7a3b", "name": "FastAPI POST `sync_inventory_from_rakuten` without auth dependency \u2014 backend/app/routers/mercari_inventory.py:47", "shortDescription": {"text": "FastAPI POST `sync_inventory_from_rakuten` without auth dependency \u2014 backend/app/routers/mercari_inventory.py:47"}, "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-f2558cbf44738778", "name": "FastAPI POST `generate` without auth dependency \u2014 backend/tools/local_gemma_service/run_service.py:201", "shortDescription": {"text": "FastAPI POST `generate` without auth dependency \u2014 backend/tools/local_gemma_service/run_service.py:201"}, "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-bd9dfd3258f39628", "name": "Dangling fetch: GET /api/ai-assist/status (frontend/src/lib/api/ai.ts:32)", "shortDescription": {"text": "Dangling fetch: GET /api/ai-assist/status (frontend/src/lib/api/ai.ts:32)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:32` calls `GET /api/ai-assist/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-assist/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ea9b6b95b966a54f", "name": "Dangling fetch: POST /api/ai-assist/product-name (frontend/src/lib/api/ai.ts:40)", "shortDescription": {"text": "Dangling fetch: POST /api/ai-assist/product-name (frontend/src/lib/api/ai.ts:40)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:40` calls `POST /api/ai-assist/product-name` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-assist/product-name`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dd4ebc6b3664f971", "name": "Dangling fetch: POST /api/ai-assist/catchcopy (frontend/src/lib/api/ai.ts:55)", "shortDescription": {"text": "Dangling fetch: POST /api/ai-assist/catchcopy (frontend/src/lib/api/ai.ts:55)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:55` calls `POST /api/ai-assist/catchcopy` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-assist/catchcopy`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-99b9250324aeab41", "name": "Dangling fetch: POST /api/ai-assist/features (frontend/src/lib/api/ai.ts:70)", "shortDescription": {"text": "Dangling fetch: POST /api/ai-assist/features (frontend/src/lib/api/ai.ts:70)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:70` calls `POST /api/ai-assist/features` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-assist/features`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a518c3d27d9b0444", "name": "Dangling fetch: POST /api/ai-assist/api-key (frontend/src/lib/api/ai.ts:82)", "shortDescription": {"text": "Dangling fetch: POST /api/ai-assist/api-key (frontend/src/lib/api/ai.ts:82)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:82` calls `POST /api/ai-assist/api-key` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-assist/api-key`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8054d22d5c516492", "name": "Dangling fetch: DELETE /api/ai-assist/api-key (frontend/src/lib/api/ai.ts:90)", "shortDescription": {"text": "Dangling fetch: DELETE /api/ai-assist/api-key (frontend/src/lib/api/ai.ts:90)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:90` calls `DELETE /api/ai-assist/api-key` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-assist/api-key`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a0b09ea58c78d29f", "name": "Dangling fetch: POST /api/ai-assist/record-selection (frontend/src/lib/api/ai.ts:99)", "shortDescription": {"text": "Dangling fetch: POST /api/ai-assist/record-selection (frontend/src/lib/api/ai.ts:99)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:99` calls `POST /api/ai-assist/record-selection` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-assist/record-selection`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-768e262e5a3a969e", "name": "Dangling fetch: GET /api/ai-assist/usage-stats (frontend/src/lib/api/ai.ts:107)", "shortDescription": {"text": "Dangling fetch: GET /api/ai-assist/usage-stats (frontend/src/lib/api/ai.ts:107)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:107` calls `GET /api/ai-assist/usage-stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-assist/usage-stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-676d6896344343df", "name": "Dangling fetch: POST /api/ai-assist/clear-cache (frontend/src/lib/api/ai.ts:112)", "shortDescription": {"text": "Dangling fetch: POST /api/ai-assist/clear-cache (frontend/src/lib/api/ai.ts:112)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:112` calls `POST /api/ai-assist/clear-cache` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-assist/clear-cache`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3799cf304b78edd4", "name": "Dangling fetch: GET /api/ai-assist/settings (frontend/src/lib/api/ai.ts:119)", "shortDescription": {"text": "Dangling fetch: GET /api/ai-assist/settings (frontend/src/lib/api/ai.ts:119)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:119` calls `GET /api/ai-assist/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-assist/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e74d3df92b63688a", "name": "Dangling fetch: PUT /api/ai-assist/settings (frontend/src/lib/api/ai.ts:124)", "shortDescription": {"text": "Dangling fetch: PUT /api/ai-assist/settings (frontend/src/lib/api/ai.ts:124)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:124` calls `PUT /api/ai-assist/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-assist/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4801915463e0922e", "name": "Dangling fetch: POST /api/ai-assist/test-local (frontend/src/lib/api/ai.ts:132)", "shortDescription": {"text": "Dangling fetch: POST /api/ai-assist/test-local (frontend/src/lib/api/ai.ts:132)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:132` calls `POST /api/ai-assist/test-local` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-assist/test-local`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c1f06b1f2a03da93", "name": "Dangling fetch: POST /api/ai-assist/test-ollama (frontend/src/lib/api/ai.ts:140)", "shortDescription": {"text": "Dangling fetch: POST /api/ai-assist/test-ollama (frontend/src/lib/api/ai.ts:140)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:140` calls `POST /api/ai-assist/test-ollama` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-assist/test-ollama`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7baf807815598bf9", "name": "Dangling fetch: POST /api/ai-assist/ollama/pull (frontend/src/lib/api/ai.ts:153)", "shortDescription": {"text": "Dangling fetch: POST /api/ai-assist/ollama/pull (frontend/src/lib/api/ai.ts:153)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:153` calls `POST /api/ai-assist/ollama/pull` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-assist/ollama/pull`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-89cfe614c144fa6e", "name": "Dangling fetch: POST /api/ai-assist/draft-product (frontend/src/lib/api/ai.ts:164)", "shortDescription": {"text": "Dangling fetch: POST /api/ai-assist/draft-product (frontend/src/lib/api/ai.ts:164)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:164` calls `POST /api/ai-assist/draft-product` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-assist/draft-product`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-91f2cd36653f6bc8", "name": "Dangling fetch: GET /api/ai-image/status (frontend/src/lib/api/ai.ts:173)", "shortDescription": {"text": "Dangling fetch: GET /api/ai-image/status (frontend/src/lib/api/ai.ts:173)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:173` calls `GET /api/ai-image/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-image/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c2c262040cc8a700", "name": "Dangling fetch: POST /api/ai-image/generate (frontend/src/lib/api/ai.ts:181)", "shortDescription": {"text": "Dangling fetch: POST /api/ai-image/generate (frontend/src/lib/api/ai.ts:181)"}, "fullDescription": {"text": "`frontend/src/lib/api/ai.ts:181` calls `POST /api/ai-image/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ai-image/generate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d297e7464be4f567", "name": "Dangling fetch: POST /api/price/sync-from-rakuten${query} (frontend/src/lib/api/price.ts:167)", "shortDescription": {"text": "Dangling fetch: POST /api/price/sync-from-rakuten${query} (frontend/src/lib/api/price.ts:167)"}, "fullDescription": {"text": "`frontend/src/lib/api/price.ts:167` calls `POST /api/price/sync-from-rakuten${query}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/price/sync-from-rakuten/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aef9c2143ed866fd", "name": "Dangling fetch: GET /api/yahoo/status (frontend/src/lib/api/yahoo.ts:205)", "shortDescription": {"text": "Dangling fetch: GET /api/yahoo/status (frontend/src/lib/api/yahoo.ts:205)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:205` calls `GET /api/yahoo/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-504ad5727b776af7", "name": "Dangling fetch: POST /api/yahoo/shops (frontend/src/lib/api/yahoo.ts:212)", "shortDescription": {"text": "Dangling fetch: POST /api/yahoo/shops (frontend/src/lib/api/yahoo.ts:212)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:212` calls `POST /api/yahoo/shops` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/shops`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7077943610d0aedb", "name": "Dangling fetch: PUT /api/yahoo/shops/${shopId} (frontend/src/lib/api/yahoo.ts:222)", "shortDescription": {"text": "Dangling fetch: PUT /api/yahoo/shops/${shopId} (frontend/src/lib/api/yahoo.ts:222)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:222` calls `PUT /api/yahoo/shops/${shopId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/shops/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d430c91a29b575e6", "name": "Dangling fetch: DELETE /api/yahoo/shops/${shopId} (frontend/src/lib/api/yahoo.ts:232)", "shortDescription": {"text": "Dangling fetch: DELETE /api/yahoo/shops/${shopId} (frontend/src/lib/api/yahoo.ts:232)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:232` calls `DELETE /api/yahoo/shops/${shopId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/shops/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c76966ef9bcb96b0", "name": "Dangling fetch: PUT /api/yahoo/active-shop?shop_id=${shopId} (frontend/src/lib/api/yahoo.ts:241)", "shortDescription": {"text": "Dangling fetch: PUT /api/yahoo/active-shop?shop_id=${shopId} (frontend/src/lib/api/yahoo.ts:241)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:241` calls `PUT /api/yahoo/active-shop?shop_id=${shopId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/active-shop`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d5f5bb613943afca", "name": "Dangling fetch: GET /api/yahoo/auth/url?${params} (frontend/src/lib/api/yahoo.ts:259)", "shortDescription": {"text": "Dangling fetch: GET /api/yahoo/auth/url?${params} (frontend/src/lib/api/yahoo.ts:259)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:259` calls `GET /api/yahoo/auth/url?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/auth/url`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b1b478e4c05c3269", "name": "Dangling fetch: POST /api/yahoo/validate (frontend/src/lib/api/yahoo.ts:266)", "shortDescription": {"text": "Dangling fetch: POST /api/yahoo/validate (frontend/src/lib/api/yahoo.ts:266)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:266` calls `POST /api/yahoo/validate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/validate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b99ad71db6de307d", "name": "Dangling fetch: GET /api/yahoo/inventory/item?${params} (frontend/src/lib/api/yahoo.ts:283)", "shortDescription": {"text": "Dangling fetch: GET /api/yahoo/inventory/item?${params} (frontend/src/lib/api/yahoo.ts:283)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:283` calls `GET /api/yahoo/inventory/item?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/inventory/item`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b2a1935a9ab61dcf", "name": "Dangling fetch: POST /api/yahoo/inventory/bulk-get?${params} (frontend/src/lib/api/yahoo.ts:292)", "shortDescription": {"text": "Dangling fetch: POST /api/yahoo/inventory/bulk-get?${params} (frontend/src/lib/api/yahoo.ts:292)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:292` calls `POST /api/yahoo/inventory/bulk-get?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/inventory/bulk-get`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7bea68d040dd44b9", "name": "Dangling fetch: GET /api/yahoo/inventory/search?${params} (frontend/src/lib/api/yahoo.ts:316)", "shortDescription": {"text": "Dangling fetch: GET /api/yahoo/inventory/search?${params} (frontend/src/lib/api/yahoo.ts:316)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:316` calls `GET /api/yahoo/inventory/search?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/inventory/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8400522651ac3887", "name": "Dangling fetch: PUT /api/yahoo/inventory/item?${params} (frontend/src/lib/api/yahoo.ts:338)", "shortDescription": {"text": "Dangling fetch: PUT /api/yahoo/inventory/item?${params} (frontend/src/lib/api/yahoo.ts:338)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:338` calls `PUT /api/yahoo/inventory/item?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/inventory/item`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-33cd7900c3f769df", "name": "Dangling fetch: POST /api/yahoo/inventory/bulk-update${params} (frontend/src/lib/api/yahoo.ts:351)", "shortDescription": {"text": "Dangling fetch: POST /api/yahoo/inventory/bulk-update${params} (frontend/src/lib/api/yahoo.ts:351)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:351` calls `POST /api/yahoo/inventory/bulk-update${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/inventory/bulk-update/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-31331251b7851e11", "name": "Dangling fetch: GET /api/yahoo/product/${itemCode}${params} (frontend/src/lib/api/yahoo.ts:366)", "shortDescription": {"text": "Dangling fetch: GET /api/yahoo/product/${itemCode}${params} (frontend/src/lib/api/yahoo.ts:366)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:366` calls `GET /api/yahoo/product/${itemCode}${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/product/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-970202a26e788868", "name": "Dangling fetch: POST /api/yahoo/delivery-banner/analyze (frontend/src/lib/api/yahoo.ts:372)", "shortDescription": {"text": "Dangling fetch: POST /api/yahoo/delivery-banner/analyze (frontend/src/lib/api/yahoo.ts:372)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:372` calls `POST /api/yahoo/delivery-banner/analyze` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/delivery-banner/analyze`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-470815f5d8f14100", "name": "Dangling fetch: POST /api/yahoo/delivery-banner/apply (frontend/src/lib/api/yahoo.ts:381)", "shortDescription": {"text": "Dangling fetch: POST /api/yahoo/delivery-banner/apply (frontend/src/lib/api/yahoo.ts:381)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:381` calls `POST /api/yahoo/delivery-banner/apply` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/delivery-banner/apply`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b9c6474cd6a2b292", "name": "Dangling fetch: PUT /api/yahoo/item/${itemCode}/display${params} (frontend/src/lib/api/yahoo.ts:481)", "shortDescription": {"text": "Dangling fetch: PUT /api/yahoo/item/${itemCode}/display${params} (frontend/src/lib/api/yahoo.ts:481)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:481` calls `PUT /api/yahoo/item/${itemCode}/display${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/item/<p>/display/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-58adbb4180107140", "name": "Dangling fetch: PUT /api/yahoo/items/bulk-display${params} (frontend/src/lib/api/yahoo.ts:499)", "shortDescription": {"text": "Dangling fetch: PUT /api/yahoo/items/bulk-display${params} (frontend/src/lib/api/yahoo.ts:499)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:499` calls `PUT /api/yahoo/items/bulk-display${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/items/bulk-display/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8c580c3ce25693a1", "name": "Dangling fetch: GET /api/yahoo/inventory/range?${params.toString()} (frontend/src/lib/api/yahoo.ts:557)", "shortDescription": {"text": "Dangling fetch: GET /api/yahoo/inventory/range?${params.toString()} (frontend/src/lib/api/yahoo.ts:557)"}, "fullDescription": {"text": "`frontend/src/lib/api/yahoo.ts:557` calls `GET /api/yahoo/inventory/range?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahoo/inventory/range`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aa616320a6772bd4", "name": "Dangling fetch: POST /api/product/convert_r_to_y (frontend/src/lib/api/product.ts:25)", "shortDescription": {"text": "Dangling fetch: POST /api/product/convert_r_to_y (frontend/src/lib/api/product.ts:25)"}, "fullDescription": {"text": "`frontend/src/lib/api/product.ts:25` calls `POST /api/product/convert_r_to_y` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/product/convert_r_to_y`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1169d23ab41947ea", "name": "Dangling fetch: POST /api/product/validate (frontend/src/lib/api/product.ts:33)", "shortDescription": {"text": "Dangling fetch: POST /api/product/validate (frontend/src/lib/api/product.ts:33)"}, "fullDescription": {"text": "`frontend/src/lib/api/product.ts:33` calls `POST /api/product/validate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/product/validate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e867e70e8d5bd5d1", "name": "Dangling fetch: POST /api/product/save (frontend/src/lib/api/product.ts:41)", "shortDescription": {"text": "Dangling fetch: POST /api/product/save (frontend/src/lib/api/product.ts:41)"}, "fullDescription": {"text": "`frontend/src/lib/api/product.ts:41` calls `POST /api/product/save` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/product/save`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5548b80396cc0b87", "name": "Dangling fetch: POST /api/product/search (frontend/src/lib/api/product.ts:96)", "shortDescription": {"text": "Dangling fetch: POST /api/product/search (frontend/src/lib/api/product.ts:96)"}, "fullDescription": {"text": "`frontend/src/lib/api/product.ts:96` calls `POST /api/product/search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/product/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a539afa6c812fd2f", "name": "Dangling fetch: POST /api/product/copy-related (frontend/src/lib/api/product.ts:106)", "shortDescription": {"text": "Dangling fetch: POST /api/product/copy-related (frontend/src/lib/api/product.ts:106)"}, "fullDescription": {"text": "`frontend/src/lib/api/product.ts:106` calls `POST /api/product/copy-related` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/product/copy-related`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-edac314b3cb1a3bc", "name": "Dangling fetch: POST /api/product/batch-control-column (frontend/src/lib/api/product.ts:116)", "shortDescription": {"text": "Dangling fetch: POST /api/product/batch-control-column (frontend/src/lib/api/product.ts:116)"}, "fullDescription": {"text": "`frontend/src/lib/api/product.ts:116` calls `POST /api/product/batch-control-column` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/product/batch-control-column`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4d1abda88868c203", "name": "Dangling fetch: POST /api/product/batch-delete (frontend/src/lib/api/product.ts:124)", "shortDescription": {"text": "Dangling fetch: POST /api/product/batch-delete (frontend/src/lib/api/product.ts:124)"}, "fullDescription": {"text": "`frontend/src/lib/api/product.ts:124` calls `POST /api/product/batch-delete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/product/batch-delete`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e31a82f15b8e1af0", "name": "Dangling fetch: POST /api/product/duplicate (frontend/src/lib/api/product.ts:132)", "shortDescription": {"text": "Dangling fetch: POST /api/product/duplicate (frontend/src/lib/api/product.ts:132)"}, "fullDescription": {"text": "`frontend/src/lib/api/product.ts:132` calls `POST /api/product/duplicate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/product/duplicate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-89d3b70965b0959b", "name": "Dangling fetch: POST /api/image/optimize-batch (frontend/src/lib/api/image.ts:43)", "shortDescription": {"text": "Dangling fetch: POST /api/image/optimize-batch (frontend/src/lib/api/image.ts:43)"}, "fullDescription": {"text": "`frontend/src/lib/api/image.ts:43` calls `POST /api/image/optimize-batch` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/image/optimize-batch`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b6281c8a9487f484", "name": "Dangling fetch: GET /api/image/pillow-status (frontend/src/lib/api/image.ts:51)", "shortDescription": {"text": "Dangling fetch: GET /api/image/pillow-status (frontend/src/lib/api/image.ts:51)"}, "fullDescription": {"text": "`frontend/src/lib/api/image.ts:51` calls `GET /api/image/pillow-status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/image/pillow-status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc7299e908a3887b", "name": "Dangling fetch: POST /api/image/optimize-paths (frontend/src/lib/api/image.ts:58)", "shortDescription": {"text": "Dangling fetch: POST /api/image/optimize-paths (frontend/src/lib/api/image.ts:58)"}, "fullDescription": {"text": "`frontend/src/lib/api/image.ts:58` calls `POST /api/image/optimize-paths` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/image/optimize-paths`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-25d469c95067092c", "name": "Dangling fetch: POST /api/image/combine-manual (frontend/src/lib/api/image.ts:66)", "shortDescription": {"text": "Dangling fetch: POST /api/image/combine-manual (frontend/src/lib/api/image.ts:66)"}, "fullDescription": {"text": "`frontend/src/lib/api/image.ts:66` calls `POST /api/image/combine-manual` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/image/combine-manual`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f6b126c8a908ddb2", "name": "Dangling fetch: POST /api/csv-export/export-and-generate (frontend/src/lib/api/csv.ts:27)", "shortDescription": {"text": "Dangling fetch: POST /api/csv-export/export-and-generate (frontend/src/lib/api/csv.ts:27)"}, "fullDescription": {"text": "`frontend/src/lib/api/csv.ts:27` calls `POST /api/csv-export/export-and-generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/csv-export/export-and-generate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-42df1bc10818a941", "name": "Dangling fetch: GET /api/csv-export/csharp-status (frontend/src/lib/api/csv.ts:117)", "shortDescription": {"text": "Dangling fetch: GET /api/csv-export/csharp-status (frontend/src/lib/api/csv.ts:117)"}, "fullDescription": {"text": "`frontend/src/lib/api/csv.ts:117` calls `GET /api/csv-export/csharp-status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/csv-export/csharp-status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a6edf70a2d63f577", "name": "Dangling fetch: POST /api/product-csv/export/all?output_dir=${encodeURIComponent(outputDir)} (frontend/src/lib/api/csv.t", "shortDescription": {"text": "Dangling fetch: POST /api/product-csv/export/all?output_dir=${encodeURIComponent(outputDir)} (frontend/src/lib/api/csv.ts:136)"}, "fullDescription": {"text": "`frontend/src/lib/api/csv.ts:136` calls `POST /api/product-csv/export/all?output_dir=${encodeURIComponent(outputDir)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/product-csv/export/all`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0cc42f90a86393cd", "name": "Dangling fetch: POST /api/product-csv/backup?backup_dir=${encodeURIComponent(backupDir)} (frontend/src/lib/api/csv.ts:15", "shortDescription": {"text": "Dangling fetch: POST /api/product-csv/backup?backup_dir=${encodeURIComponent(backupDir)} (frontend/src/lib/api/csv.ts:158)"}, "fullDescription": {"text": "`frontend/src/lib/api/csv.ts:158` calls `POST /api/product-csv/backup?backup_dir=${encodeURIComponent(backupDir)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/product-csv/backup`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d21c9dff22bebc35", "name": "Dangling fetch: POST /api/migration/preview (frontend/src/lib/api/csv.ts:166)", "shortDescription": {"text": "Dangling fetch: POST /api/migration/preview (frontend/src/lib/api/csv.ts:166)"}, "fullDescription": {"text": "`frontend/src/lib/api/csv.ts:166` calls `POST /api/migration/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/migration/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a6fe56a4da316902", "name": "Dangling fetch: POST /api/migration/execute (frontend/src/lib/api/csv.ts:174)", "shortDescription": {"text": "Dangling fetch: POST /api/migration/execute (frontend/src/lib/api/csv.ts:174)"}, "fullDescription": {"text": "`frontend/src/lib/api/csv.ts:174` calls `POST /api/migration/execute` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/migration/execute`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f5c2200ee8a3ec2e", "name": "Dangling fetch: POST /api/yahuoku/process (frontend/src/lib/api/csv.ts:182)", "shortDescription": {"text": "Dangling fetch: POST /api/yahuoku/process (frontend/src/lib/api/csv.ts:182)"}, "fullDescription": {"text": "`frontend/src/lib/api/csv.ts:182` calls `POST /api/yahuoku/process` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/yahuoku/process`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-08f1dd0da84fc5b8", "name": "Dangling fetch: POST /api/import/item (frontend/src/lib/api/import.ts:50)", "shortDescription": {"text": "Dangling fetch: POST /api/import/item (frontend/src/lib/api/import.ts:50)"}, "fullDescription": {"text": "`frontend/src/lib/api/import.ts:50` calls `POST /api/import/item` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/import/item`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cf1320a499f9df10", "name": "Dangling fetch: POST /api/import/item (frontend/src/lib/api/import.ts:72)", "shortDescription": {"text": "Dangling fetch: POST /api/import/item (frontend/src/lib/api/import.ts:72)"}, "fullDescription": {"text": "`frontend/src/lib/api/import.ts:72` calls `POST /api/import/item` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/import/item`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c887d1c742979806", "name": "Dangling fetch: POST /api/import/items/bulk (frontend/src/lib/api/import.ts:94)", "shortDescription": {"text": "Dangling fetch: POST /api/import/items/bulk (frontend/src/lib/api/import.ts:94)"}, "fullDescription": {"text": "`frontend/src/lib/api/import.ts:94` calls `POST /api/import/items/bulk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/import/items/bulk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc18b71c27e0fa71", "name": "Dangling fetch: GET /api/material-specs/${specId} (frontend/src/lib/api/material-specs.ts:41)", "shortDescription": {"text": "Dangling fetch: GET /api/material-specs/${specId} (frontend/src/lib/api/material-specs.ts:41)"}, "fullDescription": {"text": "`frontend/src/lib/api/material-specs.ts:41` calls `GET /api/material-specs/${specId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/material-specs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e530884a6e123141", "name": "Dangling fetch: POST /api/material-specs (frontend/src/lib/api/material-specs.ts:46)", "shortDescription": {"text": "Dangling fetch: POST /api/material-specs (frontend/src/lib/api/material-specs.ts:46)"}, "fullDescription": {"text": "`frontend/src/lib/api/material-specs.ts:46` calls `POST /api/material-specs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/material-specs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-30f93952a01f3814", "name": "Dangling fetch: PUT /api/material-specs/${specId} (frontend/src/lib/api/material-specs.ts:58)", "shortDescription": {"text": "Dangling fetch: PUT /api/material-specs/${specId} (frontend/src/lib/api/material-specs.ts:58)"}, "fullDescription": {"text": "`frontend/src/lib/api/material-specs.ts:58` calls `PUT /api/material-specs/${specId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/material-specs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-abdc1ef56f553c52", "name": "Dangling fetch: DELETE /api/material-specs/${specId} (frontend/src/lib/api/material-specs.ts:67)", "shortDescription": {"text": "Dangling fetch: DELETE /api/material-specs/${specId} (frontend/src/lib/api/material-specs.ts:67)"}, "fullDescription": {"text": "`frontend/src/lib/api/material-specs.ts:67` calls `DELETE /api/material-specs/${specId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/material-specs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-328e6b37fe51e9eb", "name": "Dangling fetch: POST /api/material-specs/${specId}/restore (frontend/src/lib/api/material-specs.ts:76)", "shortDescription": {"text": "Dangling fetch: POST /api/material-specs/${specId}/restore (frontend/src/lib/api/material-specs.ts:76)"}, "fullDescription": {"text": "`frontend/src/lib/api/material-specs.ts:76` calls `POST /api/material-specs/${specId}/restore` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/material-specs/<p>/restore`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b4b30063da1c708", "name": "Dangling fetch: POST /api/delivery-widget/leadtime/refresh (frontend/src/lib/api/delivery-widget.ts:129)", "shortDescription": {"text": "Dangling fetch: POST /api/delivery-widget/leadtime/refresh (frontend/src/lib/api/delivery-widget.ts:129)"}, "fullDescription": {"text": "`frontend/src/lib/api/delivery-widget.ts:129` calls `POST /api/delivery-widget/leadtime/refresh` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/delivery-widget/leadtime/refresh`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1ebb0b117c70e666", "name": "Dangling fetch: GET /api/delivery-widget/leadtime/status (frontend/src/lib/api/delivery-widget.ts:138)", "shortDescription": {"text": "Dangling fetch: GET /api/delivery-widget/leadtime/status (frontend/src/lib/api/delivery-widget.ts:138)"}, "fullDescription": {"text": "`frontend/src/lib/api/delivery-widget.ts:138` calls `GET /api/delivery-widget/leadtime/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/delivery-widget/leadtime/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4215c8685f3d210d", "name": "Dangling fetch: POST /api/delivery-widget/holidays/refresh (frontend/src/lib/api/delivery-widget.ts:142)", "shortDescription": {"text": "Dangling fetch: POST /api/delivery-widget/holidays/refresh (frontend/src/lib/api/delivery-widget.ts:142)"}, "fullDescription": {"text": "`frontend/src/lib/api/delivery-widget.ts:142` calls `POST /api/delivery-widget/holidays/refresh` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/delivery-widget/holidays/refresh`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e16525b9867b879d", "name": "Dangling fetch: GET /api/delivery-widget/holidays/status (frontend/src/lib/api/delivery-widget.ts:151)", "shortDescription": {"text": "Dangling fetch: GET /api/delivery-widget/holidays/status (frontend/src/lib/api/delivery-widget.ts:151)"}, "fullDescription": {"text": "`frontend/src/lib/api/delivery-widget.ts:151` calls `GET /api/delivery-widget/holidays/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/delivery-widget/holidays/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c43fce5bec99a6cc", "name": "Dangling fetch: GET /api/delivery-widget/holidays/dates (frontend/src/lib/api/delivery-widget.ts:155)", "shortDescription": {"text": "Dangling fetch: GET /api/delivery-widget/holidays/dates (frontend/src/lib/api/delivery-widget.ts:155)"}, "fullDescription": {"text": "`frontend/src/lib/api/delivery-widget.ts:155` calls `GET /api/delivery-widget/holidays/dates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/delivery-widget/holidays/dates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75fbb8660889efae", "name": "Dangling fetch: GET /api/delivery-widget/overrides (frontend/src/lib/api/delivery-widget.ts:159)", "shortDescription": {"text": "Dangling fetch: GET /api/delivery-widget/overrides (frontend/src/lib/api/delivery-widget.ts:159)"}, "fullDescription": {"text": "`frontend/src/lib/api/delivery-widget.ts:159` calls `GET /api/delivery-widget/overrides` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/delivery-widget/overrides`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-496fcfbc1842fdc1", "name": "Dangling fetch: PUT /api/delivery-widget/overrides (frontend/src/lib/api/delivery-widget.ts:163)", "shortDescription": {"text": "Dangling fetch: PUT /api/delivery-widget/overrides (frontend/src/lib/api/delivery-widget.ts:163)"}, "fullDescription": {"text": "`frontend/src/lib/api/delivery-widget.ts:163` calls `PUT /api/delivery-widget/overrides` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/delivery-widget/overrides`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1e4b5e98b9e1fdc0", "name": "Dangling fetch: GET /api/delivery-widget/config (frontend/src/lib/api/delivery-widget.ts:170)", "shortDescription": {"text": "Dangling fetch: GET /api/delivery-widget/config (frontend/src/lib/api/delivery-widget.ts:170)"}, "fullDescription": {"text": "`frontend/src/lib/api/delivery-widget.ts:170` calls `GET /api/delivery-widget/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/delivery-widget/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-88643920ae2e077d", "name": "Dangling fetch: PUT /api/delivery-widget/config (frontend/src/lib/api/delivery-widget.ts:174)", "shortDescription": {"text": "Dangling fetch: PUT /api/delivery-widget/config (frontend/src/lib/api/delivery-widget.ts:174)"}, "fullDescription": {"text": "`frontend/src/lib/api/delivery-widget.ts:174` calls `PUT /api/delivery-widget/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/delivery-widget/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5541309480f333a7", "name": "Dangling fetch: GET /api/delivery-widget/calculate?${query.toString()} (frontend/src/lib/api/delivery-widget.ts:192)", "shortDescription": {"text": "Dangling fetch: GET /api/delivery-widget/calculate?${query.toString()} (frontend/src/lib/api/delivery-widget.ts:192)"}, "fullDescription": {"text": "`frontend/src/lib/api/delivery-widget.ts:192` calls `GET /api/delivery-widget/calculate?${query.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/delivery-widget/calculate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3446989d9da80d83", "name": "Dangling fetch: POST /api/delivery-widget/generate (frontend/src/lib/api/delivery-widget.ts:196)", "shortDescription": {"text": "Dangling fetch: POST /api/delivery-widget/generate (frontend/src/lib/api/delivery-widget.ts:196)"}, "fullDescription": {"text": "`frontend/src/lib/api/delivery-widget.ts:196` calls `POST /api/delivery-widget/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/delivery-widget/generate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-79ccd12be2745337", "name": "Dangling fetch: GET /api/delivery-widget/generation/last (frontend/src/lib/api/delivery-widget.ts:207)", "shortDescription": {"text": "Dangling fetch: GET /api/delivery-widget/generation/last (frontend/src/lib/api/delivery-widget.ts:207)"}, "fullDescription": {"text": "`frontend/src/lib/api/delivery-widget.ts:207` calls `GET /api/delivery-widget/generation/last` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/delivery-widget/generation/last`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-194c35bad089a7db", "name": "Dangling fetch: POST /api/delivery-widget/sync-rakuten-calendar (frontend/src/lib/api/delivery-widget.ts:211)", "shortDescription": {"text": "Dangling fetch: POST /api/delivery-widget/sync-rakuten-calendar (frontend/src/lib/api/delivery-widget.ts:211)"}, "fullDescription": {"text": "`frontend/src/lib/api/delivery-widget.ts:211` calls `POST /api/delivery-widget/sync-rakuten-calendar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/delivery-widget/sync-rakuten-calendar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-821eac1f48eb152f", "name": "Dangling fetch: POST /api/product-register/register (frontend/src/lib/api/product-register.ts:80)", "shortDescription": {"text": "Dangling fetch: POST /api/product-register/register (frontend/src/lib/api/product-register.ts:80)"}, "fullDescription": {"text": "`frontend/src/lib/api/product-register.ts:80` calls `POST /api/product-register/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/product-register/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e979d9e83334f8d1", "name": "Dangling fetch: POST /api/product-register/register-batch (frontend/src/lib/api/product-register.ts:100)", "shortDescription": {"text": "Dangling fetch: POST /api/product-register/register-batch (frontend/src/lib/api/product-register.ts:100)"}, "fullDescription": {"text": "`frontend/src/lib/api/product-register.ts:100` calls `POST /api/product-register/register-batch` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/product-register/register-batch`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-52808212b5c18489", "name": "Dangling fetch: POST /api/html/generate (frontend/src/lib/api/html-generation.ts:13)", "shortDescription": {"text": "Dangling fetch: POST /api/html/generate (frontend/src/lib/api/html-generation.ts:13)"}, "fullDescription": {"text": "`frontend/src/lib/api/html-generation.ts:13` calls `POST /api/html/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/html/generate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-889a56afd57d7b5b", "name": "Dangling fetch: GET /api/mercari/constants (frontend/src/lib/api/mercari.ts:255)", "shortDescription": {"text": "Dangling fetch: GET /api/mercari/constants (frontend/src/lib/api/mercari.ts:255)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:255` calls `GET /api/mercari/constants` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/constants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e56a54a6561c8f67", "name": "Dangling fetch: GET /api/mercari/rakuten-images?${params.toString()} (frontend/src/lib/api/mercari.ts:367)", "shortDescription": {"text": "Dangling fetch: GET /api/mercari/rakuten-images?${params.toString()} (frontend/src/lib/api/mercari.ts:367)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:367` calls `GET /api/mercari/rakuten-images?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/rakuten-images`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b242b9c347379d7e", "name": "Dangling fetch: GET /api/mercari/rakuten-folders?${params.toString()} (frontend/src/lib/api/mercari.ts:383)", "shortDescription": {"text": "Dangling fetch: GET /api/mercari/rakuten-folders?${params.toString()} (frontend/src/lib/api/mercari.ts:383)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:383` calls `GET /api/mercari/rakuten-folders?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/rakuten-folders`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3a6803056478ce1d", "name": "Dangling fetch: POST /api/mercari/export-update-bundle-by-ids (frontend/src/lib/api/mercari.ts:489)", "shortDescription": {"text": "Dangling fetch: POST /api/mercari/export-update-bundle-by-ids (frontend/src/lib/api/mercari.ts:489)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:489` calls `POST /api/mercari/export-update-bundle-by-ids` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/export-update-bundle-by-ids`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8f08fa548939a41b", "name": "Dangling fetch: POST /api/mercari/products (frontend/src/lib/api/mercari.ts:583)", "shortDescription": {"text": "Dangling fetch: POST /api/mercari/products (frontend/src/lib/api/mercari.ts:583)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:583` calls `POST /api/mercari/products` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/products`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8c6a567bcd95532e", "name": "Dangling fetch: PUT /api/mercari/products/${productId} (frontend/src/lib/api/mercari.ts:599)", "shortDescription": {"text": "Dangling fetch: PUT /api/mercari/products/${productId} (frontend/src/lib/api/mercari.ts:599)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:599` calls `PUT /api/mercari/products/${productId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/products/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75124af23ba40d36", "name": "Dangling fetch: DELETE /api/mercari/products/${productId} (frontend/src/lib/api/mercari.ts:612)", "shortDescription": {"text": "Dangling fetch: DELETE /api/mercari/products/${productId} (frontend/src/lib/api/mercari.ts:612)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:612` calls `DELETE /api/mercari/products/${productId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/products/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-177d106478486ad1", "name": "Dangling fetch: PATCH /api/mercari/products/batch-status (frontend/src/lib/api/mercari.ts:629)", "shortDescription": {"text": "Dangling fetch: PATCH /api/mercari/products/batch-status (frontend/src/lib/api/mercari.ts:629)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:629` calls `PATCH /api/mercari/products/batch-status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/products/batch-status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dedd24a010e9d593", "name": "Dangling fetch: PATCH /api/mercari/products/batch-shipping-fee (frontend/src/lib/api/mercari.ts:647)", "shortDescription": {"text": "Dangling fetch: PATCH /api/mercari/products/batch-shipping-fee (frontend/src/lib/api/mercari.ts:647)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:647` calls `PATCH /api/mercari/products/batch-shipping-fee` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/products/batch-shipping-fee`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-adfea416ba6b8088", "name": "Dangling fetch: PATCH /api/mercari/products/batch-sanitize-sku-names (frontend/src/lib/api/mercari.ts:663)", "shortDescription": {"text": "Dangling fetch: PATCH /api/mercari/products/batch-sanitize-sku-names (frontend/src/lib/api/mercari.ts:663)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:663` calls `PATCH /api/mercari/products/batch-sanitize-sku-names` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/products/batch-sanitize-sku-names`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-83f81cbcabe9e704", "name": "Dangling fetch: POST /api/mercari/export-manage-number-batches-by-ids (frontend/src/lib/api/mercari.ts:733)", "shortDescription": {"text": "Dangling fetch: POST /api/mercari/export-manage-number-batches-by-ids (frontend/src/lib/api/mercari.ts:733)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:733` calls `POST /api/mercari/export-manage-number-batches-by-ids` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/export-manage-number-batches-by-ids`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f1a0c0b6adaf3c9f", "name": "Dangling fetch: POST /api/mercari/import/rakuten/preview (frontend/src/lib/api/mercari.ts:751)", "shortDescription": {"text": "Dangling fetch: POST /api/mercari/import/rakuten/preview (frontend/src/lib/api/mercari.ts:751)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:751` calls `POST /api/mercari/import/rakuten/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/import/rakuten/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0358a9e00a332438", "name": "Dangling fetch: POST /api/mercari/import/rakuten (frontend/src/lib/api/mercari.ts:774)", "shortDescription": {"text": "Dangling fetch: POST /api/mercari/import/rakuten (frontend/src/lib/api/mercari.ts:774)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:774` calls `POST /api/mercari/import/rakuten` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/import/rakuten`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0a26f4deef3fd94a", "name": "Dangling fetch: POST /api/mercari/import/save-preview (frontend/src/lib/api/mercari.ts:793)", "shortDescription": {"text": "Dangling fetch: POST /api/mercari/import/save-preview (frontend/src/lib/api/mercari.ts:793)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:793` calls `POST /api/mercari/import/save-preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/import/save-preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ee0e6b7ef4692063", "name": "Dangling fetch: POST /api/mercari/inventory/sync-from-rakuten (frontend/src/lib/api/mercari.ts:837)", "shortDescription": {"text": "Dangling fetch: POST /api/mercari/inventory/sync-from-rakuten (frontend/src/lib/api/mercari.ts:837)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:837` calls `POST /api/mercari/inventory/sync-from-rakuten` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/inventory/sync-from-rakuten`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-204188d97a667891", "name": "Dangling fetch: POST /api/mercari/inventory/refresh-sku-mapping (frontend/src/lib/api/mercari.ts:861)", "shortDescription": {"text": "Dangling fetch: POST /api/mercari/inventory/refresh-sku-mapping (frontend/src/lib/api/mercari.ts:861)"}, "fullDescription": {"text": "`frontend/src/lib/api/mercari.ts:861` calls `POST /api/mercari/inventory/refresh-sku-mapping` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mercari/inventory/refresh-sku-mapping`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-db6d6a0e5c6522ac", "name": "Dangling fetch: GET /api/master/${filename} (frontend/src/lib/api/master-data.ts:14)", "shortDescription": {"text": "Dangling fetch: GET /api/master/${filename} (frontend/src/lib/api/master-data.ts:14)"}, "fullDescription": {"text": "`frontend/src/lib/api/master-data.ts:14` calls `GET /api/master/${filename}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/master/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f918e4215ca4d61b", "name": "Dangling fetch: GET /api/master/icons/explanation (frontend/src/lib/api/master-data.ts:19)", "shortDescription": {"text": "Dangling fetch: GET /api/master/icons/explanation (frontend/src/lib/api/master-data.ts:19)"}, "fullDescription": {"text": "`frontend/src/lib/api/master-data.ts:19` calls `GET /api/master/icons/explanation` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/master/icons/explanation`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7e57c4f9b3ba7600", "name": "Dangling fetch: GET /api/master/y_specs/${categoryId} (frontend/src/lib/api/master-data.ts:24)", "shortDescription": {"text": "Dangling fetch: GET /api/master/y_specs/${categoryId} (frontend/src/lib/api/master-data.ts:24)"}, "fullDescription": {"text": "`frontend/src/lib/api/master-data.ts:24` calls `GET /api/master/y_specs/${categoryId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/master/y_specs/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6c6aa221ab79b9c8", "name": "Dangling fetch: GET /api/master/rakuten_attributes/${genreId} (frontend/src/lib/api/master-data.ts:29)", "shortDescription": {"text": "Dangling fetch: GET /api/master/rakuten_attributes/${genreId} (frontend/src/lib/api/master-data.ts:29)"}, "fullDescription": {"text": "`frontend/src/lib/api/master-data.ts:29` calls `GET /api/master/rakuten_attributes/${genreId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/master/rakuten_attributes/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-99fecd90387f926b", "name": "Dangling fetch: POST /api/master/product-name-master/upload (frontend/src/lib/api/master-data.ts:34)", "shortDescription": {"text": "Dangling fetch: POST /api/master/product-name-master/upload (frontend/src/lib/api/master-data.ts:34)"}, "fullDescription": {"text": "`frontend/src/lib/api/master-data.ts:34` calls `POST /api/master/product-name-master/upload` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/master/product-name-master/upload`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b12e4fc59236751", "name": "Dangling fetch: POST /api/master/product-page-gap-check (frontend/src/lib/api/master-data.ts:45)", "shortDescription": {"text": "Dangling fetch: POST /api/master/product-page-gap-check (frontend/src/lib/api/master-data.ts:45)"}, "fullDescription": {"text": "`frontend/src/lib/api/master-data.ts:45` calls `POST /api/master/product-page-gap-check` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/master/product-page-gap-check`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2250c278942672aa", "name": "Dangling fetch: GET /api/rakuten/status (frontend/src/lib/api/rakuten.ts:238)", "shortDescription": {"text": "Dangling fetch: GET /api/rakuten/status (frontend/src/lib/api/rakuten.ts:238)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:238` calls `GET /api/rakuten/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-33dca9e95f1d9b7c", "name": "Dangling fetch: POST /api/rakuten/shops (frontend/src/lib/api/rakuten.ts:245)", "shortDescription": {"text": "Dangling fetch: POST /api/rakuten/shops (frontend/src/lib/api/rakuten.ts:245)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:245` calls `POST /api/rakuten/shops` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/shops`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-66c7393ccc77b8c5", "name": "Dangling fetch: PUT /api/rakuten/shops/${shopId} (frontend/src/lib/api/rakuten.ts:255)", "shortDescription": {"text": "Dangling fetch: PUT /api/rakuten/shops/${shopId} (frontend/src/lib/api/rakuten.ts:255)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:255` calls `PUT /api/rakuten/shops/${shopId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/shops/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-449936d06133e007", "name": "Dangling fetch: DELETE /api/rakuten/shops/${shopId} (frontend/src/lib/api/rakuten.ts:265)", "shortDescription": {"text": "Dangling fetch: DELETE /api/rakuten/shops/${shopId} (frontend/src/lib/api/rakuten.ts:265)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:265` calls `DELETE /api/rakuten/shops/${shopId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/shops/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-731df65f24ba7c2e", "name": "Dangling fetch: PUT /api/rakuten/active-shop (frontend/src/lib/api/rakuten.ts:274)", "shortDescription": {"text": "Dangling fetch: PUT /api/rakuten/active-shop (frontend/src/lib/api/rakuten.ts:274)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:274` calls `PUT /api/rakuten/active-shop` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/active-shop`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f4e1ea1a1a49a09a", "name": "Dangling fetch: POST /api/rakuten/validate (frontend/src/lib/api/rakuten.ts:284)", "shortDescription": {"text": "Dangling fetch: POST /api/rakuten/validate (frontend/src/lib/api/rakuten.ts:284)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:284` calls `POST /api/rakuten/validate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/validate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-143e484dd6c8282d", "name": "Dangling fetch: POST /api/rakuten/delivery-banner/analyze (frontend/src/lib/api/rakuten.ts:293)", "shortDescription": {"text": "Dangling fetch: POST /api/rakuten/delivery-banner/analyze (frontend/src/lib/api/rakuten.ts:293)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:293` calls `POST /api/rakuten/delivery-banner/analyze` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/delivery-banner/analyze`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-059ca70aaa060bad", "name": "Dangling fetch: POST /api/rakuten/delivery-banner/apply (frontend/src/lib/api/rakuten.ts:300)", "shortDescription": {"text": "Dangling fetch: POST /api/rakuten/delivery-banner/apply (frontend/src/lib/api/rakuten.ts:300)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:300` calls `POST /api/rakuten/delivery-banner/apply` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/delivery-banner/apply`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3550318461396dc8", "name": "Dangling fetch: GET /api/rakuten/inventory/item?${params} (frontend/src/lib/api/rakuten.ts:379)", "shortDescription": {"text": "Dangling fetch: GET /api/rakuten/inventory/item?${params} (frontend/src/lib/api/rakuten.ts:379)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:379` calls `GET /api/rakuten/inventory/item?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/inventory/item`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f51cafaa23f7dc8", "name": "Dangling fetch: GET /api/rakuten/inventory/range?${params} (frontend/src/lib/api/rakuten.ts:390)", "shortDescription": {"text": "Dangling fetch: GET /api/rakuten/inventory/range?${params} (frontend/src/lib/api/rakuten.ts:390)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:390` calls `GET /api/rakuten/inventory/range?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/inventory/range`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7ec08415cb524dec", "name": "Dangling fetch: POST /api/rakuten/inventory/bulk-get (frontend/src/lib/api/rakuten.ts:400)", "shortDescription": {"text": "Dangling fetch: POST /api/rakuten/inventory/bulk-get (frontend/src/lib/api/rakuten.ts:400)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:400` calls `POST /api/rakuten/inventory/bulk-get` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/inventory/bulk-get`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-abfb1ec04ce1cb34", "name": "Dangling fetch: PUT /api/rakuten/inventory/item?${params} (frontend/src/lib/api/rakuten.ts:433)", "shortDescription": {"text": "Dangling fetch: PUT /api/rakuten/inventory/item?${params} (frontend/src/lib/api/rakuten.ts:433)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:433` calls `PUT /api/rakuten/inventory/item?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/inventory/item`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-44f37715ebbe33ee", "name": "Dangling fetch: POST /api/rakuten/inventory/bulk-update (frontend/src/lib/api/rakuten.ts:442)", "shortDescription": {"text": "Dangling fetch: POST /api/rakuten/inventory/bulk-update (frontend/src/lib/api/rakuten.ts:442)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:442` calls `POST /api/rakuten/inventory/bulk-update` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/inventory/bulk-update`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8c89b1fa77ed64f1", "name": "Dangling fetch: DELETE /api/rakuten/inventory/item?${params} (frontend/src/lib/api/rakuten.ts:459)", "shortDescription": {"text": "Dangling fetch: DELETE /api/rakuten/inventory/item?${params} (frontend/src/lib/api/rakuten.ts:459)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:459` calls `DELETE /api/rakuten/inventory/item?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/inventory/item`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b86639c806a4d0b4", "name": "Dangling fetch: GET /api/rakuten/inventory/logs?${params} (frontend/src/lib/api/rakuten.ts:470)", "shortDescription": {"text": "Dangling fetch: GET /api/rakuten/inventory/logs?${params} (frontend/src/lib/api/rakuten.ts:470)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:470` calls `GET /api/rakuten/inventory/logs?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/inventory/logs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f8a49d09cbe63291", "name": "Dangling fetch: PUT /api/rakuten/inventory/product/${manageNumber}/hide (frontend/src/lib/api/rakuten.ts:494)", "shortDescription": {"text": "Dangling fetch: PUT /api/rakuten/inventory/product/${manageNumber}/hide (frontend/src/lib/api/rakuten.ts:494)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:494` calls `PUT /api/rakuten/inventory/product/${manageNumber}/hide` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/inventory/product/<p>/hide`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9c7b4c1d4967cb32", "name": "Dangling fetch: PUT /api/rakuten/inventory/products/bulk-hide (frontend/src/lib/api/rakuten.ts:510)", "shortDescription": {"text": "Dangling fetch: PUT /api/rakuten/inventory/products/bulk-hide (frontend/src/lib/api/rakuten.ts:510)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:510` calls `PUT /api/rakuten/inventory/products/bulk-hide` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/inventory/products/bulk-hide`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f0547394f70cafa6", "name": "Dangling fetch: GET /api/rakuten/inventory/license/expiry-date (frontend/src/lib/api/rakuten.ts:548)", "shortDescription": {"text": "Dangling fetch: GET /api/rakuten/inventory/license/expiry-date (frontend/src/lib/api/rakuten.ts:548)"}, "fullDescription": {"text": "`frontend/src/lib/api/rakuten.ts:548` calls `GET /api/rakuten/inventory/license/expiry-date` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/rakuten/inventory/license/expiry-date`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aaaddb8abcae3434", "name": "Dangling fetch: GET /api/filesystem/roots (frontend/src/lib/api/filesystem.ts:13)", "shortDescription": {"text": "Dangling fetch: GET /api/filesystem/roots (frontend/src/lib/api/filesystem.ts:13)"}, "fullDescription": {"text": "`frontend/src/lib/api/filesystem.ts:13` calls `GET /api/filesystem/roots` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/filesystem/roots`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-355a501d28a67f1c", "name": "Dangling fetch: POST /api/page-editor/fetch (frontend/src/lib/api/page-editor.ts:100)", "shortDescription": {"text": "Dangling fetch: POST /api/page-editor/fetch (frontend/src/lib/api/page-editor.ts:100)"}, "fullDescription": {"text": "`frontend/src/lib/api/page-editor.ts:100` calls `POST /api/page-editor/fetch` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/page-editor/fetch`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6732c28712cb6137", "name": "Dangling fetch: POST /api/page-editor/update (frontend/src/lib/api/page-editor.ts:110)", "shortDescription": {"text": "Dangling fetch: POST /api/page-editor/update (frontend/src/lib/api/page-editor.ts:110)"}, "fullDescription": {"text": "`frontend/src/lib/api/page-editor.ts:110` calls `POST /api/page-editor/update` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/page-editor/update`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09088f7ba56ccc82", "name": "Dangling fetch: POST /api/page-editor/bulk-fetch (frontend/src/lib/api/page-editor.ts:120)", "shortDescription": {"text": "Dangling fetch: POST /api/page-editor/bulk-fetch (frontend/src/lib/api/page-editor.ts:120)"}, "fullDescription": {"text": "`frontend/src/lib/api/page-editor.ts:120` calls `POST /api/page-editor/bulk-fetch` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/page-editor/bulk-fetch`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7be9d07631954f09", "name": "Dangling fetch: POST /api/page-editor/bulk-update (frontend/src/lib/api/page-editor.ts:130)", "shortDescription": {"text": "Dangling fetch: POST /api/page-editor/bulk-update (frontend/src/lib/api/page-editor.ts:130)"}, "fullDescription": {"text": "`frontend/src/lib/api/page-editor.ts:130` calls `POST /api/page-editor/bulk-update` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/page-editor/bulk-update`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5fcd52c61d20308a", "name": "Dangling fetch: POST /api/page-editor/preview-changes (frontend/src/lib/api/page-editor.ts:140)", "shortDescription": {"text": "Dangling fetch: POST /api/page-editor/preview-changes (frontend/src/lib/api/page-editor.ts:140)"}, "fullDescription": {"text": "`frontend/src/lib/api/page-editor.ts:140` calls `POST /api/page-editor/preview-changes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/page-editor/preview-changes`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b209c82780720e36", "name": "Dangling fetch: POST /api/database-backup/inspect (frontend/src/lib/api/database-backup.ts:39)", "shortDescription": {"text": "Dangling fetch: POST /api/database-backup/inspect (frontend/src/lib/api/database-backup.ts:39)"}, "fullDescription": {"text": "`frontend/src/lib/api/database-backup.ts:39` calls `POST /api/database-backup/inspect` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/database-backup/inspect`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-730e15181ecad6cb", "name": "Dangling fetch: POST /api/database-backup/create (frontend/src/lib/api/database-backup.ts:46)", "shortDescription": {"text": "Dangling fetch: POST /api/database-backup/create (frontend/src/lib/api/database-backup.ts:46)"}, "fullDescription": {"text": "`frontend/src/lib/api/database-backup.ts:46` calls `POST /api/database-backup/create` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/database-backup/create`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e366fe1f733a5705", "name": "Dangling fetch: POST /api/database-backup/restore (frontend/src/lib/api/database-backup.ts:58)", "shortDescription": {"text": "Dangling fetch: POST /api/database-backup/restore (frontend/src/lib/api/database-backup.ts:58)"}, "fullDescription": {"text": "`frontend/src/lib/api/database-backup.ts:58` calls `POST /api/database-backup/restore` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/database-backup/restore`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7028d9c853d87627", "name": "Unused endpoint: POST /export", "shortDescription": {"text": "Unused endpoint: POST /export"}, "fullDescription": {"text": "`backend/app/routers/csv_export.py` declares `POST /export` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-970eb92d6ec2bfaa", "name": "Unused endpoint: POST /generate", "shortDescription": {"text": "Unused endpoint: POST /generate"}, "fullDescription": {"text": "`backend/app/routers/csv_export.py` declares `POST /generate` 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-44130ee7f51b7f8d", "name": "Unused endpoint: POST /export-and-generate", "shortDescription": {"text": "Unused endpoint: POST /export-and-generate"}, "fullDescription": {"text": "`backend/app/routers/csv_export.py` declares `POST /export-and-generate` 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-1995a580ecab60df", "name": "Unused endpoint: POST /export-and-generate/stream", "shortDescription": {"text": "Unused endpoint: POST /export-and-generate/stream"}, "fullDescription": {"text": "`backend/app/routers/csv_export.py` declares `POST /export-and-generate/stream` 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-c7fe33326e535f6b", "name": "Unused endpoint: GET /csharp-status", "shortDescription": {"text": "Unused endpoint: GET /csharp-status"}, "fullDescription": {"text": "`backend/app/routers/csv_export.py` declares `GET /csharp-status` 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-cdd463fb35f3cd1d", "name": "Unused endpoint: GET /auth/url", "shortDescription": {"text": "Unused endpoint: GET /auth/url"}, "fullDescription": {"text": "`backend/app/routers/yahoo_auth.py` declares `GET /auth/url` 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-1480187b44a5fd90", "name": "Unused endpoint: GET /auth/callback", "shortDescription": {"text": "Unused endpoint: GET /auth/callback"}, "fullDescription": {"text": "`backend/app/routers/yahoo_auth.py` declares `GET /auth/callback` 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-53115d2286999a69", "name": "Unused endpoint: GET /roots", "shortDescription": {"text": "Unused endpoint: GET /roots"}, "fullDescription": {"text": "`backend/app/routers/filesystem.py` declares `GET /roots` 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-f2e0115c9015a583", "name": "Unused endpoint: GET /folders", "shortDescription": {"text": "Unused endpoint: GET /folders"}, "fullDescription": {"text": "`backend/app/routers/filesystem.py` declares `GET /folders` 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-fca11d494725d7c3", "name": "Unused endpoint: POST /analyze", "shortDescription": {"text": "Unused endpoint: POST /analyze"}, "fullDescription": {"text": "`backend/app/routers/yahoo_delivery_banner.py` declares `POST /analyze` 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-9a88e32ba95dda7c", "name": "Unused endpoint: POST /apply", "shortDescription": {"text": "Unused endpoint: POST /apply"}, "fullDescription": {"text": "`backend/app/routers/yahoo_delivery_banner.py` declares `POST /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-90915f869505e796", "name": "Unused endpoint: POST /shops", "shortDescription": {"text": "Unused endpoint: POST /shops"}, "fullDescription": {"text": "`backend/app/routers/yahoo_settings.py` declares `POST /shops` 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-179b87eeb32ddb2f", "name": "Unused endpoint: PUT /shops/{shop_id}", "shortDescription": {"text": "Unused endpoint: PUT /shops/{shop_id}"}, "fullDescription": {"text": "`backend/app/routers/yahoo_settings.py` declares `PUT /shops/{shop_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-ae90947fff6de622", "name": "Unused endpoint: DELETE /shops/{shop_id}", "shortDescription": {"text": "Unused endpoint: DELETE /shops/{shop_id}"}, "fullDescription": {"text": "`backend/app/routers/yahoo_settings.py` declares `DELETE /shops/{shop_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-3467a23740f4ca23", "name": "Unused endpoint: PUT /active-shop", "shortDescription": {"text": "Unused endpoint: PUT /active-shop"}, "fullDescription": {"text": "`backend/app/routers/yahoo_settings.py` declares `PUT /active-shop` 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-34c0472a1f1fafe5", "name": "Unused endpoint: POST /validate", "shortDescription": {"text": "Unused endpoint: POST /validate"}, "fullDescription": {"text": "`backend/app/routers/yahoo_settings.py` declares `POST /validate` 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-b96c2c2251840d05", "name": "Unused endpoint: GET /products/history", "shortDescription": {"text": "Unused endpoint: GET /products/history"}, "fullDescription": {"text": "`backend/app/routers/mercari_history.py` declares `GET /products/history` 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-6da7bd9174700cb3", "name": "Unused endpoint: POST /products/history", "shortDescription": {"text": "Unused endpoint: POST /products/history"}, "fullDescription": {"text": "`backend/app/routers/mercari_history.py` declares `POST /products/history` 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-aae14e720f4b27ad", "name": "Unused endpoint: POST /products/history/batch", "shortDescription": {"text": "Unused endpoint: POST /products/history/batch"}, "fullDescription": {"text": "`backend/app/routers/mercari_history.py` declares `POST /products/history/batch` 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-525eee4f13302f5e", "name": "Unused endpoint: GET /rakuten/{manage_number}", "shortDescription": {"text": "Unused endpoint: GET /rakuten/{manage_number}"}, "fullDescription": {"text": "`backend/app/routers/price_management.py` declares `GET /rakuten/{manage_number}` 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-d17ed111daa557ca", "name": "Unused endpoint: PUT /rakuten", "shortDescription": {"text": "Unused endpoint: PUT /rakuten"}, "fullDescription": {"text": "`backend/app/routers/price_management.py` declares `PUT /rakuten` 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-7113eea43bb19767", "name": "Unused endpoint: PUT /rakuten/bulk", "shortDescription": {"text": "Unused endpoint: PUT /rakuten/bulk"}, "fullDescription": {"text": "`backend/app/routers/price_management.py` declares `PUT /rakuten/bulk` 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-ee1a204c7598027e", "name": "Unused endpoint: GET /yahoo/{item_code}", "shortDescription": {"text": "Unused endpoint: GET /yahoo/{item_code}"}, "fullDescription": {"text": "`backend/app/routers/price_management.py` declares `GET /yahoo/{item_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-81f33c5a22c81829", "name": "Unused endpoint: PUT /yahoo", "shortDescription": {"text": "Unused endpoint: PUT /yahoo"}, "fullDescription": {"text": "`backend/app/routers/price_management.py` declares `PUT /yahoo` 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-9b8cfd81ca15beaa", "name": "Unused endpoint: PUT /yahoo/bulk", "shortDescription": {"text": "Unused endpoint: PUT /yahoo/bulk"}, "fullDescription": {"text": "`backend/app/routers/price_management.py` declares `PUT /yahoo/bulk` 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-53271c1992a6def7", "name": "Unused endpoint: POST /sync-from-rakuten", "shortDescription": {"text": "Unused endpoint: POST /sync-from-rakuten"}, "fullDescription": {"text": "`backend/app/routers/price_management.py` declares `POST /sync-from-rakuten` 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-9260174de75b32ba", "name": "Unused endpoint: GET /categories", "shortDescription": {"text": "Unused endpoint: GET /categories"}, "fullDescription": {"text": "`backend/app/routers/mercari.py` declares `GET /categories` 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-01c0e6ca7f504cf5", "name": "Unused endpoint: GET /brands", "shortDescription": {"text": "Unused endpoint: GET /brands"}, "fullDescription": {"text": "`backend/app/routers/mercari.py` declares `GET /brands` 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-8301e98843fb121e", "name": "Unused endpoint: GET /products/list", "shortDescription": {"text": "Unused endpoint: GET /products/list"}, "fullDescription": {"text": "`backend/app/routers/mercari.py` declares `GET /products/list` 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-41755afe7d193ed1", "name": "Unused endpoint: GET /products/{product_id}/detail", "shortDescription": {"text": "Unused endpoint: GET /products/{product_id}/detail"}, "fullDescription": {"text": "`backend/app/routers/mercari.py` declares `GET /products/{product_id}/detail` 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-f1084bc3b7a4f4bb", "name": "Unused endpoint: GET /products", "shortDescription": {"text": "Unused endpoint: GET /products"}, "fullDescription": {"text": "`backend/app/routers/mercari.py` declares `GET /products` 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-cca7583916efd86a", "name": "Unused endpoint: POST /products", "shortDescription": {"text": "Unused endpoint: POST /products"}, "fullDescription": {"text": "`backend/app/routers/mercari.py` declares `POST /products` 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-e02e86498b5b3703", "name": "Unused endpoint: PUT /products/{product_id}", "shortDescription": {"text": "Unused endpoint: PUT /products/{product_id}"}, "fullDescription": {"text": "`backend/app/routers/mercari.py` declares `PUT /products/{product_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cdb40a850d729bbe", "name": "Unused endpoint: DELETE /products/{product_id}", "shortDescription": {"text": "Unused endpoint: DELETE /products/{product_id}"}, "fullDescription": {"text": "`backend/app/routers/mercari.py` declares `DELETE /products/{product_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1b0a2555d63e67c5", "name": "Unused endpoint: PATCH /products/batch-status", "shortDescription": {"text": "Unused endpoint: PATCH /products/batch-status"}, "fullDescription": {"text": "`backend/app/routers/mercari.py` declares `PATCH /products/batch-status` 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-9bd3cf6af95de06a", "name": "Unused endpoint: PATCH /products/batch-shipping-fee", "shortDescription": {"text": "Unused endpoint: PATCH /products/batch-shipping-fee"}, "fullDescription": {"text": "`backend/app/routers/mercari.py` declares `PATCH /products/batch-shipping-fee` 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-591e5f02bfa47939", "name": "Unused endpoint: PATCH /products/batch-sanitize-sku-names", "shortDescription": {"text": "Unused endpoint: PATCH /products/batch-sanitize-sku-names"}, "fullDescription": {"text": "`backend/app/routers/mercari.py` declares `PATCH /products/batch-sanitize-sku-names` 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-85eab95ac5bb8bc4", "name": "Unused endpoint: GET /inventory/item", "shortDescription": {"text": "Unused endpoint: GET /inventory/item"}, "fullDescription": {"text": "`backend/app/routers/yahoo_inventory.py` declares `GET /inventory/item` 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-d1bd42f0ca2295d3", "name": "Unused endpoint: POST /inventory/bulk-get", "shortDescription": {"text": "Unused endpoint: POST /inventory/bulk-get"}, "fullDescription": {"text": "`backend/app/routers/yahoo_inventory.py` declares `POST /inventory/bulk-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-0b993102544ab52c", "name": "Unused endpoint: GET /inventory/range", "shortDescription": {"text": "Unused endpoint: GET /inventory/range"}, "fullDescription": {"text": "`backend/app/routers/yahoo_inventory.py` declares `GET /inventory/range` 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-a697117ee06cf324", "name": "Unused endpoint: GET /inventory/search", "shortDescription": {"text": "Unused endpoint: GET /inventory/search"}, "fullDescription": {"text": "`backend/app/routers/yahoo_inventory.py` declares `GET /inventory/search` 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-e16b62da1f5cc79a", "name": "Unused endpoint: PUT /inventory/item", "shortDescription": {"text": "Unused endpoint: PUT /inventory/item"}, "fullDescription": {"text": "`backend/app/routers/yahoo_inventory.py` declares `PUT /inventory/item` 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-f352167c17d48764", "name": "Unused endpoint: POST /inventory/bulk-update", "shortDescription": {"text": "Unused endpoint: POST /inventory/bulk-update"}, "fullDescription": {"text": "`backend/app/routers/yahoo_inventory.py` declares `POST /inventory/bulk-update` 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-29937d18ff46993d", "name": "Unused endpoint: PUT /item/{item_code}/display", "shortDescription": {"text": "Unused endpoint: PUT /item/{item_code}/display"}, "fullDescription": {"text": "`backend/app/routers/yahoo_inventory.py` declares `PUT /item/{item_code}/display` 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-681b5cbf76a1db68", "name": "Unused endpoint: PUT /items/bulk-display", "shortDescription": {"text": "Unused endpoint: PUT /items/bulk-display"}, "fullDescription": {"text": "`backend/app/routers/yahoo_inventory.py` declares `PUT /items/bulk-display` 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-92a13c1e4be06edd", "name": "Unused endpoint: DELETE /product/{item_code}", "shortDescription": {"text": "Unused endpoint: DELETE /product/{item_code}"}, "fullDescription": {"text": "`backend/app/routers/yahoo_inventory.py` declares `DELETE /product/{item_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-67846a1cfc1822b7", "name": "Unused endpoint: POST /leadtime/refresh", "shortDescription": {"text": "Unused endpoint: POST /leadtime/refresh"}, "fullDescription": {"text": "`backend/app/routers/delivery_widget.py` declares `POST /leadtime/refresh` 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-b001b327c4062cc3", "name": "Unused endpoint: GET /leadtime/status", "shortDescription": {"text": "Unused endpoint: GET /leadtime/status"}, "fullDescription": {"text": "`backend/app/routers/delivery_widget.py` declares `GET /leadtime/status` 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-279219870649af94", "name": "Unused endpoint: GET /leadtime/lookup", "shortDescription": {"text": "Unused endpoint: GET /leadtime/lookup"}, "fullDescription": {"text": "`backend/app/routers/delivery_widget.py` declares `GET /leadtime/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}}]}}, "automationDetails": {"id": "repobility/19210"}, "properties": {"repository": "SEI1026/ProductRegisterTool", "repoUrl": "https://github.com/SEI1026/ProductRegisterTool", "branch": "main"}, "results": [{"ruleId": "scanner-ab0d825a37599ace", "level": "note", "message": {"text": "Possibly dead Python function: add_glow_line"}, "properties": {"repobilityId": "df5ef697ca58a64f", "scanner": "scanner-primary", "fingerprint": "ab0d825a37599ace", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/scripts/generate-installer-images.py:42"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ef784870158b24eb", "level": "note", "message": {"text": "Possibly dead Python function: decode_csv_content"}, "properties": {"repobilityId": "5f56112431847fc2", "scanner": "scanner-primary", "fingerprint": "ef784870158b24eb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/utils.py:38"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-96c8661fa0c0c69f", "level": "note", "message": {"text": "Possibly dead Python function: format_bytes"}, "properties": {"repobilityId": "dfb4fbdf04ab7de0", "scanner": "scanner-primary", "fingerprint": "96c8661fa0c0c69f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/utils.py:71"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7c50844d83f70971", "level": "note", "message": {"text": "Possibly dead Python function: truncate_string"}, "properties": {"repobilityId": "e41a66a605099c43", "scanner": "scanner-primary", "fingerprint": "7c50844d83f70971", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/utils.py:91"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1b138c281ee2c9ff", "level": "note", "message": {"text": "Possibly dead Python function: safe_float"}, "properties": {"repobilityId": "1dbb9c8ede0ce099", "scanner": "scanner-primary", "fingerprint": "1b138c281ee2c9ff", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/utils.py:127"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5032c7c35fb8cf3a", "level": "note", "message": {"text": "Possibly dead Python function: warm_up_connections"}, "properties": {"repobilityId": "2e56f1962599543c", "scanner": "scanner-primary", "fingerprint": "5032c7c35fb8cf3a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/supabase_client.py:223"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b591932241974ee8", "level": "note", "message": {"text": "Possibly dead Python function: create_product"}, "properties": {"repobilityId": "bb2b435db45bd902", "scanner": "scanner-primary", "fingerprint": "b591932241974ee8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/product_service.py:316"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-503eb60b511252c4", "level": "note", "message": {"text": "Possibly dead Python function: is_rakuten_only_image"}, "properties": {"repobilityId": "2cb772096008828f", "scanner": "scanner-primary", "fingerprint": "503eb60b511252c4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/zip_utils.py:61"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-06f3b17265845f24", "level": "note", "message": {"text": "Possibly dead Python function: decode_csv"}, "properties": {"repobilityId": "ed0f3cd784030ce4", "scanner": "scanner-primary", "fingerprint": "06f3b17265845f24", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/product_csv_service.py:51"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e1769c134bb90557", "level": "note", "message": {"text": "Possibly dead Python function: create_csv_response"}, "properties": {"repobilityId": "127f5c97dd71f242", "scanner": "scanner-primary", "fingerprint": "e1769c134bb90557", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/product_csv_service.py:61"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9641e4abba4b5a1b", "level": "note", "message": {"text": "Possibly dead Python function: write_csv_to_file"}, "properties": {"repobilityId": "80adc24b3d6ce22a", "scanner": "scanner-primary", "fingerprint": "9641e4abba4b5a1b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/product_csv_service.py:80"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ca500f70b4d0097c", "level": "note", "message": {"text": "Possibly dead Python function: row_to_product"}, "properties": {"repobilityId": "842ed12836cd6d7a", "scanner": "scanner-primary", "fingerprint": "ca500f70b4d0097c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/product_csv_service.py:164"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b2cf548ce77397b3", "level": "note", "message": {"text": "Possibly dead Python function: generate_main_rows"}, "properties": {"repobilityId": "aca9c38696b17dd6", "scanner": "scanner-primary", "fingerprint": "b2cf548ce77397b3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/product_csv_service.py:207"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dd53c9431aeb587e", "level": "note", "message": {"text": "Possibly dead Python function: generate_sku_rows"}, "properties": {"repobilityId": "445d390ca96fa5e5", "scanner": "scanner-primary", "fingerprint": "dd53c9431aeb587e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/product_csv_service.py:212"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3d3ce9a332a95055", "level": "note", "message": {"text": "Possibly dead Python function: import_item"}, "properties": {"repobilityId": "3c83724b3d3bc25c", "scanner": "scanner-primary", "fingerprint": "3d3ce9a332a95055", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/item_import_service.py:442"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7d9e50c26e6166dc", "level": "note", "message": {"text": "Possibly dead Python function: is_master_loaded"}, "properties": {"repobilityId": "9fc2d2389c47b673", "scanner": "scanner-primary", "fingerprint": "7d9e50c26e6166dc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/product_name_master.py:109"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-74f5d5cedf647bbe", "level": "note", "message": {"text": "Possibly dead Python function: json_default"}, "properties": {"repobilityId": "f3f373cafaaf9320", "scanner": "scanner-primary", "fingerprint": "74f5d5cedf647bbe", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/database_backup.py:49"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-23d73d4423469e35", "level": "note", "message": {"text": "Possibly dead Python function: fetch_all_auction_metadata_from_supabase"}, "properties": {"repobilityId": "860602d75a9bb13c", "scanner": "scanner-primary", "fingerprint": "23d73d4423469e35", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/auction_metadata_service.py:119"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3f876af98196cc5e", "level": "note", "message": {"text": "Possibly dead Python function: fetch_all_flick_metadata_from_supabase"}, "properties": {"repobilityId": "e2e96db9077c1293", "scanner": "scanner-primary", "fingerprint": "3f876af98196cc5e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/flick_metadata_service.py:111"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-02ce8671ebeadea2", "level": "note", "message": {"text": "Possibly dead Python function: reload_category_mapping"}, "properties": {"repobilityId": "3d44c9d456cde49b", "scanner": "scanner-primary", "fingerprint": "02ce8671ebeadea2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/mercari_import/mappers.py:362"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4b02bdc60f106cbd", "level": "note", "message": {"text": "Possibly dead Python function: clear_warnings"}, "properties": {"repobilityId": "d21a0c2e8200469e", "scanner": "scanner-primary", "fingerprint": "4b02bdc60f106cbd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/mercari_import/converter.py:264"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8051e5697fc503b1", "level": "note", "message": {"text": "Possibly dead Python function: has_warnings"}, "properties": {"repobilityId": "739096634a738fae", "scanner": "scanner-primary", "fingerprint": "8051e5697fc503b1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/services/mercari_import/warnings.py:65"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3cdd67aa401d222a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/main.js:1"}, "properties": {"repobilityId": "ada0024fa20d2149", "scanner": "scanner-primary", "fingerprint": "3cdd67aa401d222a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90915da672486813", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/main_original.js:1"}, "properties": {"repobilityId": "1c3dc151d2a41073", "scanner": "scanner-primary", "fingerprint": "90915da672486813", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4f2894f0f974fd91", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/main.src.js:68"}, "properties": {"repobilityId": "f830b18cebadae5e", "scanner": "scanner-primary", "fingerprint": "4f2894f0f974fd91", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-447e3d5e3d706102", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/config.src.js:52"}, "properties": {"repobilityId": "c8091c367212bd21", "scanner": "scanner-primary", "fingerprint": "447e3d5e3d706102", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-255ab331e681f7cd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/deep-link.js:23"}, "properties": {"repobilityId": "c1615bbc37fdb568", "scanner": "scanner-primary", "fingerprint": "255ab331e681f7cd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0b698a4bc473b8a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/backend.src.js:82"}, "properties": {"repobilityId": "76bd82444b763a52", "scanner": "scanner-primary", "fingerprint": "d0b698a4bc473b8a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-480368adda795025", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/deep-link.src.js:23"}, "properties": {"repobilityId": "646bd4a55b75d81a", "scanner": "scanner-primary", "fingerprint": "480368adda795025", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab8a3c914c266922", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/updater.js:22"}, "properties": {"repobilityId": "27992960828db3d3", "scanner": "scanner-primary", "fingerprint": "ab8a3c914c266922", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ff2557e44f83058", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/updater.src.js:22"}, "properties": {"repobilityId": "559c7f904c15ce1f", "scanner": "scanner-primary", "fingerprint": "6ff2557e44f83058", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3ed4764f55665c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/config.js:52"}, "properties": {"repobilityId": "6b50963f89d88b33", "scanner": "scanner-primary", "fingerprint": "c3ed4764f55665c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d4646318baad2089", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/electron/lib/backend.js:82"}, "properties": {"repobilityId": "6b040b25cc35d039", "scanner": "scanner-primary", "fingerprint": "d4646318baad2089", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f9db1b5361b0a6de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/minify-electron.js:14"}, "properties": {"repobilityId": "be5f9cae9db18505", "scanner": "scanner-primary", "fingerprint": "f9db1b5361b0a6de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c059927b681afe9d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/verify-build.js:16"}, "properties": {"repobilityId": "b707706c9a88b4f5", "scanner": "scanner-primary", "fingerprint": "c059927b681afe9d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8ff241bca152abdf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SearchPanel.tsx:390"}, "properties": {"repobilityId": "3aadbb71d2fffc61", "scanner": "scanner-primary", "fingerprint": "8ff241bca152abdf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7aaad53151e49f81", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/product/ProductSidebar.tsx:599"}, "properties": {"repobilityId": "809692957e4f15e4", "scanner": "scanner-primary", "fingerprint": "7aaad53151e49f81", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-99ac3683a3f6cffd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/product/sidebar/ProductListItem.tsx:59"}, "properties": {"repobilityId": "44174778301c4b35", "scanner": "scanner-primary", "fingerprint": "99ac3683a3f6cffd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1e6d0f86e3044622", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/PageHeader.tsx:29"}, "properties": {"repobilityId": "be45c568a6000b26", "scanner": "scanner-primary", "fingerprint": "1e6d0f86e3044622", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c00129f7c1bde903", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ui/glass-select.tsx:154"}, "properties": {"repobilityId": "3e792706a3e5d859", "scanner": "scanner-primary", "fingerprint": "c00129f7c1bde903", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4b4ffba915ca3ae6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/RelatedProductsCopyDialog.tsx:214"}, "properties": {"repobilityId": "c23ebd888e5c42c9", "scanner": "scanner-primary", "fingerprint": "4b4ffba915ca3ae6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-afdf191cb19a93cd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/ImageOptimizeDialog.tsx:388"}, "properties": {"repobilityId": "ce371fad200a3d0c", "scanner": "scanner-primary", "fingerprint": "afdf191cb19a93cd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-01d3c2fcb21a2009", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/ProductPageGapCheckDialog.tsx:179"}, "properties": {"repobilityId": "2e4a0c19b5a013e9", "scanner": "scanner-primary", "fingerprint": "01d3c2fcb21a2009", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ea263a8288f700ff", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/MaterialSpecDialog.tsx:220"}, "properties": {"repobilityId": "6bd923b7e9c1164d", "scanner": "scanner-primary", "fingerprint": "ea263a8288f700ff", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5ab1150d8046a9d0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/MigrationDialog.tsx:169"}, "properties": {"repobilityId": "e7071471637c2328", "scanner": "scanner-primary", "fingerprint": "5ab1150d8046a9d0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e02d3bf24a7dadf6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/ProductDuplicateDialog.tsx:143"}, "properties": {"repobilityId": "d86d64168fe7b4ac", "scanner": "scanner-primary", "fingerprint": "e02d3bf24a7dadf6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8b32d83aec9a92ad", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/user-settings/YahuokuOutputSection.tsx:51"}, "properties": {"repobilityId": "3b86890b77eaa347", "scanner": "scanner-primary", "fingerprint": "8b32d83aec9a92ad", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-511a2a5a3de11b39", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/user-settings/ImageFolderSection.tsx:51"}, "properties": {"repobilityId": "fccebbce9e380255", "scanner": "scanner-primary", "fingerprint": "511a2a5a3de11b39", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dd030a53c6bef33b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/html-generation/sections/ImageSettingsSection.tsx:69"}, "properties": {"repobilityId": "01ce52d464faf87a", "scanner": "scanner-primary", "fingerprint": "dd030a53c6bef33b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dfd0d11d8d377b10", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dialogs/image-tools/ImageSelectList.tsx:256"}, "properties": {"repobilityId": "0baf67709e921296", "scanner": "scanner-primary", "fingerprint": "dfd0d11d8d377b10", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bb36a8a19278620f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/ProductsPage.tsx:1067"}, "properties": {"repobilityId": "c9408659cdd548c5", "scanner": "scanner-primary", "fingerprint": "bb36a8a19278620f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0a6b3ae898194fe6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/DeliveryWidgetPage.tsx:385"}, "properties": {"repobilityId": "148e51cc12bbd281", "scanner": "scanner-primary", "fingerprint": "0a6b3ae898194fe6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-576f1db6b6932a1a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/YahuokuPage.tsx:356"}, "properties": {"repobilityId": "dd6de4dd184b9837", "scanner": "scanner-primary", "fingerprint": "576f1db6b6932a1a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0da7f9a61b3cee0e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/AIImageChatPage.tsx:388"}, "properties": {"repobilityId": "c0100c832f38746a", "scanner": "scanner-primary", "fingerprint": "0da7f9a61b3cee0e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-baff33de93d62bed", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/pages/delivery-widget/components/WidgetPreview.tsx:200"}, "properties": {"repobilityId": "b505cbcb1aa2a3d7", "scanner": "scanner-primary", "fingerprint": "baff33de93d62bed", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-3675a0fc137f94fd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/delivery-widget/components/GoldUploadPanel.tsx:454"}, "properties": {"repobilityId": "5ff3a12a69454c4b", "scanner": "scanner-primary", "fingerprint": "3675a0fc137f94fd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-047a34201e6e0cd3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/pages/delivery-widget/components/GoldUploadPanel.tsx:702"}, "properties": {"repobilityId": "c280dacba1d5027f", "scanner": "scanner-primary", "fingerprint": "047a34201e6e0cd3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-9b3731748c0c8f65", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/mercari-csv/MercariProductDuplicateDialog.tsx:131"}, "properties": {"repobilityId": "571bcf3b4139cf17", "scanner": "scanner-primary", "fingerprint": "9b3731748c0c8f65", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-872777c331876092", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/mercari-csv/RakutenImportDialog.tsx:349"}, "properties": {"repobilityId": "e7956f5ce8b4e41e", "scanner": "scanner-primary", "fingerprint": "872777c331876092", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2a1a136a254e916f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/mercari-csv/MercariSidebarRow.tsx:142"}, "properties": {"repobilityId": "1c844d138dde3433", "scanner": "scanner-primary", "fingerprint": "2a1a136a254e916f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fb8d670ba44d98bc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/import/ImportSinglePreviewCard.tsx:199"}, "properties": {"repobilityId": "c9470e085f14cf09", "scanner": "scanner-primary", "fingerprint": "fb8d670ba44d98bc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2739701b0d02ae83", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/import/ImportMatrixResultsCard.tsx:101"}, "properties": {"repobilityId": "fa5e35c31d86dc70", "scanner": "scanner-primary", "fingerprint": "2739701b0d02ae83", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-39f65fbae1370665", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/image-upload/YahooImageSection.tsx:246"}, "properties": {"repobilityId": "9d4729601555fc1b", "scanner": "scanner-primary", "fingerprint": "39f65fbae1370665", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-17a111bca4516336", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/image-upload/BulkImageSection.tsx:260"}, "properties": {"repobilityId": "508cd71871bea86f", "scanner": "scanner-primary", "fingerprint": "17a111bca4516336", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1a077cdeba8082d2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/image-upload/RakutenImageSection.tsx:225"}, "properties": {"repobilityId": "6fa45ceb42b9d1c1", "scanner": "scanner-primary", "fingerprint": "1a077cdeba8082d2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-232c28850e8ca54a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/mercari-tab/MercariTabDialogs.tsx:373"}, "properties": {"repobilityId": "b5eeb29d3db00fd1", "scanner": "scanner-primary", "fingerprint": "232c28850e8ca54a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8a554db8af7276a3", "level": "warning", "message": {"text": "Privileged port 21 in use"}, "properties": {"repobilityId": "d920b7cd1b1a16dc", "scanner": "scanner-primary", "fingerprint": "8a554db8af7276a3", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/pages/DeliveryWidgetPage.tsx"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9457f7afdabbd29f", "level": "warning", "message": {"text": "Privileged port 15 in use"}, "properties": {"repobilityId": "3340f9a170f285cd", "scanner": "scanner-primary", "fingerprint": "9457f7afdabbd29f", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/csv_backup.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4e5f1d7b9c4a5777", "level": "warning", "message": {"text": "Privileged port 3 in use"}, "properties": {"repobilityId": "261b7b1c6a18d412", "scanner": "scanner-primary", "fingerprint": "4e5f1d7b9c4a5777", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/csv_backup.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ec0ae8da97af91f1", "level": "warning", "message": {"text": "Privileged port 12 in use"}, "properties": {"repobilityId": "65e7eefa33f2def4", "scanner": "scanner-primary", "fingerprint": "ec0ae8da97af91f1", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/csv_backup.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c25d3e95baccac22", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in frontend/electron/main_original.js:1"}, "properties": {"repobilityId": "b20773f266bcc53e", "scanner": "scanner-primary", "fingerprint": "c25d3e95baccac22", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/electron/main_original.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ef58395e4521456c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in frontend/electron/lib/backend.src.js:12"}, "properties": {"repobilityId": "1fd3cc0f6a6cc4aa", "scanner": "scanner-primary", "fingerprint": "ef58395e4521456c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/electron/lib/backend.src.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-2a6821ccfe8bac53", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in frontend/electron/lib/updater.js:4"}, "properties": {"repobilityId": "abebb7901b9af188", "scanner": "scanner-primary", "fingerprint": "2a6821ccfe8bac53", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/electron/lib/updater.js"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-c5eec44c3de58b49", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in frontend/electron/lib/updater.src.js:4"}, "properties": {"repobilityId": "38748bd91821ad7a", "scanner": "scanner-primary", "fingerprint": "c5eec44c3de58b49", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/electron/lib/updater.src.js"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-dc09c7338d4462f6", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in frontend/electron/lib/backend.js:12"}, "properties": {"repobilityId": "191c822cfebe9d1c", "scanner": "scanner-primary", "fingerprint": "dc09c7338d4462f6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/electron/lib/backend.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-f299c81695945672", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/main.tsx:20"}, "properties": {"repobilityId": "1e0f8760662eafc6", "scanner": "scanner-primary", "fingerprint": "f299c81695945672", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/main.tsx"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-418653e391694ff6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/src/components/page-editor/HtmlLiveEditor.tsx:122"}, "properties": {"repobilityId": "31a81ec0708b9fbe", "scanner": "scanner-primary", "fingerprint": "418653e391694ff6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/page-editor/HtmlLiveEditor.tsx"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-41384f0c58988588", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/pages/delivery-widget/components/WidgetPreview.tsx:200"}, "properties": {"repobilityId": "29d20f1bff89c891", "scanner": "scanner-primary", "fingerprint": "41384f0c58988588", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/pages/delivery-widget/components/WidgetPreview.tsx"}, "region": {"startLine": 200}}}]}, {"ruleId": "scanner-e6a22ea77ea291b4", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/pages/delivery-widget/components/GoldUploadPanel.tsx:702"}, "properties": {"repobilityId": "09250e9faedd7cff", "scanner": "scanner-primary", "fingerprint": "e6a22ea77ea291b4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/pages/delivery-widget/components/GoldUploadPanel.tsx"}, "region": {"startLine": 702}}}]}, {"ruleId": "scanner-eec2ab2f9ba43284", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in backend/supabase/functions/admin-invite-user/index.ts:15"}, "properties": {"repobilityId": "3af87c526cd9638a", "scanner": "scanner-primary", "fingerprint": "eec2ab2f9ba43284", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/supabase/functions/admin-invite-user/index.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-5f1367acd3721aef", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "79f5863288294183", "scanner": "scanner-primary", "fingerprint": "5f1367acd3721aef", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-audit.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-5f1367acd3721aef", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1c65d4f0b6409282", "scanner": "scanner-primary", "fingerprint": "5f1367acd3721aef", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security-audit.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f57d208548fcef", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f57d208548fcef", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "55193ff05b5bb291", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 126}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0dc55539758d3645", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 152}}}]}, {"ruleId": "scanner-72113c9c2403d473", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6e10771f5ea77715", "scanner": "scanner-primary", "fingerprint": "72113c9c2403d473", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/csv_backup.yml"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "eeb76410cc935c30", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0ad86557a2848db6", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4c314402d29d2c2f", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5ab0c5bd71e63ad8", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "eeb76410cc935c30", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 134}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0ad86557a2848db6", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 141}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4c314402d29d2c2f", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5ab0c5bd71e63ad8", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 227}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b0f359fc82dc1097", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 250}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b0f359fc82dc1097", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 257}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f60d9951f1477eef", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 280}}}]}, {"ruleId": "scanner-1838a141491ce38c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b8fd4f5048f96576", "scanner": "scanner-primary", "fingerprint": "1838a141491ce38c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a98ee0b15c1c1d28", "level": "note", "message": {"text": "Very large file: frontend/src/pages/ProductsPage.tsx (1345 lines)"}, "properties": {"repobilityId": "9cbbb0411cd67e3f", "scanner": "scanner-primary", "fingerprint": "a98ee0b15c1c1d28", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-629f38b39f0e4293", "level": "note", "message": {"text": "Very large file: frontend/src/pages/mercari-csv/MercariProductForm.tsx (1059 lines)"}, "properties": {"repobilityId": "257fd8055816100c", "scanner": "scanner-primary", "fingerprint": "629f38b39f0e4293", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d55a8c44ebaf066e", "level": "note", "message": {"text": "Very large file: backend/app/services/mercari_inventory_sync_service.py (1256 lines)"}, "properties": {"repobilityId": "789062dafa86dd83", "scanner": "scanner-primary", "fingerprint": "d55a8c44ebaf066e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-73f0ea058d1b0207", "level": "note", "message": {"text": "Very large file: backend/app/services/rakuten/client.py (1924 lines)"}, "properties": {"repobilityId": "9afc030b3ef32e9c", "scanner": "scanner-primary", "fingerprint": "73f0ea058d1b0207", "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": "1d1ca85175104179", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "b4071330dcf9e7ec", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "1c56f8c9c1bcc983", "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": "fb4eb5c7fde9094b", "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": "494f2aa8f8885d8d", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-a78b9b20cdac793a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/api/index.ts:505"}, "properties": {"repobilityId": "a8cda3fa572fd564", "scanner": "scanner-primary", "fingerprint": "a78b9b20cdac793a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6f8d33aeef653646", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/api/mercari.ts:684"}, "properties": {"repobilityId": "bc5f3e80786c195c", "scanner": "scanner-primary", "fingerprint": "6f8d33aeef653646", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7abc99bd828d2d5b", "level": "note", "message": {"text": "Legacy-named symbol `convertDbToLegacy` in frontend/src/hooks/useMasterData.ts:77"}, "properties": {"repobilityId": "303400d5153fcc17", "scanner": "scanner-primary", "fingerprint": "7abc99bd828d2d5b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-15f862036f8f2326", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/release/prepare-backend-env.mjs:4"}, "properties": {"repobilityId": "2ad06c45f72349d8", "scanner": "scanner-primary", "fingerprint": "15f862036f8f2326", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0fc0717701b0ac58", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/release/scan-bundled-env-secrets.mjs:4"}, "properties": {"repobilityId": "d1d3a1b9682237c5", "scanner": "scanner-primary", "fingerprint": "0fc0717701b0ac58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44a6a8530f2178ec", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/release/prepare-frontend-env.mjs:4"}, "properties": {"repobilityId": "28e772229327ab2d", "scanner": "scanner-primary", "fingerprint": "44a6a8530f2178ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc1d2dcbbe05e014", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 backend/build_mac.py:120"}, "properties": {"repobilityId": "ea0c5c07306dee1b", "scanner": "scanner-primary", "fingerprint": "bc1d2dcbbe05e014", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bdf2f07c210305d5", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 backend/build_nuitka.py:83"}, "properties": {"repobilityId": "6c2a350881c5753e", "scanner": "scanner-primary", "fingerprint": "bdf2f07c210305d5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b7a4a379454f641c", "level": "note", "message": {"text": "Legacy-named symbol `features_v2` in backend/tests/test_ai_assist_service.py:209"}, "properties": {"repobilityId": "a8fbe71bc16d1f42", "scanner": "scanner-primary", "fingerprint": "b7a4a379454f641c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-312c1c2482b35c28", "level": "note", "message": {"text": "Legacy-named symbol `database_backup` in backend/scripts/export_supabase_csv.py:21"}, "properties": {"repobilityId": "570e1440bb44a19a", "scanner": "scanner-primary", "fingerprint": "312c1c2482b35c28", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2e33634ca68fb189", "level": "note", "message": {"text": "Legacy-named symbol `database_backup` in backend/scripts/restore_supabase_backup.py:20"}, "properties": {"repobilityId": "6ccebdf46d0793ea", "scanner": "scanner-primary", "fingerprint": "2e33634ca68fb189", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-272c916eb5ef560a", "level": "note", "message": {"text": "Legacy-named symbol `r_catch_copy` in backend/scripts/migrate_to_supabase.py:27"}, "properties": {"repobilityId": "ddb30666f1f93323", "scanner": "scanner-primary", "fingerprint": "272c916eb5ef560a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8acaa55334d1cad4", "level": "note", "message": {"text": "Legacy-named symbol `database_backup` in backend/app/main.py:39"}, "properties": {"repobilityId": "9a99e48a67aecf58", "scanner": "scanner-primary", "fingerprint": "8acaa55334d1cad4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-41a777868eb024da", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/app/services/field_merge.py:243"}, "properties": {"repobilityId": "c2c6807ec7ca79e7", "scanner": "scanner-primary", "fingerprint": "41a777868eb024da", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3cb70552585e9455", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 backend/app/services/csv_export_service.py:555"}, "properties": {"repobilityId": "c9799d78c03dc06e", "scanner": "scanner-primary", "fingerprint": "3cb70552585e9455", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2b96e8d714f8aa9f", "level": "note", "message": {"text": "Legacy-named symbol `inspect_backup` in backend/app/services/database_backup.py:110"}, "properties": {"repobilityId": "e981e3e7056dcdd9", "scanner": "scanner-primary", "fingerprint": "2b96e8d714f8aa9f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-54213e6bb3b392d5", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/app/services/delivery_widget_config_service.py:17"}, "properties": {"repobilityId": "62d738f3d3e5f375", "scanner": "scanner-primary", "fingerprint": "54213e6bb3b392d5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-45c8278200199bf7", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/app/services/product_register/yahoo_auction_converter.py:179"}, "properties": {"repobilityId": "d345fc406f2d6e28", "scanner": "scanner-primary", "fingerprint": "45c8278200199bf7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91e320b5d3195982", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/app/services/ai_suggest/draft_field_policy.py:10"}, "properties": {"repobilityId": "b33e3d03121db0dd", "scanner": "scanner-primary", "fingerprint": "91e320b5d3195982", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91eff5787745dbb9", "level": "note", "message": {"text": "Legacy-named symbol `create_backup` in backend/app/routers/product_csv.py:118"}, "properties": {"repobilityId": "450e9f576a5f3df6", "scanner": "scanner-primary", "fingerprint": "91eff5787745dbb9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-96a5e90405cc5445", "level": "note", "message": {"text": "Legacy-named symbol `database_backup` in backend/app/routers/database_backup.py:13"}, "properties": {"repobilityId": "3b2c8feb480acd7a", "scanner": "scanner-primary", "fingerprint": "96a5e90405cc5445", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-156811fd43844c14", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 backend/templates/delivery_widget/search.js:531"}, "properties": {"repobilityId": "e86c37cc7f5410ea", "scanner": "scanner-primary", "fingerprint": "156811fd43844c14", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f084f383bf75066d", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/supabase/functions/admin-invite-user/index.ts:3"}, "properties": {"repobilityId": "fc28b97a693b8729", "scanner": "scanner-primary", "fingerprint": "f084f383bf75066d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-022e6399d1ef2beb", "level": "note", "message": {"text": "12 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "7bf4178327da75a2", "scanner": "scanner-primary", "fingerprint": "022e6399d1ef2beb", "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": "adeb165f318a7c23", "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": "0729954568b5ce5f", "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": "80fdcdebf64aa87d", "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": "9b0afa50fa9d194a", "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": "e0d5fc6b3461f776", "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": "afca37944df9d3b9", "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": "a20d48d27d054dae", "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": "91fbe83b525f3329", "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": "0ca0a0ddc507b976", "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": "2a0ea15542328c23", "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": "2cde349215203ea7", "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": "d5003469e15830a8", "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": "2c076943a5765df8", "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": "0d9b32752894e9e9", "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": "5aba34b12ce4ff69", "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": "7780d3d786d993e3", "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": "f600cb5fe4b85193", "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": "b3c198d2651878d1", "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": "a9a1302f1d7ae9a0", "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": "a5608b2db072785b", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-fe48145fce7c8a1c", "level": "error", "message": {"text": "FastAPI POST `export_to_excel` without auth dependency \u2014 backend/app/routers/csv_export.py:54"}, "properties": {"repobilityId": "0e5a6dbdeeeab719", "scanner": "scanner-primary", "fingerprint": "fe48145fce7c8a1c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/csv_export.py"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-a66c8b2a7853cc34", "level": "error", "message": {"text": "FastAPI POST `generate_csv` without auth dependency \u2014 backend/app/routers/csv_export.py:70"}, "properties": {"repobilityId": "c18d82055e562646", "scanner": "scanner-primary", "fingerprint": "a66c8b2a7853cc34", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/csv_export.py"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-bafe555b045e627e", "level": "error", "message": {"text": "FastAPI POST `export_and_generate_csv` without auth dependency \u2014 backend/app/routers/csv_export.py:85"}, "properties": {"repobilityId": "fdf19b5bb622fb0e", "scanner": "scanner-primary", "fingerprint": "bafe555b045e627e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/csv_export.py"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-304e88b165a61345", "level": "error", "message": {"text": "FastAPI POST `export_and_generate_csv_stream` without auth dependency \u2014 backend/app/routers/csv_export.py:115"}, "properties": {"repobilityId": "b81db62437bb96d0", "scanner": "scanner-primary", "fingerprint": "304e88b165a61345", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/csv_export.py"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-fe11d82a6a702d91", "level": "error", "message": {"text": "FastAPI POST `analyze_delivery_banner` without auth dependency \u2014 backend/app/routers/yahoo_delivery_banner.py:52"}, "properties": {"repobilityId": "4c68964012ddb3d2", "scanner": "scanner-primary", "fingerprint": "fe11d82a6a702d91", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_delivery_banner.py"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-26ad8cf50e74394a", "level": "error", "message": {"text": "FastAPI POST `apply_delivery_banner` without auth dependency \u2014 backend/app/routers/yahoo_delivery_banner.py:73"}, "properties": {"repobilityId": "2870725d9c978487", "scanner": "scanner-primary", "fingerprint": "26ad8cf50e74394a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_delivery_banner.py"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-a8ec2af6023decf0", "level": "error", "message": {"text": "FastAPI POST `create_shop` without auth dependency \u2014 backend/app/routers/yahoo_settings.py:76"}, "properties": {"repobilityId": "88abb22353d1cc35", "scanner": "scanner-primary", "fingerprint": "a8ec2af6023decf0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_settings.py"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-8e23826c11c51ee2", "level": "error", "message": {"text": "FastAPI PUT `update_shop` without auth dependency \u2014 backend/app/routers/yahoo_settings.py:95"}, "properties": {"repobilityId": "2039e3c49273151d", "scanner": "scanner-primary", "fingerprint": "8e23826c11c51ee2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_settings.py"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-8ff02233f5a22a46", "level": "error", "message": {"text": "FastAPI DELETE `delete_shop` without auth dependency \u2014 backend/app/routers/yahoo_settings.py:117"}, "properties": {"repobilityId": "b1652124c67fedc6", "scanner": "scanner-primary", "fingerprint": "8ff02233f5a22a46", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_settings.py"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-7fb43692510ba835", "level": "error", "message": {"text": "FastAPI PUT `set_active_shop` without auth dependency \u2014 backend/app/routers/yahoo_settings.py:129"}, "properties": {"repobilityId": "b4dbbfdedbb5afe5", "scanner": "scanner-primary", "fingerprint": "7fb43692510ba835", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_settings.py"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-24e978f8997cae94", "level": "error", "message": {"text": "FastAPI POST `validate_connection` without auth dependency \u2014 backend/app/routers/yahoo_settings.py:143"}, "properties": {"repobilityId": "972bdd7c5c78e737", "scanner": "scanner-primary", "fingerprint": "24e978f8997cae94", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_settings.py"}, "region": {"startLine": 143}}}]}, {"ruleId": "scanner-bcf0a132e5bba031", "level": "error", "message": {"text": "FastAPI POST `analyze_delivery_banner` without auth dependency \u2014 backend/app/routers/rakuten_delivery_banner.py:127"}, "properties": {"repobilityId": "ba4a31a5560ca012", "scanner": "scanner-primary", "fingerprint": "bcf0a132e5bba031", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten_delivery_banner.py"}, "region": {"startLine": 127}}}]}, {"ruleId": "scanner-9efc4b51964f4276", "level": "error", "message": {"text": "FastAPI POST `apply_delivery_banner` without auth dependency \u2014 backend/app/routers/rakuten_delivery_banner.py:140"}, "properties": {"repobilityId": "4d4c1a70e432363f", "scanner": "scanner-primary", "fingerprint": "9efc4b51964f4276", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten_delivery_banner.py"}, "region": {"startLine": 140}}}]}, {"ruleId": "scanner-3c23bf8076983bc1", "level": "error", "message": {"text": "FastAPI POST `record_product_history` without auth dependency \u2014 backend/app/routers/mercari_history.py:38"}, "properties": {"repobilityId": "1bc126c4efcd7e04", "scanner": "scanner-primary", "fingerprint": "3c23bf8076983bc1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari_history.py"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-3431b8a11d5a472c", "level": "error", "message": {"text": "FastAPI POST `get_products_history_batch` without auth dependency \u2014 backend/app/routers/mercari_history.py:68"}, "properties": {"repobilityId": "cf857faa27d32763", "scanner": "scanner-primary", "fingerprint": "3431b8a11d5a472c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari_history.py"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-c4378eb936adab84", "level": "error", "message": {"text": "FastAPI PUT `update_rakuten_price` without auth dependency \u2014 backend/app/routers/price_management.py:65"}, "properties": {"repobilityId": "a9537a37fd1d22a9", "scanner": "scanner-primary", "fingerprint": "c4378eb936adab84", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/price_management.py"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-3b40e6563e2afac3", "level": "error", "message": {"text": "FastAPI PUT `bulk_update_rakuten_prices` without auth dependency \u2014 backend/app/routers/price_management.py:91"}, "properties": {"repobilityId": "1b25866e72286b94", "scanner": "scanner-primary", "fingerprint": "3b40e6563e2afac3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/price_management.py"}, "region": {"startLine": 91}}}]}, {"ruleId": "scanner-e9756a556ff1516b", "level": "error", "message": {"text": "FastAPI PUT `update_yahoo_price` without auth dependency \u2014 backend/app/routers/price_management.py:145"}, "properties": {"repobilityId": "4f0444d34b86924b", "scanner": "scanner-primary", "fingerprint": "e9756a556ff1516b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/price_management.py"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-29f503033e1d8aa0", "level": "error", "message": {"text": "FastAPI PUT `bulk_update_yahoo_prices` without auth dependency \u2014 backend/app/routers/price_management.py:170"}, "properties": {"repobilityId": "95f4e17d059fda43", "scanner": "scanner-primary", "fingerprint": "29f503033e1d8aa0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/price_management.py"}, "region": {"startLine": 170}}}]}, {"ruleId": "scanner-aaf59aa7b3d60669", "level": "error", "message": {"text": "FastAPI POST `sync_prices_from_rakuten` without auth dependency \u2014 backend/app/routers/price_management.py:198"}, "properties": {"repobilityId": "221de138ee5ca5ad", "scanner": "scanner-primary", "fingerprint": "aaf59aa7b3d60669", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/price_management.py"}, "region": {"startLine": 198}}}]}, {"ruleId": "scanner-5fcdd44c441daaee", "level": "error", "message": {"text": "FastAPI POST `save_product` without auth dependency \u2014 backend/app/routers/mercari.py:384"}, "properties": {"repobilityId": "88946156c9f08ed7", "scanner": "scanner-primary", "fingerprint": "5fcdd44c441daaee", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari.py"}, "region": {"startLine": 384}}}]}, {"ruleId": "scanner-97957bfebfcbbc28", "level": "error", "message": {"text": "FastAPI PUT `update_product` without auth dependency \u2014 backend/app/routers/mercari.py:407"}, "properties": {"repobilityId": "d241148734edeb95", "scanner": "scanner-primary", "fingerprint": "97957bfebfcbbc28", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari.py"}, "region": {"startLine": 407}}}]}, {"ruleId": "scanner-55e9e8b082bc3c14", "level": "error", "message": {"text": "FastAPI DELETE `delete_product` without auth dependency \u2014 backend/app/routers/mercari.py:434"}, "properties": {"repobilityId": "dfabf094245ddf3b", "scanner": "scanner-primary", "fingerprint": "55e9e8b082bc3c14", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari.py"}, "region": {"startLine": 434}}}]}, {"ruleId": "scanner-81999b1bf2b820d3", "level": "error", "message": {"text": "FastAPI PATCH `update_batch_status` without auth dependency \u2014 backend/app/routers/mercari.py:456"}, "properties": {"repobilityId": "674ad860fb17d3f4", "scanner": "scanner-primary", "fingerprint": "81999b1bf2b820d3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari.py"}, "region": {"startLine": 456}}}]}, {"ruleId": "scanner-37ba7b0a1f4f13ea", "level": "error", "message": {"text": "FastAPI PATCH `update_batch_shipping_fee` without auth dependency \u2014 backend/app/routers/mercari.py:497"}, "properties": {"repobilityId": "5153707b604c536c", "scanner": "scanner-primary", "fingerprint": "37ba7b0a1f4f13ea", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari.py"}, "region": {"startLine": 497}}}]}, {"ruleId": "scanner-756e1f285d300dfa", "level": "error", "message": {"text": "FastAPI PATCH `batch_sanitize_sku_names` without auth dependency \u2014 backend/app/routers/mercari.py:568"}, "properties": {"repobilityId": "d0bcdd95afa46ae6", "scanner": "scanner-primary", "fingerprint": "756e1f285d300dfa", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari.py"}, "region": {"startLine": 568}}}]}, {"ruleId": "scanner-a0081f56f05773dc", "level": "error", "message": {"text": "FastAPI POST `bulk_get_inventory` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:61"}, "properties": {"repobilityId": "c13893bd1d0f2f70", "scanner": "scanner-primary", "fingerprint": "a0081f56f05773dc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_inventory.py"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-3ef6c7476c22a8b4", "level": "error", "message": {"text": "FastAPI PUT `update_inventory_item` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:315"}, "properties": {"repobilityId": "654c0a340a57c324", "scanner": "scanner-primary", "fingerprint": "3ef6c7476c22a8b4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_inventory.py"}, "region": {"startLine": 315}}}]}, {"ruleId": "scanner-4666dd2a832c9b54", "level": "error", "message": {"text": "FastAPI POST `bulk_update_inventory` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:395"}, "properties": {"repobilityId": "36a7bbe44cc7db8b", "scanner": "scanner-primary", "fingerprint": "4666dd2a832c9b54", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_inventory.py"}, "region": {"startLine": 395}}}]}, {"ruleId": "scanner-c90e71efc4730161", "level": "error", "message": {"text": "FastAPI PUT `update_item_display` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:496"}, "properties": {"repobilityId": "cf9e3c246181e055", "scanner": "scanner-primary", "fingerprint": "c90e71efc4730161", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_inventory.py"}, "region": {"startLine": 496}}}]}, {"ruleId": "scanner-4cf8f9a524731177", "level": "error", "message": {"text": "FastAPI PUT `bulk_update_items_display` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:530"}, "properties": {"repobilityId": "06457134fbb83f51", "scanner": "scanner-primary", "fingerprint": "4cf8f9a524731177", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_inventory.py"}, "region": {"startLine": 530}}}]}, {"ruleId": "scanner-5e9df401a0ad7d6f", "level": "error", "message": {"text": "FastAPI DELETE `delete_product` without auth dependency \u2014 backend/app/routers/yahoo_inventory.py:576"}, "properties": {"repobilityId": "4ed9e3561fedebfe", "scanner": "scanner-primary", "fingerprint": "5e9df401a0ad7d6f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_inventory.py"}, "region": {"startLine": 576}}}]}, {"ruleId": "scanner-cba5fafe47672003", "level": "error", "message": {"text": "FastAPI POST `refresh_leadtime` without auth dependency \u2014 backend/app/routers/delivery_widget.py:37"}, "properties": {"repobilityId": "fb727bbd29b27285", "scanner": "scanner-primary", "fingerprint": "cba5fafe47672003", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/delivery_widget.py"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-e059658a092a3b47", "level": "error", "message": {"text": "FastAPI POST `refresh_holidays` without auth dependency \u2014 backend/app/routers/delivery_widget.py:72"}, "properties": {"repobilityId": "65990030a9ab0328", "scanner": "scanner-primary", "fingerprint": "e059658a092a3b47", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/delivery_widget.py"}, "region": {"startLine": 72}}}]}, {"ruleId": "scanner-3bed383015c36208", "level": "error", "message": {"text": "FastAPI PUT `put_overrides` without auth dependency \u2014 backend/app/routers/delivery_widget.py:104"}, "properties": {"repobilityId": "181c6dbf7d1ba416", "scanner": "scanner-primary", "fingerprint": "3bed383015c36208", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/delivery_widget.py"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-dfe5ca3841495a07", "level": "error", "message": {"text": "FastAPI POST `sync_rakuten_calendar_endpoint` without auth dependency \u2014 backend/app/routers/delivery_widget.py:110"}, "properties": {"repobilityId": "7fa6a4f22570abe4", "scanner": "scanner-primary", "fingerprint": "dfe5ca3841495a07", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/delivery_widget.py"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-ebebc0ad5c9c3776", "level": "error", "message": {"text": "FastAPI PUT `put_config` without auth dependency \u2014 backend/app/routers/delivery_widget.py:128"}, "properties": {"repobilityId": "371e550ec09269b7", "scanner": "scanner-primary", "fingerprint": "ebebc0ad5c9c3776", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/delivery_widget.py"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-18f63d607dc80cbf", "level": "error", "message": {"text": "FastAPI POST `generate_widget` without auth dependency \u2014 backend/app/routers/delivery_widget.py:134"}, "properties": {"repobilityId": "061f703c9e37137d", "scanner": "scanner-primary", "fingerprint": "18f63d607dc80cbf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/delivery_widget.py"}, "region": {"startLine": 134}}}]}, {"ruleId": "scanner-4937d1dbd19348e8", "level": "error", "message": {"text": "FastAPI POST `optimize_single_image` without auth dependency \u2014 backend/app/routers/image_optimize.py:202"}, "properties": {"repobilityId": "f7a10537581107a6", "scanner": "scanner-primary", "fingerprint": "4937d1dbd19348e8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/image_optimize.py"}, "region": {"startLine": 202}}}]}, {"ruleId": "scanner-bd0baf8c1aeaa3b6", "level": "error", "message": {"text": "FastAPI POST `optimize_batch_images` without auth dependency \u2014 backend/app/routers/image_optimize.py:275"}, "properties": {"repobilityId": "e3d06b6dec03a311", "scanner": "scanner-primary", "fingerprint": "bd0baf8c1aeaa3b6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/image_optimize.py"}, "region": {"startLine": 275}}}]}, {"ruleId": "scanner-06b5f0b7d0efcde7", "level": "error", "message": {"text": "FastAPI POST `optimize_uploaded_images` without auth dependency \u2014 backend/app/routers/image_optimize.py:378"}, "properties": {"repobilityId": "b1091c2c8cc4b9ad", "scanner": "scanner-primary", "fingerprint": "06b5f0b7d0efcde7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/image_optimize.py"}, "region": {"startLine": 378}}}]}, {"ruleId": "scanner-311f7c787845be46", "level": "error", "message": {"text": "FastAPI POST `optimize_paths` without auth dependency \u2014 backend/app/routers/image_optimize.py:474"}, "properties": {"repobilityId": "b66ae4f40e100837", "scanner": "scanner-primary", "fingerprint": "311f7c787845be46", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/image_optimize.py"}, "region": {"startLine": 474}}}]}, {"ruleId": "scanner-2cb50a8115674d81", "level": "error", "message": {"text": "FastAPI POST `combine_manual` without auth dependency \u2014 backend/app/routers/image_optimize.py:621"}, "properties": {"repobilityId": "a799651265555944", "scanner": "scanner-primary", "fingerprint": "2cb50a8115674d81", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/image_optimize.py"}, "region": {"startLine": 621}}}]}, {"ruleId": "scanner-a98b0aa4d5f42284", "level": "error", "message": {"text": "FastAPI PUT `update_settings` without auth dependency \u2014 backend/app/routers/ai_assist.py:310"}, "properties": {"repobilityId": "326ae10fe34c6902", "scanner": "scanner-primary", "fingerprint": "a98b0aa4d5f42284", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/ai_assist.py"}, "region": {"startLine": 310}}}]}, {"ruleId": "scanner-a6ef89024f9d6f29", "level": "error", "message": {"text": "FastAPI POST `test_local` without auth dependency \u2014 backend/app/routers/ai_assist.py:333"}, "properties": {"repobilityId": "d2893eeaebde4d9d", "scanner": "scanner-primary", "fingerprint": "a6ef89024f9d6f29", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/ai_assist.py"}, "region": {"startLine": 333}}}]}, {"ruleId": "scanner-19e8adceb7ca0c2b", "level": "error", "message": {"text": "FastAPI POST `test_ollama` without auth dependency \u2014 backend/app/routers/ai_assist.py:340"}, "properties": {"repobilityId": "5ed7f9668c3cc31c", "scanner": "scanner-primary", "fingerprint": "19e8adceb7ca0c2b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/ai_assist.py"}, "region": {"startLine": 340}}}]}, {"ruleId": "scanner-ede2925db6ea973e", "level": "error", "message": {"text": "FastAPI POST `pull_ollama_model` without auth dependency \u2014 backend/app/routers/ai_assist.py:355"}, "properties": {"repobilityId": "da19534d2e90625a", "scanner": "scanner-primary", "fingerprint": "ede2925db6ea973e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/ai_assist.py"}, "region": {"startLine": 355}}}]}, {"ruleId": "scanner-1d9958341d87c59f", "level": "error", "message": {"text": "FastAPI POST `draft_product` without auth dependency \u2014 backend/app/routers/ai_assist.py:364"}, "properties": {"repobilityId": "b2c403a65fbdd3af", "scanner": "scanner-primary", "fingerprint": "1d9958341d87c59f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/ai_assist.py"}, "region": {"startLine": 364}}}]}, {"ruleId": "scanner-7da78fff6a565aeb", "level": "error", "message": {"text": "FastAPI POST `set_api_key` without auth dependency \u2014 backend/app/routers/ai_assist.py:399"}, "properties": {"repobilityId": "bb3d67d07ffe56db", "scanner": "scanner-primary", "fingerprint": "7da78fff6a565aeb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/ai_assist.py"}, "region": {"startLine": 399}}}]}, {"ruleId": "scanner-388778196170ad4f", "level": "error", "message": {"text": "FastAPI DELETE `clear_api_key` without auth dependency \u2014 backend/app/routers/ai_assist.py:412"}, "properties": {"repobilityId": "ad0d462948d4ef56", "scanner": "scanner-primary", "fingerprint": "388778196170ad4f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/ai_assist.py"}, "region": {"startLine": 412}}}]}, {"ruleId": "scanner-d04ba6c2d3640b7c", "level": "error", "message": {"text": "FastAPI POST `suggest_product_name` without auth dependency \u2014 backend/app/routers/ai_assist.py:422"}, "properties": {"repobilityId": "feb9c72f821f9ef5", "scanner": "scanner-primary", "fingerprint": "d04ba6c2d3640b7c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/ai_assist.py"}, "region": {"startLine": 422}}}]}, {"ruleId": "scanner-e7283fd2f142260c", "level": "error", "message": {"text": "FastAPI POST `suggest_catchcopy` without auth dependency \u2014 backend/app/routers/ai_assist.py:457"}, "properties": {"repobilityId": "bad9f6c7b23226f7", "scanner": "scanner-primary", "fingerprint": "e7283fd2f142260c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/ai_assist.py"}, "region": {"startLine": 457}}}]}, {"ruleId": "scanner-ba03a1539f25c87e", "level": "error", "message": {"text": "FastAPI POST `suggest_features` without auth dependency \u2014 backend/app/routers/ai_assist.py:492"}, "properties": {"repobilityId": "1bc6e52b929db020", "scanner": "scanner-primary", "fingerprint": "ba03a1539f25c87e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/ai_assist.py"}, "region": {"startLine": 492}}}]}, {"ruleId": "scanner-16ef65abd18bd4c4", "level": "error", "message": {"text": "FastAPI POST `record_selection` without auth dependency \u2014 backend/app/routers/ai_assist.py:527"}, "properties": {"repobilityId": "3074dbc7a8f2ca30", "scanner": "scanner-primary", "fingerprint": "16ef65abd18bd4c4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/ai_assist.py"}, "region": {"startLine": 527}}}]}, {"ruleId": "scanner-46a91e04da039455", "level": "error", "message": {"text": "FastAPI POST `clear_cache` without auth dependency \u2014 backend/app/routers/ai_assist.py:552"}, "properties": {"repobilityId": "599e0721f4e1024d", "scanner": "scanner-primary", "fingerprint": "46a91e04da039455", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/ai_assist.py"}, "region": {"startLine": 552}}}]}, {"ruleId": "scanner-8e6a69e4ed6ba0c1", "level": "error", "message": {"text": "FastAPI POST `export_all_csv` without auth dependency \u2014 backend/app/routers/product_csv.py:75"}, "properties": {"repobilityId": "9ccb8308e00a5b4e", "scanner": "scanner-primary", "fingerprint": "8e6a69e4ed6ba0c1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/product_csv.py"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-f11e86a1074fef3c", "level": "error", "message": {"text": "FastAPI POST `create_backup` without auth dependency \u2014 backend/app/routers/product_csv.py:117"}, "properties": {"repobilityId": "8f724237a945d815", "scanner": "scanner-primary", "fingerprint": "f11e86a1074fef3c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/product_csv.py"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-455e844c61c2917b", "level": "error", "message": {"text": "FastAPI POST `preview_products_import` without auth dependency \u2014 backend/app/routers/product_csv.py:157"}, "properties": {"repobilityId": "e050f8c1abf9941a", "scanner": "scanner-primary", "fingerprint": "455e844c61c2917b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/product_csv.py"}, "region": {"startLine": 157}}}]}, {"ruleId": "scanner-cb80f2a5e360e38a", "level": "error", "message": {"text": "FastAPI POST `preview_skus_import` without auth dependency \u2014 backend/app/routers/product_csv.py:223"}, "properties": {"repobilityId": "3c3fcd40aeb67c01", "scanner": "scanner-primary", "fingerprint": "cb80f2a5e360e38a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/product_csv.py"}, "region": {"startLine": 223}}}]}, {"ruleId": "scanner-5c3874e9d1faf4a9", "level": "error", "message": {"text": "FastAPI POST `import_products_csv` without auth dependency \u2014 backend/app/routers/product_csv.py:282"}, "properties": {"repobilityId": "b426f648781a0306", "scanner": "scanner-primary", "fingerprint": "5c3874e9d1faf4a9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/product_csv.py"}, "region": {"startLine": 282}}}]}, {"ruleId": "scanner-85d71c498baaac62", "level": "error", "message": {"text": "FastAPI POST `import_skus_csv` without auth dependency \u2014 backend/app/routers/product_csv.py:336"}, "properties": {"repobilityId": "c8d45802ec72c5f9", "scanner": "scanner-primary", "fingerprint": "85d71c498baaac62", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/product_csv.py"}, "region": {"startLine": 336}}}]}, {"ruleId": "scanner-b5d43dab1f32b060", "level": "error", "message": {"text": "FastAPI POST `create_shop` without auth dependency \u2014 backend/app/routers/rakuten.py:136"}, "properties": {"repobilityId": "088ca2f4d8f19d8a", "scanner": "scanner-primary", "fingerprint": "b5d43dab1f32b060", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten.py"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-77eabf8858aeb240", "level": "error", "message": {"text": "FastAPI PUT `update_shop` without auth dependency \u2014 backend/app/routers/rakuten.py:189"}, "properties": {"repobilityId": "007e2e422fc0f91b", "scanner": "scanner-primary", "fingerprint": "77eabf8858aeb240", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten.py"}, "region": {"startLine": 189}}}]}, {"ruleId": "scanner-ae93e5996ba02acd", "level": "error", "message": {"text": "FastAPI DELETE `delete_shop` without auth dependency \u2014 backend/app/routers/rakuten.py:251"}, "properties": {"repobilityId": "f3873b608bd633a2", "scanner": "scanner-primary", "fingerprint": "ae93e5996ba02acd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten.py"}, "region": {"startLine": 251}}}]}, {"ruleId": "scanner-bf0a35330687fc64", "level": "error", "message": {"text": "FastAPI PUT `set_active_shop` without auth dependency \u2014 backend/app/routers/rakuten.py:267"}, "properties": {"repobilityId": "0767d4b38d4de02e", "scanner": "scanner-primary", "fingerprint": "bf0a35330687fc64", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten.py"}, "region": {"startLine": 267}}}]}, {"ruleId": "scanner-39181dad0eaefaeb", "level": "error", "message": {"text": "FastAPI POST `validate_connection` without auth dependency \u2014 backend/app/routers/rakuten.py:286"}, "properties": {"repobilityId": "ef8ef1698f38b3ea", "scanner": "scanner-primary", "fingerprint": "39181dad0eaefaeb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten.py"}, "region": {"startLine": 286}}}]}, {"ruleId": "scanner-c3ce9d6c394a3437", "level": "error", "message": {"text": "FastAPI POST `upload_product_name_master` without auth dependency \u2014 backend/app/routers/master_data.py:61"}, "properties": {"repobilityId": "0b6b58c2952b50dc", "scanner": "scanner-primary", "fingerprint": "c3ce9d6c394a3437", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/master_data.py"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-b97211c39080f2b1", "level": "error", "message": {"text": "FastAPI POST `check_product_page_gap` without auth dependency \u2014 backend/app/routers/master_data.py:210"}, "properties": {"repobilityId": "ec4267f530e2572b", "scanner": "scanner-primary", "fingerprint": "b97211c39080f2b1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/master_data.py"}, "region": {"startLine": 210}}}]}, {"ruleId": "scanner-4684bb16d148718b", "level": "error", "message": {"text": "FastAPI POST `fetch_product` without auth dependency \u2014 backend/app/routers/page_editor.py:111"}, "properties": {"repobilityId": "ae4f58ba86096545", "scanner": "scanner-primary", "fingerprint": "4684bb16d148718b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/page_editor.py"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-3c118eb7a8c315ea", "level": "error", "message": {"text": "FastAPI POST `update_product` without auth dependency \u2014 backend/app/routers/page_editor.py:165"}, "properties": {"repobilityId": "453c83096f58ccef", "scanner": "scanner-primary", "fingerprint": "3c118eb7a8c315ea", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/page_editor.py"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-cc66c7a902a5676f", "level": "error", "message": {"text": "FastAPI POST `bulk_fetch_products` without auth dependency \u2014 backend/app/routers/page_editor.py:284"}, "properties": {"repobilityId": "8c3ea56e417586ff", "scanner": "scanner-primary", "fingerprint": "cc66c7a902a5676f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/page_editor.py"}, "region": {"startLine": 284}}}]}, {"ruleId": "scanner-b83f60348b734deb", "level": "error", "message": {"text": "FastAPI POST `bulk_update_products` without auth dependency \u2014 backend/app/routers/page_editor.py:312"}, "properties": {"repobilityId": "0bd58d4368307616", "scanner": "scanner-primary", "fingerprint": "b83f60348b734deb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/page_editor.py"}, "region": {"startLine": 312}}}]}, {"ruleId": "scanner-a9c280f82559e135", "level": "error", "message": {"text": "FastAPI POST `preview_changes` without auth dependency \u2014 backend/app/routers/page_editor.py:355"}, "properties": {"repobilityId": "8e7c34531117e5d9", "scanner": "scanner-primary", "fingerprint": "a9c280f82559e135", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/page_editor.py"}, "region": {"startLine": 355}}}]}, {"ruleId": "scanner-3e4eb813a07625b4", "level": "error", "message": {"text": "FastAPI POST `import_downloaded_csv` without auth dependency \u2014 backend/app/routers/mercari_csv_import.py:20"}, "properties": {"repobilityId": "37251c25ba2b35ab", "scanner": "scanner-primary", "fingerprint": "3e4eb813a07625b4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari_csv_import.py"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-1a2c26e2ef1be28d", "level": "error", "message": {"text": "FastAPI POST `export_furimaru_diff_csv` without auth dependency \u2014 backend/app/routers/mercari_csv_import.py:41"}, "properties": {"repobilityId": "5141e13019d5568e", "scanner": "scanner-primary", "fingerprint": "1a2c26e2ef1be28d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari_csv_import.py"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-bef1650cbc955542", "level": "error", "message": {"text": "FastAPI POST `export_manage_number_batches` without auth dependency \u2014 backend/app/routers/mercari_csv_import.py:74"}, "properties": {"repobilityId": "9954d9dc05fcc65e", "scanner": "scanner-primary", "fingerprint": "bef1650cbc955542", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari_csv_import.py"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-ccc92f36f05f3b71", "level": "error", "message": {"text": "FastAPI POST `import_item` without auth dependency \u2014 backend/app/routers/item_import.py:104"}, "properties": {"repobilityId": "7fc69ba749189d39", "scanner": "scanner-primary", "fingerprint": "ccc92f36f05f3b71", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/item_import.py"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-448bbc74c967313f", "level": "error", "message": {"text": "FastAPI POST `import_items_bulk` without auth dependency \u2014 backend/app/routers/item_import.py:238"}, "properties": {"repobilityId": "9269a52878cb5a39", "scanner": "scanner-primary", "fingerprint": "448bbc74c967313f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/item_import.py"}, "region": {"startLine": 238}}}]}, {"ruleId": "scanner-aab1437e259cefac", "level": "error", "message": {"text": "FastAPI POST `export_csv` without auth dependency \u2014 backend/app/routers/mercari_csv_export.py:29"}, "properties": {"repobilityId": "2c78f256e05adf92", "scanner": "scanner-primary", "fingerprint": "aab1437e259cefac", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari_csv_export.py"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-8fbd124690aaa72f", "level": "error", "message": {"text": "FastAPI POST `export_csv_by_ids` without auth dependency \u2014 backend/app/routers/mercari_csv_export.py:96"}, "properties": {"repobilityId": "c857af4342254dd8", "scanner": "scanner-primary", "fingerprint": "8fbd124690aaa72f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari_csv_export.py"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-3316a0871040d9c0", "level": "error", "message": {"text": "FastAPI POST `export_update_bundle_by_ids` without auth dependency \u2014 backend/app/routers/mercari_csv_export.py:133"}, "properties": {"repobilityId": "8c7494d8f0517b26", "scanner": "scanner-primary", "fingerprint": "3316a0871040d9c0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari_csv_export.py"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-cc5a07ffc06e9ab5", "level": "error", "message": {"text": "FastAPI POST `validate_images` without auth dependency \u2014 backend/app/routers/mercari_csv_export.py:184"}, "properties": {"repobilityId": "98e427d1103d6a04", "scanner": "scanner-primary", "fingerprint": "cc5a07ffc06e9ab5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari_csv_export.py"}, "region": {"startLine": 184}}}]}, {"ruleId": "scanner-8bad894f77ed05ec", "level": "error", "message": {"text": "FastAPI POST `upload_rakuten_folder` without auth dependency \u2014 backend/app/routers/rakuten_images.py:135"}, "properties": {"repobilityId": "66a71b8ba911766b", "scanner": "scanner-primary", "fingerprint": "8bad894f77ed05ec", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten_images.py"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-738d5f6c020d1217", "level": "error", "message": {"text": "FastAPI POST `upload_rakuten_files` without auth dependency \u2014 backend/app/routers/rakuten_images.py:246"}, "properties": {"repobilityId": "8df0dfa85f587f9e", "scanner": "scanner-primary", "fingerprint": "738d5f6c020d1217", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten_images.py"}, "region": {"startLine": 246}}}]}, {"ruleId": "scanner-558cdbb5a31d3691", "level": "error", "message": {"text": "FastAPI POST `upload_rakuten_folder_stream` without auth dependency \u2014 backend/app/routers/rakuten_images.py:425"}, "properties": {"repobilityId": "c35dff5330790a1e", "scanner": "scanner-primary", "fingerprint": "558cdbb5a31d3691", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten_images.py"}, "region": {"startLine": 425}}}]}, {"ruleId": "scanner-14a6c2e3688506e6", "level": "error", "message": {"text": "FastAPI POST `upload_rakuten_files_stream` without auth dependency \u2014 backend/app/routers/rakuten_images.py:478"}, "properties": {"repobilityId": "bbe0cdbbe501fd69", "scanner": "scanner-primary", "fingerprint": "14a6c2e3688506e6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten_images.py"}, "region": {"startLine": 478}}}]}, {"ruleId": "scanner-8263f23b395e0ca7", "level": "error", "message": {"text": "FastAPI POST `reload_defaults` without auth dependency \u2014 backend/app/routers/mercari_constants.py:249"}, "properties": {"repobilityId": "98ed8658455b41ef", "scanner": "scanner-primary", "fingerprint": "8263f23b395e0ca7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari_constants.py"}, "region": {"startLine": 249}}}]}, {"ruleId": "scanner-931e8b3b4a57684a", "level": "error", "message": {"text": "FastAPI POST `generate_ai_image` without auth dependency \u2014 backend/app/routers/ai_image_generation.py:112"}, "properties": {"repobilityId": "a1ac6ba8ba3b5e48", "scanner": "scanner-primary", "fingerprint": "931e8b3b4a57684a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/ai_image_generation.py"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-a10ab98868435599", "level": "error", "message": {"text": "FastAPI POST `generate_html` without auth dependency \u2014 backend/app/routers/html_generation.py:148"}, "properties": {"repobilityId": "68ce1b3c35c039db", "scanner": "scanner-primary", "fingerprint": "a10ab98868435599", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/html_generation.py"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-56ea7460d2792afd", "level": "error", "message": {"text": "FastAPI POST `optimize_images` without auth dependency \u2014 backend/app/routers/html_generation.py:218"}, "properties": {"repobilityId": "e32bac1bcc02b86c", "scanner": "scanner-primary", "fingerprint": "56ea7460d2792afd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/html_generation.py"}, "region": {"startLine": 218}}}]}, {"ruleId": "scanner-4fa6914a7a3aefe5", "level": "error", "message": {"text": "FastAPI POST `generate_flick_metadata` without auth dependency \u2014 backend/app/routers/html_generation.py:256"}, "properties": {"repobilityId": "e9a2fe003484622a", "scanner": "scanner-primary", "fingerprint": "4fa6914a7a3aefe5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/html_generation.py"}, "region": {"startLine": 256}}}]}, {"ruleId": "scanner-8ebcfe571efe1d19", "level": "error", "message": {"text": "FastAPI POST `copy_images` without auth dependency \u2014 backend/app/routers/html_generation.py:301"}, "properties": {"repobilityId": "f4ffb64c4f59f804", "scanner": "scanner-primary", "fingerprint": "8ebcfe571efe1d19", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/html_generation.py"}, "region": {"startLine": 301}}}]}, {"ruleId": "scanner-a1583b7d7ee230b9", "level": "error", "message": {"text": "FastAPI POST `check_image_folder` without auth dependency \u2014 backend/app/routers/html_generation.py:324"}, "properties": {"repobilityId": "7f44e7732ff62171", "scanner": "scanner-primary", "fingerprint": "a1583b7d7ee230b9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/html_generation.py"}, "region": {"startLine": 324}}}]}, {"ruleId": "scanner-d5b729064b7526b3", "level": "error", "message": {"text": "FastAPI POST `count_images` without auth dependency \u2014 backend/app/routers/html_generation.py:349"}, "properties": {"repobilityId": "eaa203fc60210ee8", "scanner": "scanner-primary", "fingerprint": "d5b729064b7526b3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/html_generation.py"}, "region": {"startLine": 349}}}]}, {"ruleId": "scanner-c3548c5383cb6cec", "level": "error", "message": {"text": "FastAPI POST `cleanup_combined_images` without auth dependency \u2014 backend/app/routers/html_generation.py:369"}, "properties": {"repobilityId": "13e938207dcd75d1", "scanner": "scanner-primary", "fingerprint": "c3548c5383cb6cec", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/html_generation.py"}, "region": {"startLine": 369}}}]}, {"ruleId": "scanner-8e4f42347a1191df", "level": "error", "message": {"text": "FastAPI POST `sync_flick_metadata` without auth dependency \u2014 backend/app/routers/html_generation.py:409"}, "properties": {"repobilityId": "24258cc126fed182", "scanner": "scanner-primary", "fingerprint": "8e4f42347a1191df", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/html_generation.py"}, "region": {"startLine": 409}}}]}, {"ruleId": "scanner-21248fc9fa8c8630", "level": "error", "message": {"text": "FastAPI POST `sync_auction_metadata` without auth dependency \u2014 backend/app/routers/html_generation.py:462"}, "properties": {"repobilityId": "413ae52518a6131b", "scanner": "scanner-primary", "fingerprint": "21248fc9fa8c8630", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/html_generation.py"}, "region": {"startLine": 462}}}]}, {"ruleId": "scanner-954dec037ecc17ea", "level": "error", "message": {"text": "FastAPI PUT `update_settings` without auth dependency \u2014 backend/app/routers/settings.py:74"}, "properties": {"repobilityId": "8448c832bcc88971", "scanner": "scanner-primary", "fingerprint": "954dec037ecc17ea", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/settings.py"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-aa62fad2a825412e", "level": "error", "message": {"text": "FastAPI POST `process_csv_by_path` without auth dependency \u2014 backend/app/routers/yahuoku_csv.py:47"}, "properties": {"repobilityId": "36b39bdc7a7a5b5b", "scanner": "scanner-primary", "fingerprint": "aa62fad2a825412e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahuoku_csv.py"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-0a0267a341d886c1", "level": "error", "message": {"text": "FastAPI POST `process_uploaded_csv` without auth dependency \u2014 backend/app/routers/yahuoku_csv.py:80"}, "properties": {"repobilityId": "1026b8ddc9bb2e3f", "scanner": "scanner-primary", "fingerprint": "0a0267a341d886c1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahuoku_csv.py"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-4582249118421c5f", "level": "error", "message": {"text": "FastAPI POST `upload_image_pack` without auth dependency \u2014 backend/app/routers/yahoo_images.py:108"}, "properties": {"repobilityId": "d96e050bdfb4c337", "scanner": "scanner-primary", "fingerprint": "4582249118421c5f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_images.py"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-dffbcb4ba92a1d74", "level": "error", "message": {"text": "FastAPI POST `create_zip_and_upload` without auth dependency \u2014 backend/app/routers/yahoo_images.py:128"}, "properties": {"repobilityId": "29b6f384ad636f6a", "scanner": "scanner-primary", "fingerprint": "dffbcb4ba92a1d74", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_images.py"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-0a9d0d8481658fea", "level": "error", "message": {"text": "FastAPI POST `upload_from_folder` without auth dependency \u2014 backend/app/routers/yahoo_images.py:177"}, "properties": {"repobilityId": "55fd89c030a43a58", "scanner": "scanner-primary", "fingerprint": "0a9d0d8481658fea", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_images.py"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-d2debf9fd1c840f3", "level": "error", "message": {"text": "FastAPI POST `upload_from_folder_stream` without auth dependency \u2014 backend/app/routers/yahoo_images.py:389"}, "properties": {"repobilityId": "0553dc2939707956", "scanner": "scanner-primary", "fingerprint": "d2debf9fd1c840f3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_images.py"}, "region": {"startLine": 389}}}]}, {"ruleId": "scanner-1782c86ff78a00c8", "level": "error", "message": {"text": "FastAPI POST `create_zip_and_upload_stream` without auth dependency \u2014 backend/app/routers/yahoo_images.py:419"}, "properties": {"repobilityId": "60d788574cd755a8", "scanner": "scanner-primary", "fingerprint": "1782c86ff78a00c8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/yahoo_images.py"}, "region": {"startLine": 419}}}]}, {"ruleId": "scanner-b9d6587bbb6d8045", "level": "error", "message": {"text": "FastAPI POST `inspect_database_backup` without auth dependency \u2014 backend/app/routers/database_backup.py:61"}, "properties": {"repobilityId": "21803e44fd881b5b", "scanner": "scanner-primary", "fingerprint": "b9d6587bbb6d8045", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/database_backup.py"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-df03cdd0192a0cad", "level": "error", "message": {"text": "FastAPI POST `create_database_backup` without auth dependency \u2014 backend/app/routers/database_backup.py:73"}, "properties": {"repobilityId": "a47c3d9204d4ec66", "scanner": "scanner-primary", "fingerprint": "df03cdd0192a0cad", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/database_backup.py"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-7ef13416adba00e4", "level": "error", "message": {"text": "FastAPI POST `restore_database_backup` without auth dependency \u2014 backend/app/routers/database_backup.py:97"}, "properties": {"repobilityId": "b765bea9a24b3c7a", "scanner": "scanner-primary", "fingerprint": "7ef13416adba00e4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/database_backup.py"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-9a0823ddeb71999d", "level": "error", "message": {"text": "FastAPI POST `search_products` without auth dependency \u2014 backend/app/routers/product.py:110"}, "properties": {"repobilityId": "c848589d484c1b4c", "scanner": "scanner-primary", "fingerprint": "9a0823ddeb71999d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/product.py"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-b68ffb5ce50cb1e0", "level": "error", "message": {"text": "FastAPI POST `save_product_api` without auth dependency \u2014 backend/app/routers/product.py:152"}, "properties": {"repobilityId": "23fc20cee486f6dc", "scanner": "scanner-primary", "fingerprint": "b68ffb5ce50cb1e0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/product.py"}, "region": {"startLine": 152}}}]}, {"ruleId": "scanner-40ba60e7c03d5185", "level": "error", "message": {"text": "FastAPI POST `validate_product` without auth dependency \u2014 backend/app/routers/product.py:165"}, "properties": {"repobilityId": "48a03a762826b9b4", "scanner": "scanner-primary", "fingerprint": "40ba60e7c03d5185", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/product.py"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-1d6c3ad5a4dec928", "level": "error", "message": {"text": "FastAPI POST `batch_update_control_column` without auth dependency \u2014 backend/app/routers/product.py:172"}, "properties": {"repobilityId": "6b01b74203ca4725", "scanner": "scanner-primary", "fingerprint": "1d6c3ad5a4dec928", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/product.py"}, "region": {"startLine": 172}}}]}, {"ruleId": "scanner-561ae7caa23d8566", "level": "error", "message": {"text": "FastAPI POST `batch_delete_products` without auth dependency \u2014 backend/app/routers/product.py:198"}, "properties": {"repobilityId": "f97ed9c77037ccc3", "scanner": "scanner-primary", "fingerprint": "561ae7caa23d8566", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/product.py"}, "region": {"startLine": 198}}}]}, {"ruleId": "scanner-5e621195d83b4f5b", "level": "error", "message": {"text": "FastAPI POST `duplicate_product` without auth dependency \u2014 backend/app/routers/product.py:210"}, "properties": {"repobilityId": "6584630c53af5a96", "scanner": "scanner-primary", "fingerprint": "5e621195d83b4f5b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/product.py"}, "region": {"startLine": 210}}}]}, {"ruleId": "scanner-54ade36b9c13247d", "level": "error", "message": {"text": "FastAPI POST `copy_related_products` without auth dependency \u2014 backend/app/routers/product.py:233"}, "properties": {"repobilityId": "2e847567a584abc9", "scanner": "scanner-primary", "fingerprint": "54ade36b9c13247d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/product.py"}, "region": {"startLine": 233}}}]}, {"ruleId": "scanner-4712e9bc4f286351", "level": "error", "message": {"text": "FastAPI POST `convert_r_to_y` without auth dependency \u2014 backend/app/routers/product.py:294"}, "properties": {"repobilityId": "8151503c7ff68a99", "scanner": "scanner-primary", "fingerprint": "4712e9bc4f286351", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/product.py"}, "region": {"startLine": 294}}}]}, {"ruleId": "scanner-dd29e7f32527c6ce", "level": "error", "message": {"text": "FastAPI POST `upload_product_images` without auth dependency \u2014 backend/app/routers/product.py:318"}, "properties": {"repobilityId": "c3124bfaa78c58c1", "scanner": "scanner-primary", "fingerprint": "dd29e7f32527c6ce", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/product.py"}, "region": {"startLine": 318}}}]}, {"ruleId": "scanner-6be472ed031e97aa", "level": "error", "message": {"text": "FastAPI POST `preview_rakuten_import` without auth dependency \u2014 backend/app/routers/mercari_rakuten_import.py:344"}, "properties": {"repobilityId": "b4eb5ab82a73c295", "scanner": "scanner-primary", "fingerprint": "6be472ed031e97aa", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari_rakuten_import.py"}, "region": {"startLine": 344}}}]}, {"ruleId": "scanner-130af61de3a97958", "level": "error", "message": {"text": "FastAPI POST `import_rakuten_products` without auth dependency \u2014 backend/app/routers/mercari_rakuten_import.py:436"}, "properties": {"repobilityId": "74a9158ee5c5d562", "scanner": "scanner-primary", "fingerprint": "130af61de3a97958", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari_rakuten_import.py"}, "region": {"startLine": 436}}}]}, {"ruleId": "scanner-4c1022175e4b3ba2", "level": "error", "message": {"text": "FastAPI POST `save_preview_products` without auth dependency \u2014 backend/app/routers/mercari_rakuten_import.py:586"}, "properties": {"repobilityId": "470fcf745216f21c", "scanner": "scanner-primary", "fingerprint": "4c1022175e4b3ba2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari_rakuten_import.py"}, "region": {"startLine": 586}}}]}, {"ruleId": "scanner-cd8c1fd214c3112c", "level": "error", "message": {"text": "FastAPI POST `authenticate` without auth dependency \u2014 backend/app/routers/inventory_master.py:126"}, "properties": {"repobilityId": "a43311b02f62e294", "scanner": "scanner-primary", "fingerprint": "cd8c1fd214c3112c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/inventory_master.py"}, "region": {"startLine": 126}}}]}, {"ruleId": "scanner-023e9e9b61d54c0a", "level": "error", "message": {"text": "FastAPI POST `create_sheet` without auth dependency \u2014 backend/app/routers/inventory_master.py:137"}, "properties": {"repobilityId": "52a32d3a84c9db23", "scanner": "scanner-primary", "fingerprint": "023e9e9b61d54c0a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/inventory_master.py"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-f302681c859d07a7", "level": "error", "message": {"text": "FastAPI POST `set_spreadsheet` without auth dependency \u2014 backend/app/routers/inventory_master.py:153"}, "properties": {"repobilityId": "efeca53ea2c41aee", "scanner": "scanner-primary", "fingerprint": "f302681c859d07a7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/inventory_master.py"}, "region": {"startLine": 153}}}]}, {"ruleId": "scanner-850afc9fe1e61a0b", "level": "error", "message": {"text": "FastAPI POST `set_header` without auth dependency \u2014 backend/app/routers/inventory_master.py:161"}, "properties": {"repobilityId": "2861f31469f88245", "scanner": "scanner-primary", "fingerprint": "850afc9fe1e61a0b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/inventory_master.py"}, "region": {"startLine": 161}}}]}, {"ruleId": "scanner-fd0462e631d85de5", "level": "error", "message": {"text": "FastAPI POST `clear_data` without auth dependency \u2014 backend/app/routers/inventory_master.py:183"}, "properties": {"repobilityId": "441975a2b05b9b8f", "scanner": "scanner-primary", "fingerprint": "fd0462e631d85de5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/inventory_master.py"}, "region": {"startLine": 183}}}]}, {"ruleId": "scanner-57aaeb985335cda2", "level": "error", "message": {"text": "FastAPI POST `update_quantity` without auth dependency \u2014 backend/app/routers/inventory_master.py:249"}, "properties": {"repobilityId": "e51315d009f5462a", "scanner": "scanner-primary", "fingerprint": "57aaeb985335cda2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/inventory_master.py"}, "region": {"startLine": 249}}}]}, {"ruleId": "scanner-493345ceccef91c1", "level": "error", "message": {"text": "FastAPI POST `upsert_item` without auth dependency \u2014 backend/app/routers/inventory_master.py:269"}, "properties": {"repobilityId": "7cbf2b5d9dd5c739", "scanner": "scanner-primary", "fingerprint": "493345ceccef91c1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/inventory_master.py"}, "region": {"startLine": 269}}}]}, {"ruleId": "scanner-fbcd4dde2a0a5a46", "level": "error", "message": {"text": "FastAPI POST `sync_from_mall` without auth dependency \u2014 backend/app/routers/inventory_master.py:351"}, "properties": {"repobilityId": "d7d7c76f30b7f963", "scanner": "scanner-primary", "fingerprint": "fbcd4dde2a0a5a46", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/inventory_master.py"}, "region": {"startLine": 351}}}]}, {"ruleId": "scanner-bba3619d59c9e4ab", "level": "error", "message": {"text": "FastAPI POST `import_rakuten_csv` without auth dependency \u2014 backend/app/routers/inventory_master.py:481"}, "properties": {"repobilityId": "a5aefa9c4920ee80", "scanner": "scanner-primary", "fingerprint": "bba3619d59c9e4ab", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/inventory_master.py"}, "region": {"startLine": 481}}}]}, {"ruleId": "scanner-59dfe5f16489be22", "level": "error", "message": {"text": "FastAPI POST `preview_migration` without auth dependency \u2014 backend/app/routers/migration.py:188"}, "properties": {"repobilityId": "d5a26bdbca1e991a", "scanner": "scanner-primary", "fingerprint": "59dfe5f16489be22", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/migration.py"}, "region": {"startLine": 188}}}]}, {"ruleId": "scanner-d9ad7c5f2ebf5c10", "level": "error", "message": {"text": "FastAPI POST `execute_migration` without auth dependency \u2014 backend/app/routers/migration.py:256"}, "properties": {"repobilityId": "61d5d25334e0369b", "scanner": "scanner-primary", "fingerprint": "d9ad7c5f2ebf5c10", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/migration.py"}, "region": {"startLine": 256}}}]}, {"ruleId": "scanner-372887b3a42cb842", "level": "error", "message": {"text": "FastAPI POST `bulk_get_inventory` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:168"}, "properties": {"repobilityId": "959a3c38699270a6", "scanner": "scanner-primary", "fingerprint": "372887b3a42cb842", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten_inventory.py"}, "region": {"startLine": 168}}}]}, {"ruleId": "scanner-e330012e61cbce6e", "level": "error", "message": {"text": "FastAPI PUT `update_inventory_item` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:293"}, "properties": {"repobilityId": "50396ba993639a8a", "scanner": "scanner-primary", "fingerprint": "e330012e61cbce6e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten_inventory.py"}, "region": {"startLine": 293}}}]}, {"ruleId": "scanner-4f7e0cb90e6bb83d", "level": "error", "message": {"text": "FastAPI POST `bulk_update_inventory` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:436"}, "properties": {"repobilityId": "4a8b747ab9545d58", "scanner": "scanner-primary", "fingerprint": "4f7e0cb90e6bb83d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten_inventory.py"}, "region": {"startLine": 436}}}]}, {"ruleId": "scanner-1f969d7bfbb90b2e", "level": "error", "message": {"text": "FastAPI DELETE `delete_inventory_item` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:582"}, "properties": {"repobilityId": "cbc167a339f7ddda", "scanner": "scanner-primary", "fingerprint": "1f969d7bfbb90b2e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten_inventory.py"}, "region": {"startLine": 582}}}]}, {"ruleId": "scanner-398267fb2544e553", "level": "error", "message": {"text": "FastAPI PUT `update_product_hide_item` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:652"}, "properties": {"repobilityId": "2d8415fa8ed62349", "scanner": "scanner-primary", "fingerprint": "398267fb2544e553", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten_inventory.py"}, "region": {"startLine": 652}}}]}, {"ruleId": "scanner-3a38be400c3819c5", "level": "error", "message": {"text": "FastAPI PUT `bulk_update_product_hide_item` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:685"}, "properties": {"repobilityId": "35ea5d88eb68f611", "scanner": "scanner-primary", "fingerprint": "3a38be400c3819c5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten_inventory.py"}, "region": {"startLine": 685}}}]}, {"ruleId": "scanner-375c9785b655650b", "level": "error", "message": {"text": "FastAPI DELETE `delete_product` without auth dependency \u2014 backend/app/routers/rakuten_inventory.py:744"}, "properties": {"repobilityId": "ba6c37a0ef553ca6", "scanner": "scanner-primary", "fingerprint": "375c9785b655650b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/rakuten_inventory.py"}, "region": {"startLine": 744}}}]}, {"ruleId": "scanner-38545805fce5a758", "level": "error", "message": {"text": "FastAPI POST `create_material_spec` without auth dependency \u2014 backend/app/routers/material_specs.py:105"}, "properties": {"repobilityId": "fd776e53bc099309", "scanner": "scanner-primary", "fingerprint": "38545805fce5a758", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/material_specs.py"}, "region": {"startLine": 105}}}]}, {"ruleId": "scanner-e492caf95666b90e", "level": "error", "message": {"text": "FastAPI PUT `update_material_spec` without auth dependency \u2014 backend/app/routers/material_specs.py:150"}, "properties": {"repobilityId": "d803aa08bc2cc1e8", "scanner": "scanner-primary", "fingerprint": "e492caf95666b90e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/material_specs.py"}, "region": {"startLine": 150}}}]}, {"ruleId": "scanner-0bb916b185b0ffcd", "level": "error", "message": {"text": "FastAPI DELETE `delete_material_spec` without auth dependency \u2014 backend/app/routers/material_specs.py:214"}, "properties": {"repobilityId": "bc5402f8a45cc5d6", "scanner": "scanner-primary", "fingerprint": "0bb916b185b0ffcd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/material_specs.py"}, "region": {"startLine": 214}}}]}, {"ruleId": "scanner-fa67f819a2f652da", "level": "error", "message": {"text": "FastAPI POST `restore_material_spec` without auth dependency \u2014 backend/app/routers/material_specs.py:248"}, "properties": {"repobilityId": "eb47a1cace2b7bde", "scanner": "scanner-primary", "fingerprint": "fa67f819a2f652da", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/material_specs.py"}, "region": {"startLine": 248}}}]}, {"ruleId": "scanner-eb0f2aa699cbe4d3", "level": "error", "message": {"text": "FastAPI DELETE `clear_logs` without auth dependency \u2014 backend/app/routers/unified_logs.py:101"}, "properties": {"repobilityId": "bbb777dae46e7bf6", "scanner": "scanner-primary", "fingerprint": "eb0f2aa699cbe4d3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/unified_logs.py"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-6b89204cf28c5567", "level": "error", "message": {"text": "FastAPI DELETE `remove_log` without auth dependency \u2014 backend/app/routers/unified_logs.py:119"}, "properties": {"repobilityId": "966121a7fc384525", "scanner": "scanner-primary", "fingerprint": "6b89204cf28c5567", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/unified_logs.py"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-01d76638a180dc60", "level": "error", "message": {"text": "FastAPI POST `refresh_sku_mapping` without auth dependency \u2014 backend/app/routers/mercari_inventory.py:20"}, "properties": {"repobilityId": "de80bb0730e5e5e1", "scanner": "scanner-primary", "fingerprint": "01d76638a180dc60", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari_inventory.py"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-f5c60f3d410c7a3b", "level": "error", "message": {"text": "FastAPI POST `sync_inventory_from_rakuten` without auth dependency \u2014 backend/app/routers/mercari_inventory.py:47"}, "properties": {"repobilityId": "544f5393fa6770c8", "scanner": "scanner-primary", "fingerprint": "f5c60f3d410c7a3b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/routers/mercari_inventory.py"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-f2558cbf44738778", "level": "error", "message": {"text": "FastAPI POST `generate` without auth dependency \u2014 backend/tools/local_gemma_service/run_service.py:201"}, "properties": {"repobilityId": "896565f0e6a5fa03", "scanner": "scanner-primary", "fingerprint": "f2558cbf44738778", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/tools/local_gemma_service/run_service.py"}, "region": {"startLine": 201}}}]}, {"ruleId": "scanner-bd9dfd3258f39628", "level": "error", "message": {"text": "Dangling fetch: GET /api/ai-assist/status (frontend/src/lib/api/ai.ts:32)"}, "properties": {"repobilityId": "d48e9cf44b5e5c3a", "scanner": "scanner-primary", "fingerprint": "bd9dfd3258f39628", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ea9b6b95b966a54f", "level": "error", "message": {"text": "Dangling fetch: POST /api/ai-assist/product-name (frontend/src/lib/api/ai.ts:40)"}, "properties": {"repobilityId": "0affeb2087df55e7", "scanner": "scanner-primary", "fingerprint": "ea9b6b95b966a54f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dd4ebc6b3664f971", "level": "error", "message": {"text": "Dangling fetch: POST /api/ai-assist/catchcopy (frontend/src/lib/api/ai.ts:55)"}, "properties": {"repobilityId": "52bfd6101bf5d45d", "scanner": "scanner-primary", "fingerprint": "dd4ebc6b3664f971", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-99b9250324aeab41", "level": "error", "message": {"text": "Dangling fetch: POST /api/ai-assist/features (frontend/src/lib/api/ai.ts:70)"}, "properties": {"repobilityId": "f921736442726295", "scanner": "scanner-primary", "fingerprint": "99b9250324aeab41", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a518c3d27d9b0444", "level": "error", "message": {"text": "Dangling fetch: POST /api/ai-assist/api-key (frontend/src/lib/api/ai.ts:82)"}, "properties": {"repobilityId": "c542d5b6c79ab5ff", "scanner": "scanner-primary", "fingerprint": "a518c3d27d9b0444", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8054d22d5c516492", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/ai-assist/api-key (frontend/src/lib/api/ai.ts:90)"}, "properties": {"repobilityId": "bd3d6d7aa329b583", "scanner": "scanner-primary", "fingerprint": "8054d22d5c516492", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a0b09ea58c78d29f", "level": "error", "message": {"text": "Dangling fetch: POST /api/ai-assist/record-selection (frontend/src/lib/api/ai.ts:99)"}, "properties": {"repobilityId": "e0e4249067cb4ce7", "scanner": "scanner-primary", "fingerprint": "a0b09ea58c78d29f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-768e262e5a3a969e", "level": "error", "message": {"text": "Dangling fetch: GET /api/ai-assist/usage-stats (frontend/src/lib/api/ai.ts:107)"}, "properties": {"repobilityId": "224704eac92a2011", "scanner": "scanner-primary", "fingerprint": "768e262e5a3a969e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-676d6896344343df", "level": "error", "message": {"text": "Dangling fetch: POST /api/ai-assist/clear-cache (frontend/src/lib/api/ai.ts:112)"}, "properties": {"repobilityId": "0c146e9d6a7eecf0", "scanner": "scanner-primary", "fingerprint": "676d6896344343df", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3799cf304b78edd4", "level": "error", "message": {"text": "Dangling fetch: GET /api/ai-assist/settings (frontend/src/lib/api/ai.ts:119)"}, "properties": {"repobilityId": "da63c0ab09d4bc0c", "scanner": "scanner-primary", "fingerprint": "3799cf304b78edd4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e74d3df92b63688a", "level": "error", "message": {"text": "Dangling fetch: PUT /api/ai-assist/settings (frontend/src/lib/api/ai.ts:124)"}, "properties": {"repobilityId": "af09c01a9b2aa74a", "scanner": "scanner-primary", "fingerprint": "e74d3df92b63688a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4801915463e0922e", "level": "error", "message": {"text": "Dangling fetch: POST /api/ai-assist/test-local (frontend/src/lib/api/ai.ts:132)"}, "properties": {"repobilityId": "62b4113890705f50", "scanner": "scanner-primary", "fingerprint": "4801915463e0922e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c1f06b1f2a03da93", "level": "error", "message": {"text": "Dangling fetch: POST /api/ai-assist/test-ollama (frontend/src/lib/api/ai.ts:140)"}, "properties": {"repobilityId": "b561d8b7c172ac55", "scanner": "scanner-primary", "fingerprint": "c1f06b1f2a03da93", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7baf807815598bf9", "level": "error", "message": {"text": "Dangling fetch: POST /api/ai-assist/ollama/pull (frontend/src/lib/api/ai.ts:153)"}, "properties": {"repobilityId": "8adc52b3c2c45003", "scanner": "scanner-primary", "fingerprint": "7baf807815598bf9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-89cfe614c144fa6e", "level": "error", "message": {"text": "Dangling fetch: POST /api/ai-assist/draft-product (frontend/src/lib/api/ai.ts:164)"}, "properties": {"repobilityId": "d713e99554de8ad0", "scanner": "scanner-primary", "fingerprint": "89cfe614c144fa6e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-91f2cd36653f6bc8", "level": "error", "message": {"text": "Dangling fetch: GET /api/ai-image/status (frontend/src/lib/api/ai.ts:173)"}, "properties": {"repobilityId": "e02ca38c53c430d9", "scanner": "scanner-primary", "fingerprint": "91f2cd36653f6bc8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c2c262040cc8a700", "level": "error", "message": {"text": "Dangling fetch: POST /api/ai-image/generate (frontend/src/lib/api/ai.ts:181)"}, "properties": {"repobilityId": "d6e310b3d1ca137d", "scanner": "scanner-primary", "fingerprint": "c2c262040cc8a700", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d297e7464be4f567", "level": "error", "message": {"text": "Dangling fetch: POST /api/price/sync-from-rakuten${query} (frontend/src/lib/api/price.ts:167)"}, "properties": {"repobilityId": "6d97a0456615287d", "scanner": "scanner-primary", "fingerprint": "d297e7464be4f567", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-aef9c2143ed866fd", "level": "error", "message": {"text": "Dangling fetch: GET /api/yahoo/status (frontend/src/lib/api/yahoo.ts:205)"}, "properties": {"repobilityId": "7cac2c45a43bc529", "scanner": "scanner-primary", "fingerprint": "aef9c2143ed866fd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-504ad5727b776af7", "level": "error", "message": {"text": "Dangling fetch: POST /api/yahoo/shops (frontend/src/lib/api/yahoo.ts:212)"}, "properties": {"repobilityId": "48483efedd69c69e", "scanner": "scanner-primary", "fingerprint": "504ad5727b776af7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7077943610d0aedb", "level": "error", "message": {"text": "Dangling fetch: PUT /api/yahoo/shops/${shopId} (frontend/src/lib/api/yahoo.ts:222)"}, "properties": {"repobilityId": "3c9c00d22e98aae4", "scanner": "scanner-primary", "fingerprint": "7077943610d0aedb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d430c91a29b575e6", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/yahoo/shops/${shopId} (frontend/src/lib/api/yahoo.ts:232)"}, "properties": {"repobilityId": "c14f185bfeee23b9", "scanner": "scanner-primary", "fingerprint": "d430c91a29b575e6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c76966ef9bcb96b0", "level": "error", "message": {"text": "Dangling fetch: PUT /api/yahoo/active-shop?shop_id=${shopId} (frontend/src/lib/api/yahoo.ts:241)"}, "properties": {"repobilityId": "2ceefb4bc7f80648", "scanner": "scanner-primary", "fingerprint": "c76966ef9bcb96b0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d5f5bb613943afca", "level": "error", "message": {"text": "Dangling fetch: GET /api/yahoo/auth/url?${params} (frontend/src/lib/api/yahoo.ts:259)"}, "properties": {"repobilityId": "000910b3aa7b6652", "scanner": "scanner-primary", "fingerprint": "d5f5bb613943afca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b1b478e4c05c3269", "level": "error", "message": {"text": "Dangling fetch: POST /api/yahoo/validate (frontend/src/lib/api/yahoo.ts:266)"}, "properties": {"repobilityId": "4997234eeaeac87d", "scanner": "scanner-primary", "fingerprint": "b1b478e4c05c3269", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b99ad71db6de307d", "level": "error", "message": {"text": "Dangling fetch: GET /api/yahoo/inventory/item?${params} (frontend/src/lib/api/yahoo.ts:283)"}, "properties": {"repobilityId": "bec348d0d20881d1", "scanner": "scanner-primary", "fingerprint": "b99ad71db6de307d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b2a1935a9ab61dcf", "level": "error", "message": {"text": "Dangling fetch: POST /api/yahoo/inventory/bulk-get?${params} (frontend/src/lib/api/yahoo.ts:292)"}, "properties": {"repobilityId": "a96c4106c60a0d68", "scanner": "scanner-primary", "fingerprint": "b2a1935a9ab61dcf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7bea68d040dd44b9", "level": "error", "message": {"text": "Dangling fetch: GET /api/yahoo/inventory/search?${params} (frontend/src/lib/api/yahoo.ts:316)"}, "properties": {"repobilityId": "e4e38455b7ff8e00", "scanner": "scanner-primary", "fingerprint": "7bea68d040dd44b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8400522651ac3887", "level": "error", "message": {"text": "Dangling fetch: PUT /api/yahoo/inventory/item?${params} (frontend/src/lib/api/yahoo.ts:338)"}, "properties": {"repobilityId": "b3738a15ba73291b", "scanner": "scanner-primary", "fingerprint": "8400522651ac3887", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-33cd7900c3f769df", "level": "error", "message": {"text": "Dangling fetch: POST /api/yahoo/inventory/bulk-update${params} (frontend/src/lib/api/yahoo.ts:351)"}, "properties": {"repobilityId": "34e551ae7f054a9a", "scanner": "scanner-primary", "fingerprint": "33cd7900c3f769df", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-31331251b7851e11", "level": "error", "message": {"text": "Dangling fetch: GET /api/yahoo/product/${itemCode}${params} (frontend/src/lib/api/yahoo.ts:366)"}, "properties": {"repobilityId": "d3d9dd1a90903b92", "scanner": "scanner-primary", "fingerprint": "31331251b7851e11", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-970202a26e788868", "level": "error", "message": {"text": "Dangling fetch: POST /api/yahoo/delivery-banner/analyze (frontend/src/lib/api/yahoo.ts:372)"}, "properties": {"repobilityId": "04791a7a0f4fc1ed", "scanner": "scanner-primary", "fingerprint": "970202a26e788868", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-470815f5d8f14100", "level": "error", "message": {"text": "Dangling fetch: POST /api/yahoo/delivery-banner/apply (frontend/src/lib/api/yahoo.ts:381)"}, "properties": {"repobilityId": "f4fe0d3059b4f36a", "scanner": "scanner-primary", "fingerprint": "470815f5d8f14100", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b9c6474cd6a2b292", "level": "error", "message": {"text": "Dangling fetch: PUT /api/yahoo/item/${itemCode}/display${params} (frontend/src/lib/api/yahoo.ts:481)"}, "properties": {"repobilityId": "d5811068398ad60d", "scanner": "scanner-primary", "fingerprint": "b9c6474cd6a2b292", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-58adbb4180107140", "level": "error", "message": {"text": "Dangling fetch: PUT /api/yahoo/items/bulk-display${params} (frontend/src/lib/api/yahoo.ts:499)"}, "properties": {"repobilityId": "5848918b2e8021d3", "scanner": "scanner-primary", "fingerprint": "58adbb4180107140", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8c580c3ce25693a1", "level": "error", "message": {"text": "Dangling fetch: GET /api/yahoo/inventory/range?${params.toString()} (frontend/src/lib/api/yahoo.ts:557)"}, "properties": {"repobilityId": "6d7d134b97f4cb10", "scanner": "scanner-primary", "fingerprint": "8c580c3ce25693a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-aa616320a6772bd4", "level": "error", "message": {"text": "Dangling fetch: POST /api/product/convert_r_to_y (frontend/src/lib/api/product.ts:25)"}, "properties": {"repobilityId": "4aea997542a58a8a", "scanner": "scanner-primary", "fingerprint": "aa616320a6772bd4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1169d23ab41947ea", "level": "error", "message": {"text": "Dangling fetch: POST /api/product/validate (frontend/src/lib/api/product.ts:33)"}, "properties": {"repobilityId": "742a6eb470e4c1d7", "scanner": "scanner-primary", "fingerprint": "1169d23ab41947ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e867e70e8d5bd5d1", "level": "error", "message": {"text": "Dangling fetch: POST /api/product/save (frontend/src/lib/api/product.ts:41)"}, "properties": {"repobilityId": "cd7411ee12fa7cdf", "scanner": "scanner-primary", "fingerprint": "e867e70e8d5bd5d1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5548b80396cc0b87", "level": "error", "message": {"text": "Dangling fetch: POST /api/product/search (frontend/src/lib/api/product.ts:96)"}, "properties": {"repobilityId": "5ec261b143bc8a91", "scanner": "scanner-primary", "fingerprint": "5548b80396cc0b87", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a539afa6c812fd2f", "level": "error", "message": {"text": "Dangling fetch: POST /api/product/copy-related (frontend/src/lib/api/product.ts:106)"}, "properties": {"repobilityId": "c7dc6d06df8d0277", "scanner": "scanner-primary", "fingerprint": "a539afa6c812fd2f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-edac314b3cb1a3bc", "level": "error", "message": {"text": "Dangling fetch: POST /api/product/batch-control-column (frontend/src/lib/api/product.ts:116)"}, "properties": {"repobilityId": "8047483ebf36764a", "scanner": "scanner-primary", "fingerprint": "edac314b3cb1a3bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4d1abda88868c203", "level": "error", "message": {"text": "Dangling fetch: POST /api/product/batch-delete (frontend/src/lib/api/product.ts:124)"}, "properties": {"repobilityId": "aa16a8e5ffb59e62", "scanner": "scanner-primary", "fingerprint": "4d1abda88868c203", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e31a82f15b8e1af0", "level": "error", "message": {"text": "Dangling fetch: POST /api/product/duplicate (frontend/src/lib/api/product.ts:132)"}, "properties": {"repobilityId": "b2b36ca079da4a6f", "scanner": "scanner-primary", "fingerprint": "e31a82f15b8e1af0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-89d3b70965b0959b", "level": "error", "message": {"text": "Dangling fetch: POST /api/image/optimize-batch (frontend/src/lib/api/image.ts:43)"}, "properties": {"repobilityId": "ee215eff4df759f5", "scanner": "scanner-primary", "fingerprint": "89d3b70965b0959b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b6281c8a9487f484", "level": "error", "message": {"text": "Dangling fetch: GET /api/image/pillow-status (frontend/src/lib/api/image.ts:51)"}, "properties": {"repobilityId": "bd00f97bc5495755", "scanner": "scanner-primary", "fingerprint": "b6281c8a9487f484", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dc7299e908a3887b", "level": "error", "message": {"text": "Dangling fetch: POST /api/image/optimize-paths (frontend/src/lib/api/image.ts:58)"}, "properties": {"repobilityId": "aa321945d08fdf5a", "scanner": "scanner-primary", "fingerprint": "dc7299e908a3887b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-25d469c95067092c", "level": "error", "message": {"text": "Dangling fetch: POST /api/image/combine-manual (frontend/src/lib/api/image.ts:66)"}, "properties": {"repobilityId": "c61bc78f89456fc9", "scanner": "scanner-primary", "fingerprint": "25d469c95067092c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f6b126c8a908ddb2", "level": "error", "message": {"text": "Dangling fetch: POST /api/csv-export/export-and-generate (frontend/src/lib/api/csv.ts:27)"}, "properties": {"repobilityId": "533e24b6f8a2e5a8", "scanner": "scanner-primary", "fingerprint": "f6b126c8a908ddb2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-42df1bc10818a941", "level": "error", "message": {"text": "Dangling fetch: GET /api/csv-export/csharp-status (frontend/src/lib/api/csv.ts:117)"}, "properties": {"repobilityId": "df00a045bb08950f", "scanner": "scanner-primary", "fingerprint": "42df1bc10818a941", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a6edf70a2d63f577", "level": "error", "message": {"text": "Dangling fetch: POST /api/product-csv/export/all?output_dir=${encodeURIComponent(outputDir)} (frontend/src/lib/api/csv.ts:136)"}, "properties": {"repobilityId": "539e9c504fdb9f96", "scanner": "scanner-primary", "fingerprint": "a6edf70a2d63f577", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0cc42f90a86393cd", "level": "error", "message": {"text": "Dangling fetch: POST /api/product-csv/backup?backup_dir=${encodeURIComponent(backupDir)} (frontend/src/lib/api/csv.ts:158)"}, "properties": {"repobilityId": "1935a1cd35acd42c", "scanner": "scanner-primary", "fingerprint": "0cc42f90a86393cd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d21c9dff22bebc35", "level": "error", "message": {"text": "Dangling fetch: POST /api/migration/preview (frontend/src/lib/api/csv.ts:166)"}, "properties": {"repobilityId": "4fd7838e1a08b4d8", "scanner": "scanner-primary", "fingerprint": "d21c9dff22bebc35", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a6fe56a4da316902", "level": "error", "message": {"text": "Dangling fetch: POST /api/migration/execute (frontend/src/lib/api/csv.ts:174)"}, "properties": {"repobilityId": "41af260ccf6dc138", "scanner": "scanner-primary", "fingerprint": "a6fe56a4da316902", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f5c2200ee8a3ec2e", "level": "error", "message": {"text": "Dangling fetch: POST /api/yahuoku/process (frontend/src/lib/api/csv.ts:182)"}, "properties": {"repobilityId": "028930b18f73e135", "scanner": "scanner-primary", "fingerprint": "f5c2200ee8a3ec2e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-08f1dd0da84fc5b8", "level": "error", "message": {"text": "Dangling fetch: POST /api/import/item (frontend/src/lib/api/import.ts:50)"}, "properties": {"repobilityId": "a02be3c5078cb736", "scanner": "scanner-primary", "fingerprint": "08f1dd0da84fc5b8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cf1320a499f9df10", "level": "error", "message": {"text": "Dangling fetch: POST /api/import/item (frontend/src/lib/api/import.ts:72)"}, "properties": {"repobilityId": "b0a0c49582f69d1d", "scanner": "scanner-primary", "fingerprint": "cf1320a499f9df10", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c887d1c742979806", "level": "error", "message": {"text": "Dangling fetch: POST /api/import/items/bulk (frontend/src/lib/api/import.ts:94)"}, "properties": {"repobilityId": "cd50a632e6d2134b", "scanner": "scanner-primary", "fingerprint": "c887d1c742979806", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dc18b71c27e0fa71", "level": "error", "message": {"text": "Dangling fetch: GET /api/material-specs/${specId} (frontend/src/lib/api/material-specs.ts:41)"}, "properties": {"repobilityId": "a0db65fd2d894321", "scanner": "scanner-primary", "fingerprint": "dc18b71c27e0fa71", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e530884a6e123141", "level": "error", "message": {"text": "Dangling fetch: POST /api/material-specs (frontend/src/lib/api/material-specs.ts:46)"}, "properties": {"repobilityId": "c51b98bdd92737e5", "scanner": "scanner-primary", "fingerprint": "e530884a6e123141", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-30f93952a01f3814", "level": "error", "message": {"text": "Dangling fetch: PUT /api/material-specs/${specId} (frontend/src/lib/api/material-specs.ts:58)"}, "properties": {"repobilityId": "1170bf70d9a1c14b", "scanner": "scanner-primary", "fingerprint": "30f93952a01f3814", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-abdc1ef56f553c52", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/material-specs/${specId} (frontend/src/lib/api/material-specs.ts:67)"}, "properties": {"repobilityId": "bfed9b426e80dc7c", "scanner": "scanner-primary", "fingerprint": "abdc1ef56f553c52", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-328e6b37fe51e9eb", "level": "error", "message": {"text": "Dangling fetch: POST /api/material-specs/${specId}/restore (frontend/src/lib/api/material-specs.ts:76)"}, "properties": {"repobilityId": "f3decaf78cd8b4c5", "scanner": "scanner-primary", "fingerprint": "328e6b37fe51e9eb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1b4b30063da1c708", "level": "error", "message": {"text": "Dangling fetch: POST /api/delivery-widget/leadtime/refresh (frontend/src/lib/api/delivery-widget.ts:129)"}, "properties": {"repobilityId": "e68748b56ba63950", "scanner": "scanner-primary", "fingerprint": "1b4b30063da1c708", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1ebb0b117c70e666", "level": "error", "message": {"text": "Dangling fetch: GET /api/delivery-widget/leadtime/status (frontend/src/lib/api/delivery-widget.ts:138)"}, "properties": {"repobilityId": "f1fa05cd880e033a", "scanner": "scanner-primary", "fingerprint": "1ebb0b117c70e666", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4215c8685f3d210d", "level": "error", "message": {"text": "Dangling fetch: POST /api/delivery-widget/holidays/refresh (frontend/src/lib/api/delivery-widget.ts:142)"}, "properties": {"repobilityId": "ded2ca5e0e923c41", "scanner": "scanner-primary", "fingerprint": "4215c8685f3d210d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e16525b9867b879d", "level": "error", "message": {"text": "Dangling fetch: GET /api/delivery-widget/holidays/status (frontend/src/lib/api/delivery-widget.ts:151)"}, "properties": {"repobilityId": "23157803da0cfdc5", "scanner": "scanner-primary", "fingerprint": "e16525b9867b879d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c43fce5bec99a6cc", "level": "error", "message": {"text": "Dangling fetch: GET /api/delivery-widget/holidays/dates (frontend/src/lib/api/delivery-widget.ts:155)"}, "properties": {"repobilityId": "2df4d028eace6d65", "scanner": "scanner-primary", "fingerprint": "c43fce5bec99a6cc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-75fbb8660889efae", "level": "error", "message": {"text": "Dangling fetch: GET /api/delivery-widget/overrides (frontend/src/lib/api/delivery-widget.ts:159)"}, "properties": {"repobilityId": "f4dc2ce666bb8d51", "scanner": "scanner-primary", "fingerprint": "75fbb8660889efae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-496fcfbc1842fdc1", "level": "error", "message": {"text": "Dangling fetch: PUT /api/delivery-widget/overrides (frontend/src/lib/api/delivery-widget.ts:163)"}, "properties": {"repobilityId": "6f7bb81c722a726d", "scanner": "scanner-primary", "fingerprint": "496fcfbc1842fdc1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1e4b5e98b9e1fdc0", "level": "error", "message": {"text": "Dangling fetch: GET /api/delivery-widget/config (frontend/src/lib/api/delivery-widget.ts:170)"}, "properties": {"repobilityId": "5db55d12e08699da", "scanner": "scanner-primary", "fingerprint": "1e4b5e98b9e1fdc0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-88643920ae2e077d", "level": "error", "message": {"text": "Dangling fetch: PUT /api/delivery-widget/config (frontend/src/lib/api/delivery-widget.ts:174)"}, "properties": {"repobilityId": "22f635439995c28b", "scanner": "scanner-primary", "fingerprint": "88643920ae2e077d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5541309480f333a7", "level": "error", "message": {"text": "Dangling fetch: GET /api/delivery-widget/calculate?${query.toString()} (frontend/src/lib/api/delivery-widget.ts:192)"}, "properties": {"repobilityId": "77110d606bbcb2b5", "scanner": "scanner-primary", "fingerprint": "5541309480f333a7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3446989d9da80d83", "level": "error", "message": {"text": "Dangling fetch: POST /api/delivery-widget/generate (frontend/src/lib/api/delivery-widget.ts:196)"}, "properties": {"repobilityId": "2e498b61323bbbd9", "scanner": "scanner-primary", "fingerprint": "3446989d9da80d83", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-79ccd12be2745337", "level": "error", "message": {"text": "Dangling fetch: GET /api/delivery-widget/generation/last (frontend/src/lib/api/delivery-widget.ts:207)"}, "properties": {"repobilityId": "9bf261709d1a6f3b", "scanner": "scanner-primary", "fingerprint": "79ccd12be2745337", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-194c35bad089a7db", "level": "error", "message": {"text": "Dangling fetch: POST /api/delivery-widget/sync-rakuten-calendar (frontend/src/lib/api/delivery-widget.ts:211)"}, "properties": {"repobilityId": "5510f41d61480975", "scanner": "scanner-primary", "fingerprint": "194c35bad089a7db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-821eac1f48eb152f", "level": "error", "message": {"text": "Dangling fetch: POST /api/product-register/register (frontend/src/lib/api/product-register.ts:80)"}, "properties": {"repobilityId": "8d772963ab984d05", "scanner": "scanner-primary", "fingerprint": "821eac1f48eb152f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e979d9e83334f8d1", "level": "error", "message": {"text": "Dangling fetch: POST /api/product-register/register-batch (frontend/src/lib/api/product-register.ts:100)"}, "properties": {"repobilityId": "2a7a4fc8269bf330", "scanner": "scanner-primary", "fingerprint": "e979d9e83334f8d1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-52808212b5c18489", "level": "error", "message": {"text": "Dangling fetch: POST /api/html/generate (frontend/src/lib/api/html-generation.ts:13)"}, "properties": {"repobilityId": "fed3a6e9598260d0", "scanner": "scanner-primary", "fingerprint": "52808212b5c18489", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-889a56afd57d7b5b", "level": "error", "message": {"text": "Dangling fetch: GET /api/mercari/constants (frontend/src/lib/api/mercari.ts:255)"}, "properties": {"repobilityId": "cef86c01e2ac0bbe", "scanner": "scanner-primary", "fingerprint": "889a56afd57d7b5b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e56a54a6561c8f67", "level": "error", "message": {"text": "Dangling fetch: GET /api/mercari/rakuten-images?${params.toString()} (frontend/src/lib/api/mercari.ts:367)"}, "properties": {"repobilityId": "6501aee247daabc1", "scanner": "scanner-primary", "fingerprint": "e56a54a6561c8f67", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b242b9c347379d7e", "level": "error", "message": {"text": "Dangling fetch: GET /api/mercari/rakuten-folders?${params.toString()} (frontend/src/lib/api/mercari.ts:383)"}, "properties": {"repobilityId": "eacb16f2d69a62a4", "scanner": "scanner-primary", "fingerprint": "b242b9c347379d7e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3a6803056478ce1d", "level": "error", "message": {"text": "Dangling fetch: POST /api/mercari/export-update-bundle-by-ids (frontend/src/lib/api/mercari.ts:489)"}, "properties": {"repobilityId": "3b9af9dec195b0aa", "scanner": "scanner-primary", "fingerprint": "3a6803056478ce1d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8f08fa548939a41b", "level": "error", "message": {"text": "Dangling fetch: POST /api/mercari/products (frontend/src/lib/api/mercari.ts:583)"}, "properties": {"repobilityId": "5614f33c23761dde", "scanner": "scanner-primary", "fingerprint": "8f08fa548939a41b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8c6a567bcd95532e", "level": "error", "message": {"text": "Dangling fetch: PUT /api/mercari/products/${productId} (frontend/src/lib/api/mercari.ts:599)"}, "properties": {"repobilityId": "3c433d84a13c1296", "scanner": "scanner-primary", "fingerprint": "8c6a567bcd95532e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-75124af23ba40d36", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/mercari/products/${productId} (frontend/src/lib/api/mercari.ts:612)"}, "properties": {"repobilityId": "ef4388cb067f512a", "scanner": "scanner-primary", "fingerprint": "75124af23ba40d36", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-177d106478486ad1", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/mercari/products/batch-status (frontend/src/lib/api/mercari.ts:629)"}, "properties": {"repobilityId": "e337bcd36aaba83f", "scanner": "scanner-primary", "fingerprint": "177d106478486ad1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dedd24a010e9d593", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/mercari/products/batch-shipping-fee (frontend/src/lib/api/mercari.ts:647)"}, "properties": {"repobilityId": "6366fcf0bfc33a85", "scanner": "scanner-primary", "fingerprint": "dedd24a010e9d593", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-adfea416ba6b8088", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/mercari/products/batch-sanitize-sku-names (frontend/src/lib/api/mercari.ts:663)"}, "properties": {"repobilityId": "ac6b3af5d17567a7", "scanner": "scanner-primary", "fingerprint": "adfea416ba6b8088", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-83f81cbcabe9e704", "level": "error", "message": {"text": "Dangling fetch: POST /api/mercari/export-manage-number-batches-by-ids (frontend/src/lib/api/mercari.ts:733)"}, "properties": {"repobilityId": "181089c7774c1e26", "scanner": "scanner-primary", "fingerprint": "83f81cbcabe9e704", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f1a0c0b6adaf3c9f", "level": "error", "message": {"text": "Dangling fetch: POST /api/mercari/import/rakuten/preview (frontend/src/lib/api/mercari.ts:751)"}, "properties": {"repobilityId": "1c28711a670f065d", "scanner": "scanner-primary", "fingerprint": "f1a0c0b6adaf3c9f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0358a9e00a332438", "level": "error", "message": {"text": "Dangling fetch: POST /api/mercari/import/rakuten (frontend/src/lib/api/mercari.ts:774)"}, "properties": {"repobilityId": "6820834e6a42ffdb", "scanner": "scanner-primary", "fingerprint": "0358a9e00a332438", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0a26f4deef3fd94a", "level": "error", "message": {"text": "Dangling fetch: POST /api/mercari/import/save-preview (frontend/src/lib/api/mercari.ts:793)"}, "properties": {"repobilityId": "dedb254b3870cf86", "scanner": "scanner-primary", "fingerprint": "0a26f4deef3fd94a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ee0e6b7ef4692063", "level": "error", "message": {"text": "Dangling fetch: POST /api/mercari/inventory/sync-from-rakuten (frontend/src/lib/api/mercari.ts:837)"}, "properties": {"repobilityId": "d5931163ff391a5b", "scanner": "scanner-primary", "fingerprint": "ee0e6b7ef4692063", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-204188d97a667891", "level": "error", "message": {"text": "Dangling fetch: POST /api/mercari/inventory/refresh-sku-mapping (frontend/src/lib/api/mercari.ts:861)"}, "properties": {"repobilityId": "4dd2d233fbc8667f", "scanner": "scanner-primary", "fingerprint": "204188d97a667891", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-db6d6a0e5c6522ac", "level": "error", "message": {"text": "Dangling fetch: GET /api/master/${filename} (frontend/src/lib/api/master-data.ts:14)"}, "properties": {"repobilityId": "eda4026e10074fe1", "scanner": "scanner-primary", "fingerprint": "db6d6a0e5c6522ac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f918e4215ca4d61b", "level": "error", "message": {"text": "Dangling fetch: GET /api/master/icons/explanation (frontend/src/lib/api/master-data.ts:19)"}, "properties": {"repobilityId": "5c6003398e6f9662", "scanner": "scanner-primary", "fingerprint": "f918e4215ca4d61b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7e57c4f9b3ba7600", "level": "error", "message": {"text": "Dangling fetch: GET /api/master/y_specs/${categoryId} (frontend/src/lib/api/master-data.ts:24)"}, "properties": {"repobilityId": "3efb43df637afa7a", "scanner": "scanner-primary", "fingerprint": "7e57c4f9b3ba7600", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6c6aa221ab79b9c8", "level": "error", "message": {"text": "Dangling fetch: GET /api/master/rakuten_attributes/${genreId} (frontend/src/lib/api/master-data.ts:29)"}, "properties": {"repobilityId": "e8a936ce0b7763db", "scanner": "scanner-primary", "fingerprint": "6c6aa221ab79b9c8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-99fecd90387f926b", "level": "error", "message": {"text": "Dangling fetch: POST /api/master/product-name-master/upload (frontend/src/lib/api/master-data.ts:34)"}, "properties": {"repobilityId": "33f715f162753b06", "scanner": "scanner-primary", "fingerprint": "99fecd90387f926b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1b12e4fc59236751", "level": "error", "message": {"text": "Dangling fetch: POST /api/master/product-page-gap-check (frontend/src/lib/api/master-data.ts:45)"}, "properties": {"repobilityId": "08a3719627691866", "scanner": "scanner-primary", "fingerprint": "1b12e4fc59236751", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2250c278942672aa", "level": "error", "message": {"text": "Dangling fetch: GET /api/rakuten/status (frontend/src/lib/api/rakuten.ts:238)"}, "properties": {"repobilityId": "523c66b36002e853", "scanner": "scanner-primary", "fingerprint": "2250c278942672aa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-33dca9e95f1d9b7c", "level": "error", "message": {"text": "Dangling fetch: POST /api/rakuten/shops (frontend/src/lib/api/rakuten.ts:245)"}, "properties": {"repobilityId": "4455dc3b4ecf3bfe", "scanner": "scanner-primary", "fingerprint": "33dca9e95f1d9b7c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-66c7393ccc77b8c5", "level": "error", "message": {"text": "Dangling fetch: PUT /api/rakuten/shops/${shopId} (frontend/src/lib/api/rakuten.ts:255)"}, "properties": {"repobilityId": "a7090098cbc9adb0", "scanner": "scanner-primary", "fingerprint": "66c7393ccc77b8c5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-449936d06133e007", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/rakuten/shops/${shopId} (frontend/src/lib/api/rakuten.ts:265)"}, "properties": {"repobilityId": "7eba90e1c9b6bb6a", "scanner": "scanner-primary", "fingerprint": "449936d06133e007", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-731df65f24ba7c2e", "level": "error", "message": {"text": "Dangling fetch: PUT /api/rakuten/active-shop (frontend/src/lib/api/rakuten.ts:274)"}, "properties": {"repobilityId": "31d32bb373f61c0f", "scanner": "scanner-primary", "fingerprint": "731df65f24ba7c2e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f4e1ea1a1a49a09a", "level": "error", "message": {"text": "Dangling fetch: POST /api/rakuten/validate (frontend/src/lib/api/rakuten.ts:284)"}, "properties": {"repobilityId": "196f9f0a827437de", "scanner": "scanner-primary", "fingerprint": "f4e1ea1a1a49a09a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-143e484dd6c8282d", "level": "error", "message": {"text": "Dangling fetch: POST /api/rakuten/delivery-banner/analyze (frontend/src/lib/api/rakuten.ts:293)"}, "properties": {"repobilityId": "7ad79acb9840b9f9", "scanner": "scanner-primary", "fingerprint": "143e484dd6c8282d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-059ca70aaa060bad", "level": "error", "message": {"text": "Dangling fetch: POST /api/rakuten/delivery-banner/apply (frontend/src/lib/api/rakuten.ts:300)"}, "properties": {"repobilityId": "23f3734447c637ce", "scanner": "scanner-primary", "fingerprint": "059ca70aaa060bad", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3550318461396dc8", "level": "error", "message": {"text": "Dangling fetch: GET /api/rakuten/inventory/item?${params} (frontend/src/lib/api/rakuten.ts:379)"}, "properties": {"repobilityId": "c2fef7fd84b4d376", "scanner": "scanner-primary", "fingerprint": "3550318461396dc8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7f51cafaa23f7dc8", "level": "error", "message": {"text": "Dangling fetch: GET /api/rakuten/inventory/range?${params} (frontend/src/lib/api/rakuten.ts:390)"}, "properties": {"repobilityId": "a810c514e79985f9", "scanner": "scanner-primary", "fingerprint": "7f51cafaa23f7dc8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7ec08415cb524dec", "level": "error", "message": {"text": "Dangling fetch: POST /api/rakuten/inventory/bulk-get (frontend/src/lib/api/rakuten.ts:400)"}, "properties": {"repobilityId": "3b67d22cc30cb9a5", "scanner": "scanner-primary", "fingerprint": "7ec08415cb524dec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-abfb1ec04ce1cb34", "level": "error", "message": {"text": "Dangling fetch: PUT /api/rakuten/inventory/item?${params} (frontend/src/lib/api/rakuten.ts:433)"}, "properties": {"repobilityId": "41e18942e51f49da", "scanner": "scanner-primary", "fingerprint": "abfb1ec04ce1cb34", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-44f37715ebbe33ee", "level": "error", "message": {"text": "Dangling fetch: POST /api/rakuten/inventory/bulk-update (frontend/src/lib/api/rakuten.ts:442)"}, "properties": {"repobilityId": "beb8188c8cde5c9b", "scanner": "scanner-primary", "fingerprint": "44f37715ebbe33ee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8c89b1fa77ed64f1", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/rakuten/inventory/item?${params} (frontend/src/lib/api/rakuten.ts:459)"}, "properties": {"repobilityId": "57328254aa519f09", "scanner": "scanner-primary", "fingerprint": "8c89b1fa77ed64f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b86639c806a4d0b4", "level": "error", "message": {"text": "Dangling fetch: GET /api/rakuten/inventory/logs?${params} (frontend/src/lib/api/rakuten.ts:470)"}, "properties": {"repobilityId": "63dc553ed07fa648", "scanner": "scanner-primary", "fingerprint": "b86639c806a4d0b4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f8a49d09cbe63291", "level": "error", "message": {"text": "Dangling fetch: PUT /api/rakuten/inventory/product/${manageNumber}/hide (frontend/src/lib/api/rakuten.ts:494)"}, "properties": {"repobilityId": "f620d59926a938ae", "scanner": "scanner-primary", "fingerprint": "f8a49d09cbe63291", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9c7b4c1d4967cb32", "level": "error", "message": {"text": "Dangling fetch: PUT /api/rakuten/inventory/products/bulk-hide (frontend/src/lib/api/rakuten.ts:510)"}, "properties": {"repobilityId": "626b93a5fcd13df1", "scanner": "scanner-primary", "fingerprint": "9c7b4c1d4967cb32", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f0547394f70cafa6", "level": "error", "message": {"text": "Dangling fetch: GET /api/rakuten/inventory/license/expiry-date (frontend/src/lib/api/rakuten.ts:548)"}, "properties": {"repobilityId": "52798a55e0a94126", "scanner": "scanner-primary", "fingerprint": "f0547394f70cafa6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-aaaddb8abcae3434", "level": "error", "message": {"text": "Dangling fetch: GET /api/filesystem/roots (frontend/src/lib/api/filesystem.ts:13)"}, "properties": {"repobilityId": "4298e90ea47eb600", "scanner": "scanner-primary", "fingerprint": "aaaddb8abcae3434", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-355a501d28a67f1c", "level": "error", "message": {"text": "Dangling fetch: POST /api/page-editor/fetch (frontend/src/lib/api/page-editor.ts:100)"}, "properties": {"repobilityId": "d093c06bdae39079", "scanner": "scanner-primary", "fingerprint": "355a501d28a67f1c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6732c28712cb6137", "level": "error", "message": {"text": "Dangling fetch: POST /api/page-editor/update (frontend/src/lib/api/page-editor.ts:110)"}, "properties": {"repobilityId": "b9e2a310d2c9cb3f", "scanner": "scanner-primary", "fingerprint": "6732c28712cb6137", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-09088f7ba56ccc82", "level": "error", "message": {"text": "Dangling fetch: POST /api/page-editor/bulk-fetch (frontend/src/lib/api/page-editor.ts:120)"}, "properties": {"repobilityId": "f1b000927dc3cf18", "scanner": "scanner-primary", "fingerprint": "09088f7ba56ccc82", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7be9d07631954f09", "level": "error", "message": {"text": "Dangling fetch: POST /api/page-editor/bulk-update (frontend/src/lib/api/page-editor.ts:130)"}, "properties": {"repobilityId": "0f3d29de9b552fe0", "scanner": "scanner-primary", "fingerprint": "7be9d07631954f09", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5fcd52c61d20308a", "level": "error", "message": {"text": "Dangling fetch: POST /api/page-editor/preview-changes (frontend/src/lib/api/page-editor.ts:140)"}, "properties": {"repobilityId": "e5128bc86446128f", "scanner": "scanner-primary", "fingerprint": "5fcd52c61d20308a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b209c82780720e36", "level": "error", "message": {"text": "Dangling fetch: POST /api/database-backup/inspect (frontend/src/lib/api/database-backup.ts:39)"}, "properties": {"repobilityId": "085d4ba3caac30a4", "scanner": "scanner-primary", "fingerprint": "b209c82780720e36", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-730e15181ecad6cb", "level": "error", "message": {"text": "Dangling fetch: POST /api/database-backup/create (frontend/src/lib/api/database-backup.ts:46)"}, "properties": {"repobilityId": "ea0502af7e000c87", "scanner": "scanner-primary", "fingerprint": "730e15181ecad6cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e366fe1f733a5705", "level": "error", "message": {"text": "Dangling fetch: POST /api/database-backup/restore (frontend/src/lib/api/database-backup.ts:58)"}, "properties": {"repobilityId": "74de9ad097f2eb9a", "scanner": "scanner-primary", "fingerprint": "e366fe1f733a5705", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "9a7ab29051c0367b", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7028d9c853d87627", "level": "note", "message": {"text": "Unused endpoint: POST /export"}, "properties": {"repobilityId": "d495fceef5d0b498", "scanner": "scanner-primary", "fingerprint": "7028d9c853d87627", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-970eb92d6ec2bfaa", "level": "note", "message": {"text": "Unused endpoint: POST /generate"}, "properties": {"repobilityId": "e1316ccdb111ddfb", "scanner": "scanner-primary", "fingerprint": "970eb92d6ec2bfaa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-44130ee7f51b7f8d", "level": "note", "message": {"text": "Unused endpoint: POST /export-and-generate"}, "properties": {"repobilityId": "d9ffb57b257e73e6", "scanner": "scanner-primary", "fingerprint": "44130ee7f51b7f8d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1995a580ecab60df", "level": "note", "message": {"text": "Unused endpoint: POST /export-and-generate/stream"}, "properties": {"repobilityId": "cdc46ec1c497327a", "scanner": "scanner-primary", "fingerprint": "1995a580ecab60df", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c7fe33326e535f6b", "level": "note", "message": {"text": "Unused endpoint: GET /csharp-status"}, "properties": {"repobilityId": "01abe66c2caafd5a", "scanner": "scanner-primary", "fingerprint": "c7fe33326e535f6b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cdd463fb35f3cd1d", "level": "note", "message": {"text": "Unused endpoint: GET /auth/url"}, "properties": {"repobilityId": "d2425be3dcbdd097", "scanner": "scanner-primary", "fingerprint": "cdd463fb35f3cd1d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1480187b44a5fd90", "level": "note", "message": {"text": "Unused endpoint: GET /auth/callback"}, "properties": {"repobilityId": "6b824957104e9dc5", "scanner": "scanner-primary", "fingerprint": "1480187b44a5fd90", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-53115d2286999a69", "level": "note", "message": {"text": "Unused endpoint: GET /roots"}, "properties": {"repobilityId": "f804ae645cf28e11", "scanner": "scanner-primary", "fingerprint": "53115d2286999a69", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f2e0115c9015a583", "level": "note", "message": {"text": "Unused endpoint: GET /folders"}, "properties": {"repobilityId": "cab1c9350150a4a1", "scanner": "scanner-primary", "fingerprint": "f2e0115c9015a583", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fca11d494725d7c3", "level": "note", "message": {"text": "Unused endpoint: POST /analyze"}, "properties": {"repobilityId": "de48319337ef6d72", "scanner": "scanner-primary", "fingerprint": "fca11d494725d7c3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9a88e32ba95dda7c", "level": "note", "message": {"text": "Unused endpoint: POST /apply"}, "properties": {"repobilityId": "10e30907347060a6", "scanner": "scanner-primary", "fingerprint": "9a88e32ba95dda7c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-90915f869505e796", "level": "note", "message": {"text": "Unused endpoint: POST /shops"}, "properties": {"repobilityId": "ec73e52349cd2dd5", "scanner": "scanner-primary", "fingerprint": "90915f869505e796", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-179b87eeb32ddb2f", "level": "note", "message": {"text": "Unused endpoint: PUT /shops/{shop_id}"}, "properties": {"repobilityId": "9cedbb8fd15e02fe", "scanner": "scanner-primary", "fingerprint": "179b87eeb32ddb2f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ae90947fff6de622", "level": "note", "message": {"text": "Unused endpoint: DELETE /shops/{shop_id}"}, "properties": {"repobilityId": "724c9b835918a23b", "scanner": "scanner-primary", "fingerprint": "ae90947fff6de622", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3467a23740f4ca23", "level": "note", "message": {"text": "Unused endpoint: PUT /active-shop"}, "properties": {"repobilityId": "7f6fff8898eb0950", "scanner": "scanner-primary", "fingerprint": "3467a23740f4ca23", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-34c0472a1f1fafe5", "level": "note", "message": {"text": "Unused endpoint: POST /validate"}, "properties": {"repobilityId": "9d3c9ff041e5d91e", "scanner": "scanner-primary", "fingerprint": "34c0472a1f1fafe5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b96c2c2251840d05", "level": "note", "message": {"text": "Unused endpoint: GET /products/history"}, "properties": {"repobilityId": "1b7590af09af077c", "scanner": "scanner-primary", "fingerprint": "b96c2c2251840d05", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6da7bd9174700cb3", "level": "note", "message": {"text": "Unused endpoint: POST /products/history"}, "properties": {"repobilityId": "50b6666ac975bb51", "scanner": "scanner-primary", "fingerprint": "6da7bd9174700cb3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-aae14e720f4b27ad", "level": "note", "message": {"text": "Unused endpoint: POST /products/history/batch"}, "properties": {"repobilityId": "90c392257cbc6fbe", "scanner": "scanner-primary", "fingerprint": "aae14e720f4b27ad", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-525eee4f13302f5e", "level": "note", "message": {"text": "Unused endpoint: GET /rakuten/{manage_number}"}, "properties": {"repobilityId": "c6314c5a72f10ba0", "scanner": "scanner-primary", "fingerprint": "525eee4f13302f5e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d17ed111daa557ca", "level": "note", "message": {"text": "Unused endpoint: PUT /rakuten"}, "properties": {"repobilityId": "2df79c6f4054c453", "scanner": "scanner-primary", "fingerprint": "d17ed111daa557ca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7113eea43bb19767", "level": "note", "message": {"text": "Unused endpoint: PUT /rakuten/bulk"}, "properties": {"repobilityId": "07211657e8e32f63", "scanner": "scanner-primary", "fingerprint": "7113eea43bb19767", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ee1a204c7598027e", "level": "note", "message": {"text": "Unused endpoint: GET /yahoo/{item_code}"}, "properties": {"repobilityId": "7d47b82003b2bbed", "scanner": "scanner-primary", "fingerprint": "ee1a204c7598027e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-81f33c5a22c81829", "level": "note", "message": {"text": "Unused endpoint: PUT /yahoo"}, "properties": {"repobilityId": "bc56bc986bcd0988", "scanner": "scanner-primary", "fingerprint": "81f33c5a22c81829", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9b8cfd81ca15beaa", "level": "note", "message": {"text": "Unused endpoint: PUT /yahoo/bulk"}, "properties": {"repobilityId": "517543806e79be98", "scanner": "scanner-primary", "fingerprint": "9b8cfd81ca15beaa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-53271c1992a6def7", "level": "note", "message": {"text": "Unused endpoint: POST /sync-from-rakuten"}, "properties": {"repobilityId": "908bdd9030c54ac8", "scanner": "scanner-primary", "fingerprint": "53271c1992a6def7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9260174de75b32ba", "level": "note", "message": {"text": "Unused endpoint: GET /categories"}, "properties": {"repobilityId": "50ce11997cc8e75b", "scanner": "scanner-primary", "fingerprint": "9260174de75b32ba", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-01c0e6ca7f504cf5", "level": "note", "message": {"text": "Unused endpoint: GET /brands"}, "properties": {"repobilityId": "f4596237fbee3488", "scanner": "scanner-primary", "fingerprint": "01c0e6ca7f504cf5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8301e98843fb121e", "level": "note", "message": {"text": "Unused endpoint: GET /products/list"}, "properties": {"repobilityId": "4a0337c569b6471a", "scanner": "scanner-primary", "fingerprint": "8301e98843fb121e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-41755afe7d193ed1", "level": "note", "message": {"text": "Unused endpoint: GET /products/{product_id}/detail"}, "properties": {"repobilityId": "1d36a183c5fabcea", "scanner": "scanner-primary", "fingerprint": "41755afe7d193ed1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f1084bc3b7a4f4bb", "level": "note", "message": {"text": "Unused endpoint: GET /products"}, "properties": {"repobilityId": "dbcb727a59492add", "scanner": "scanner-primary", "fingerprint": "f1084bc3b7a4f4bb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cca7583916efd86a", "level": "note", "message": {"text": "Unused endpoint: POST /products"}, "properties": {"repobilityId": "8eca0f37ecc9786b", "scanner": "scanner-primary", "fingerprint": "cca7583916efd86a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e02e86498b5b3703", "level": "note", "message": {"text": "Unused endpoint: PUT /products/{product_id}"}, "properties": {"repobilityId": "2e0b3cabe0dec1e5", "scanner": "scanner-primary", "fingerprint": "e02e86498b5b3703", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cdb40a850d729bbe", "level": "note", "message": {"text": "Unused endpoint: DELETE /products/{product_id}"}, "properties": {"repobilityId": "0f2793b181b10496", "scanner": "scanner-primary", "fingerprint": "cdb40a850d729bbe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1b0a2555d63e67c5", "level": "note", "message": {"text": "Unused endpoint: PATCH /products/batch-status"}, "properties": {"repobilityId": "d57c4fad3abbf9f0", "scanner": "scanner-primary", "fingerprint": "1b0a2555d63e67c5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9bd3cf6af95de06a", "level": "note", "message": {"text": "Unused endpoint: PATCH /products/batch-shipping-fee"}, "properties": {"repobilityId": "b648e78c7c6583ce", "scanner": "scanner-primary", "fingerprint": "9bd3cf6af95de06a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-591e5f02bfa47939", "level": "note", "message": {"text": "Unused endpoint: PATCH /products/batch-sanitize-sku-names"}, "properties": {"repobilityId": "3f20cb9fbf96ca88", "scanner": "scanner-primary", "fingerprint": "591e5f02bfa47939", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-85eab95ac5bb8bc4", "level": "note", "message": {"text": "Unused endpoint: GET /inventory/item"}, "properties": {"repobilityId": "06960ff7f73b84ca", "scanner": "scanner-primary", "fingerprint": "85eab95ac5bb8bc4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d1bd42f0ca2295d3", "level": "note", "message": {"text": "Unused endpoint: POST /inventory/bulk-get"}, "properties": {"repobilityId": "7ce5cad3f2f97463", "scanner": "scanner-primary", "fingerprint": "d1bd42f0ca2295d3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0b993102544ab52c", "level": "note", "message": {"text": "Unused endpoint: GET /inventory/range"}, "properties": {"repobilityId": "95c575efd6b19ea4", "scanner": "scanner-primary", "fingerprint": "0b993102544ab52c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a697117ee06cf324", "level": "note", "message": {"text": "Unused endpoint: GET /inventory/search"}, "properties": {"repobilityId": "38c44214d8379369", "scanner": "scanner-primary", "fingerprint": "a697117ee06cf324", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e16b62da1f5cc79a", "level": "note", "message": {"text": "Unused endpoint: PUT /inventory/item"}, "properties": {"repobilityId": "2388bc1e2157a989", "scanner": "scanner-primary", "fingerprint": "e16b62da1f5cc79a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f352167c17d48764", "level": "note", "message": {"text": "Unused endpoint: POST /inventory/bulk-update"}, "properties": {"repobilityId": "b09136eed08c4a5e", "scanner": "scanner-primary", "fingerprint": "f352167c17d48764", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-29937d18ff46993d", "level": "note", "message": {"text": "Unused endpoint: PUT /item/{item_code}/display"}, "properties": {"repobilityId": "53654545572f3834", "scanner": "scanner-primary", "fingerprint": "29937d18ff46993d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-681b5cbf76a1db68", "level": "note", "message": {"text": "Unused endpoint: PUT /items/bulk-display"}, "properties": {"repobilityId": "31da3f6770b08d26", "scanner": "scanner-primary", "fingerprint": "681b5cbf76a1db68", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-92a13c1e4be06edd", "level": "note", "message": {"text": "Unused endpoint: DELETE /product/{item_code}"}, "properties": {"repobilityId": "485bcb53797493d9", "scanner": "scanner-primary", "fingerprint": "92a13c1e4be06edd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-67846a1cfc1822b7", "level": "note", "message": {"text": "Unused endpoint: POST /leadtime/refresh"}, "properties": {"repobilityId": "69e06f27d77e5408", "scanner": "scanner-primary", "fingerprint": "67846a1cfc1822b7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b001b327c4062cc3", "level": "note", "message": {"text": "Unused endpoint: GET /leadtime/status"}, "properties": {"repobilityId": "47d2f9782c3171fc", "scanner": "scanner-primary", "fingerprint": "b001b327c4062cc3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-279219870649af94", "level": "note", "message": {"text": "Unused endpoint: GET /leadtime/lookup"}, "properties": {"repobilityId": "ca941193d9ab9f5e", "scanner": "scanner-primary", "fingerprint": "279219870649af94", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}