{"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-7974dc2326035e9b", "name": "Stray `console.log` in TS/JS \u2014 test-animated-slide.ts:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-animated-slide.ts:6"}, "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-d6ad9915efa490b9", "name": "Stray `console.log` in TS/JS \u2014 tests/script-generation.test.ts:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/script-generation.test.ts:106"}, "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-c3e469b9717bdcd5", "name": "Stray `console.log` in TS/JS \u2014 scripts/gemini-cover-test.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gemini-cover-test.ts:12"}, "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-2c6ab0ba4a46e392", "name": "Stray `console.log` in TS/JS \u2014 scripts/sample-slides.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sample-slides.ts:71"}, "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-9d0211bc25e319e5", "name": "Stray `console.log` in TS/JS \u2014 scripts/urban-demo.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/urban-demo.ts:61"}, "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-3ba3b486bd2929fd", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-affiliate-banners.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-affiliate-banners.ts:56"}, "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-06755cb1e40222dc", "name": "Stray `console.log` in TS/JS \u2014 scripts/setup-credit-packs.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup-credit-packs.ts:48"}, "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-822ce6a2440a49dc", "name": "Stray `console.log` in TS/JS \u2014 scripts/consistent-demo.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/consistent-demo.ts:71"}, "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-b9a8c160703d0145", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-cover-examples.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-cover-examples.ts:19"}, "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-9e73760cbed09e32", "name": "Stray `console.log` in TS/JS \u2014 scripts/compare-models.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compare-models.ts:29"}, "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-17007d472d80b334", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-sample-slides.ts:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-sample-slides.ts:120"}, "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-e7c5e4474ac515a2", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-insurance-extraction.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-insurance-extraction.ts:20"}, "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-225b0bfa3b3c08da", "name": "Stray `console.log` in TS/JS \u2014 scripts/style-samples.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/style-samples.ts:44"}, "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-b166544439126ed1", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-style-previews.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-style-previews.ts:53"}, "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-cfaebcc4f045a71d", "name": "Stray `console.log` in TS/JS \u2014 scripts/flash31-demo.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flash31-demo.ts:48"}, "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-728aed4884eac18d", "name": "Stray `console.log` in TS/JS \u2014 scripts/compare-text.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compare-text.ts:26"}, "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-522c1759a756ca08", "name": "Stray `console.log` in TS/JS \u2014 scripts/sample-slides-neon.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sample-slides-neon.ts:43"}, "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-7fd1ec3e6d6cdc54", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-presenter.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-presenter.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-0d08421b84d7c7be", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-cover-examples-v2.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-cover-examples-v2.ts:15"}, "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-28c1c24ec9a0dd8b", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-industry-demos.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-industry-demos.ts:24"}, "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-2562d26cd07d87da", "name": "Stray `console.log` in TS/JS \u2014 scripts/read-pdfs.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/read-pdfs.ts:17"}, "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-5aa0fdd607af8da1", "name": "Stray `console.log` in TS/JS \u2014 scripts/compare-v2.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compare-v2.ts: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-0d25b0cf9a740dce", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-voice-samples.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-voice-samples.js:31"}, "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-f72b1c1bd7203142", "name": "Stray `console.log` in TS/JS \u2014 scripts/cinematic-red-demo.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cinematic-red-demo.ts:61"}, "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-08008c6f5a227e88", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-style-previews.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-style-previews.js:61"}, "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-4dda8fcc96ab0088", "name": "Stray `console.log` in TS/JS \u2014 video-service/server.js:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 video-service/server.js:78"}, "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-6d62a9430b4cb4fc", "name": "Stray `console.log` in TS/JS \u2014 app/api/generate-infographic/route.ts:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-infographic/route.ts:105"}, "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-23f8be23aa652309", "name": "Stray `console.log` in TS/JS \u2014 app/api/demo-video/route.ts:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/demo-video/route.ts:98"}, "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-5bfa702d5f5758ab", "name": "Stray `console.log` in TS/JS \u2014 app/api/script-chat/route.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/script-chat/route.ts:53"}, "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-07d7299d77915ea5", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-share/route.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-share/route.ts:111"}, "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-a83afb5a60a043b3", "name": "Stray `console.log` in TS/JS \u2014 app/api/generate-brand-deck/route.ts:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-brand-deck/route.ts:114"}, "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-21b9fc1680f392c3", "name": "Stray `console.log` in TS/JS \u2014 app/api/style-preview-from-brand/route.ts:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/style-preview-from-brand/route.ts:69"}, "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-a08418f1900ab9e1", "name": "Stray `console.log` in TS/JS \u2014 app/api/extract-doc/route.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/extract-doc/route.ts:47"}, "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-adaf685d84f3c703", "name": "Stray `console.log` in TS/JS \u2014 app/api/admin/create-user/route.ts:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/admin/create-user/route.ts:87"}, "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-d0a89c3ea462f3ea", "name": "Stray `console.log` in TS/JS \u2014 app/api/admin/setup-credit-products/route.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/admin/setup-credit-products/route.ts:47"}, "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-d2b57230f0d86317", "name": "Stray `console.log` in TS/JS \u2014 app/api/admin/auto-demo/route.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/admin/auto-demo/route.ts:71"}, "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-0544eab3d4ad0137", "name": "Stray `console.log` in TS/JS \u2014 app/api/generate-pptx/route.ts:165", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-pptx/route.ts:165"}, "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-d426e70983c5d590", "name": "Stray `console.log` in TS/JS \u2014 app/api/extract-url/route.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/extract-url/route.ts:84"}, "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-36d417a3986b4728", "name": "Stray `console.log` in TS/JS \u2014 app/api/deck-builder/route.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/deck-builder/route.ts:31"}, "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-09acce4ccfc8db3e", "name": "Stray `console.log` in TS/JS \u2014 app/api/generate-script/route.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-script/route.ts:57"}, "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-d46460b39dd0376a", "name": "Stray `console.log` in TS/JS \u2014 app/api/videos/start-pipeline/route.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/videos/start-pipeline/route.ts:53"}, "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-34c92dcb42ee3557", "name": "Stray `console.log` in TS/JS \u2014 app/api/social-accounts/route.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-accounts/route.ts:55"}, "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-0359c17f6499804f", "name": "Stray `console.log` in TS/JS \u2014 app/api/demo-slide-gpt/route.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/demo-slide-gpt/route.ts:44"}, "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-4769f26b8cd82553", "name": "Stray `console.log` in TS/JS \u2014 app/api/cron/nurture/route.ts:235", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/nurture/route.ts:235"}, "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-36b7217e96420e31", "name": "Stray `console.log` in TS/JS \u2014 app/api/cron/daily-digest/route.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/daily-digest/route.ts:48"}, "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-59e4e91f816e1712", "name": "Stray `console.log` in TS/JS \u2014 app/api/cron/cleanup-drafts/route.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/cleanup-drafts/route.ts:36"}, "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-99bbe3b43e614a10", "name": "Stray `console.log` in TS/JS \u2014 app/api/cron/weekly-report/route.ts:171", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/weekly-report/route.ts:171"}, "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-5cc32c3c522c18aa", "name": "Stray `console.log` in TS/JS \u2014 app/api/generate-flyer/route.ts:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-flyer/route.ts:106"}, "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-10bb6688e6acbac2", "name": "Stray `console.log` in TS/JS \u2014 app/api/generate-social-kit/route.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-social-kit/route.ts:124"}, "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-e7386b3b8aa9d626", "name": "Stray `console.log` in TS/JS \u2014 app/api/generate-video/route.ts:332", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-video/route.ts:332"}, "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-c3a35605dd2443e9", "name": "TODO/FIXME marker in shipping code \u2014 app/api/course-builder/route.ts:96", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/course-builder/route.ts:96"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f8f1278318f72e1e", "name": "Stray `console.log` in TS/JS \u2014 app/api/template-demo/generate/route.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/template-demo/generate/route.ts:40"}, "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-fd14252b2c8aa559", "name": "Stray `console.log` in TS/JS \u2014 app/api/template-demo/extract/route.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/template-demo/extract/route.ts:62"}, "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-dd0fc26f5016a174", "name": "Stray `console.log` in TS/JS \u2014 app/api/generate-deck/route.ts:144", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-deck/route.ts:144"}, "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-e56799197a6b4c18", "name": "Stray `console.log` in TS/JS \u2014 app/api/generate-pdf/route.ts:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-pdf/route.ts:158"}, "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-f999df0f4e685e59", "name": "Stray `console.log` in TS/JS \u2014 app/api/re-render/route.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/re-render/route.ts:54"}, "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-37fd7d01ba653f24", "name": "Stray `console.log` in TS/JS \u2014 app/api/pre-generate-audio/route.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/pre-generate-audio/route.ts:30"}, "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-c8ce2beffffa551c", "name": "Stray `console.log` in TS/JS \u2014 app/api/generate-business-card/route.ts:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-business-card/route.ts:97"}, "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-8a42e79161c31346", "name": "Stray `console.log` in TS/JS \u2014 app/api/webhooks/creatomate/route.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/webhooks/creatomate/route.ts:78"}, "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-2ce973c91ce31d92", "name": "Stray `console.log` in TS/JS \u2014 app/api/webhooks/stripe/route.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/webhooks/stripe/route.ts:90"}, "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-f539e7ab72226d45", "name": "Stray `console.log` in TS/JS \u2014 app/api/style-preview-custom/route.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/style-preview-custom/route.ts:58"}, "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-5305b0d781378f1a", "name": "Stray `console.log` in TS/JS \u2014 app/api/generate-ads/route.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-ads/route.ts:72"}, "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-1da4c6a1799996d0", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(dashboard)/help/page.tsx:570", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(dashboard)/help/page.tsx:570"}, "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-2715b91ef61ab720", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(dashboard)/help/faq/page.tsx:182", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(dashboard)/help/faq/page.tsx:182"}, "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-5fd2a148b4d1ae74", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(dashboard)/email-signature/page.tsx:495", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(dashboard)/email-signature/page.tsx:495"}, "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-b03b35049da3a976", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(dashboard)/admin/help/page.tsx:368", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(dashboard)/admin/help/page.tsx:368"}, "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-295e6a6204524bd2", "name": "Stray `console.log` in TS/JS \u2014 app/(dashboard)/videos/[id]/page.tsx:530", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/(dashboard)/videos/[id]/page.tsx:530"}, "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-bc077f88da2d39be", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(dashboard)/brand-kit/page.tsx:1057", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(dashboard)/brand-kit/page.tsx:1057"}, "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-ba9f5f52e522553a", "name": "Stray `console.log` in TS/JS \u2014 app/_lib/brand-scraper.ts:266", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/brand-scraper.ts:266"}, "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-122eb8d76b0e3e08", "name": "Stray `console.log` in TS/JS \u2014 app/_lib/video.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/video.ts: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-adb0788293ccbeb2", "name": "Stray `console.log` in TS/JS \u2014 app/_lib/notifications.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/notifications.ts:62"}, "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-2cd9dff94cad41ae", "name": "Stray `console.log` in TS/JS \u2014 app/_lib/credits.ts:228", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/credits.ts:228"}, "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-3cf4024cd43a69c8", "name": "Stray `console.log` in TS/JS \u2014 app/_lib/music-generator.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/music-generator.ts:63"}, "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-fef3b9bab89dce7d", "name": "Stray `console.log` in TS/JS \u2014 app/_lib/script-generator.ts:204", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/script-generator.ts:204"}, "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-76ddd4e413e69cad", "name": "Stray `console.log` in TS/JS \u2014 app/_lib/animated-slide.ts:277", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/animated-slide.ts:277"}, "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-6157fc52338eea29", "name": "Stray `console.log` in TS/JS \u2014 app/_lib/insurance-reconciler.ts:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/insurance-reconciler.ts:103"}, "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-c2eaca90de367aa3", "name": "Stray `console.log` in TS/JS \u2014 app/_lib/tts.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/tts.ts:21"}, "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-fe24e1d403e8ae04", "name": "Stray `console.log` in TS/JS \u2014 app/_lib/insurance-extractor.ts:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/insurance-extractor.ts:110"}, "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-a64174cd9712de14", "name": "Stray `console.log` in TS/JS \u2014 app/_lib/inngest/render-video.ts:140", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/inngest/render-video.ts:140"}, "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-9291cb6226c2323e", "name": "`truncate` class without `title=` for hover reveal \u2014 app/_components/VideoPlayer.tsx:82", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/_components/VideoPlayer.tsx:82"}, "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-1d1cd186423b8095", "name": "Stray `console.log` in TS/JS \u2014 vps/server.js:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 vps/server.js:69"}, "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-b8a44cd38a99a2b9", "name": "Dockerfile runs as root: video-service/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: video-service/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c42c4b42251d0b6b", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d6f68e51fd1ae493", "name": "Insecure pattern 'node_child_process' in video-service/server.js:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in video-service/server.js:2"}, "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-827d23f1738f5812", "name": "Insecure pattern 'dangerous_innerhtml' in app/(dashboard)/help/page.tsx:570", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(dashboard)/help/page.tsx:570"}, "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-cc74833dd6fb9fcb", "name": "Insecure pattern 'dangerous_innerhtml' in app/(dashboard)/help/faq/page.tsx:182", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(dashboard)/help/faq/page.tsx:182"}, "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-6dfdfbc16f637833", "name": "Insecure pattern 'dangerous_innerhtml' in app/(dashboard)/email-signature/page.tsx:495", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(dashboard)/email-signature/page.tsx:495"}, "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-daa6f43518490080", "name": "Insecure pattern 'dangerous_innerhtml' in app/(dashboard)/admin/help/page.tsx:368", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(dashboard)/admin/help/page.tsx:368"}, "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-98dda4a517ed7362", "name": "Insecure pattern 'dangerous_innerhtml' in app/(dashboard)/brand-kit/page.tsx:1057", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(dashboard)/brand-kit/page.tsx:1057"}, "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-4b7d20f44bb45309", "name": "Insecure pattern 'node_child_process' in app/_lib/video.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in app/_lib/video.ts:5"}, "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-5f1fd371ca548d1b", "name": "Insecure pattern 'node_child_process' in app/_lib/animated-slide.ts:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in app/_lib/animated-slide.ts:7"}, "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-b63e6fcde6336968", "name": "Insecure pattern 'node_child_process' in vps/server.js:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in vps/server.js:2"}, "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-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-51878daafec6fcd7", "name": "Very large file: app/page.tsx (874 lines)", "shortDescription": {"text": "Very large file: app/page.tsx (874 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-ab6cf32675278ff3", "name": "Very large file: app/(dashboard)/settings/page.tsx (1118 lines)", "shortDescription": {"text": "Very large file: app/(dashboard)/settings/page.tsx (1118 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-c8b11e3250fe4878", "name": "Very large file: app/(dashboard)/admin/page.tsx (1360 lines)", "shortDescription": {"text": "Very large file: app/(dashboard)/admin/page.tsx (1360 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-db05eb528ce3cbc5", "name": "Very large file: app/(dashboard)/deck-builder/page.tsx (1113 lines)", "shortDescription": {"text": "Very large file: app/(dashboard)/deck-builder/page.tsx (1113 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-867bb06130f294f5", "name": "Very large file: app/(dashboard)/create/script/page.tsx (1110 lines)", "shortDescription": {"text": "Very large file: app/(dashboard)/create/script/page.tsx (1110 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-9f71c1297e413770", "name": "Very large file: app/(dashboard)/videos/[id]/page.tsx (2219 lines)", "shortDescription": {"text": "Very large file: app/(dashboard)/videos/[id]/page.tsx (2219 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-bbea60906cef4924", "name": "Very large file: app/(public)/watch/[id]/page.tsx (1818 lines)", "shortDescription": {"text": "Very large file: app/(public)/watch/[id]/page.tsx (1818 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": "20 test file(s) for 454 source file(s) (ratio 0.04). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb82921dd5e3d96b", "name": "Node manifest has dependencies but no lockfile: video-service/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: video-service/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "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 425 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 219 placeholder/mock markers across 66 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-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "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-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-e725d2ab884fbd49", "name": "Multiple root agent instruction files without precedence", "shortDescription": {"text": "Multiple root agent instruction files without precedence"}, "fullDescription": {"text": "The repo has multiple top-level AI-coder instruction files. Without precedence rules, different agents may follow different policies."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b684df254cce9d6c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/finalize-creatomate-local.mjs:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/finalize-creatomate-local.mjs:20"}, "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-c2a65b9e9407845e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/re-render-v2.mjs:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/re-render-v2.mjs:21"}, "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-22f0514070280137", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-presenter.js:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-presenter.js:63"}, "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-817cbba2ae0f70b9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/auth/google/callback/route.ts:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/auth/google/callback/route.ts:37"}, "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-2052032427b6336e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/auth/microsoft/callback/route.ts:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/auth/microsoft/callback/route.ts:38"}, "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-4cdf6d1e52e77ee2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/v1/videos/route.ts:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/v1/videos/route.ts:45"}, "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-3b788cf7b3da897b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-share/route.ts:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-share/route.ts:78"}, "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-750685ee907eb5de", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/create-video/route.ts:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/create-video/route.ts:46"}, "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-c9aadd4797dc52c7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/video-editor/route.ts:137", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/video-editor/route.ts:137"}, "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-f1d0c1fadd108411", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/voice-preview/route.ts:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/voice-preview/route.ts:22"}, "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-6e7ce7aa4c40c51f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/admin/bulk-generate/route.ts:73", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/admin/bulk-generate/route.ts:73"}, "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-a19332ecfcf8a4c1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/extract/route.ts:242", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/extract/route.ts:242"}, "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-a52b4ca00b39b856", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/videos/start-pipeline/route.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/videos/start-pipeline/route.ts:58"}, "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-cd1f5ca287feb96a", "name": "Commented-code block (5 lines) in app/api/generate-video/route.ts:101", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/generate-video/route.ts:101"}, "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-fdd498594346d7c5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/stripe/oauth/callback/route.ts:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/stripe/oauth/callback/route.ts:26"}, "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-157f998c4ef5b05a", "name": "Commented-code block (5 lines) in app/api/stripe/checkout/route.ts:65", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/stripe/checkout/route.ts:65"}, "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-4cf472600310a348", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-media/post/route.ts:73", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-media/post/route.ts:73"}, "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-ef0d3fadc2321052", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/settings/page.tsx:941", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/settings/page.tsx:941"}, "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-21a7cd383ea57899", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/activity/page.tsx:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/activity/page.tsx:55"}, "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-a54393044b42bc98", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/ads/page.tsx:130", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/ads/page.tsx:130"}, "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-ed1478b60a6fffba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/templates/page.tsx:124", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/templates/page.tsx:124"}, "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-2568cc116c3eb678", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/email-signature/page.tsx:97", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/email-signature/page.tsx:97"}, "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-41d05aa55d9f3621", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/admin/page.tsx:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/admin/page.tsx:57"}, "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-2a0bd2eebd42a27d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/admin/users/[id]/page.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/admin/users/[id]/page.tsx:66"}, "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-65c1156c6a147af8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/admin/campaigns/page.tsx:279", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/admin/campaigns/page.tsx:279"}, "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-a97508e59553c9ff", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/fix/page.tsx:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/fix/page.tsx:79"}, "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-ad96f19cb3d0c37c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/deck-builder/page.tsx:204", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/deck-builder/page.tsx:204"}, "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-05d7c28f8d6ac420", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/create/brand/page.tsx:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/create/brand/page.tsx:61"}, "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-5be94162de6e7aa0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/create/script/page.tsx:189", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/create/script/page.tsx:189"}, "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-96351b82cad2049f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/create/_components/Step1Content.tsx:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/create/_components/Step1Content.tsx:44"}, "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-243e4acadcd284eb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/videos/[id]/page.tsx:531", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/videos/[id]/page.tsx: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-4543e068572a0862", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/flyers/page.tsx:164", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/flyers/page.tsx:164"}, "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-03c12ef2e05bbba1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/quick/page.tsx:118", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/quick/page.tsx:118"}, "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-af0a683edd5d065d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/infographics/[id]/page.tsx:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/infographics/[id]/page.tsx:65"}, "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-3ac102f81e201461", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/_lib/email.ts:121", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/_lib/email.ts:121"}, "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-5e55bca32ae0e671", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/_lib/logo-styler.ts:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/_lib/logo-styler.ts:71"}, "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-2a78b3d731103c2f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/_lib/tts-cartesia.ts:19", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/_lib/tts-cartesia.ts:19"}, "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-3e08a31c1e5c920b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/_components/NotificationBell.tsx:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/_components/NotificationBell.tsx:72"}, "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-f4a5177e7aad5fef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/_components/SendEmailModal.tsx:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/_components/SendEmailModal.tsx:26"}, "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-92eb5ec7ec5e03b0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/(public)/try/[slug]/creating/page.tsx:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(public)/try/[slug]/creating/page.tsx:48"}, "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-5c4225bf35f23493", "name": "`fetch()` without try/.catch or AbortSignal \u2014 e2e/integration.spec.ts:422", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 e2e/integration.spec.ts:422"}, "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-c63e2c5ec811bf39", "name": "Dangling fetch: GET https://api.creatomate.com/v2/renders/${renderId} (scripts/finalize-creatomate-local.mjs:20)", "shortDescription": {"text": "Dangling fetch: GET https://api.creatomate.com/v2/renders/${renderId} (scripts/finalize-creatomate-local.mjs:20)"}, "fullDescription": {"text": "`scripts/finalize-creatomate-local.mjs:20` calls `GET https://api.creatomate.com/v2/renders/${renderId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.creatomate.com/v2/renders/<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-dbc1c86a50942300", "name": "Dangling fetch: POST http://localhost:3000/api/webhooks/creatomate (scripts/finalize-creatomate-local.mjs:26)", "shortDescription": {"text": "Dangling fetch: POST http://localhost:3000/api/webhooks/creatomate (scripts/finalize-creatomate-local.mjs:26)"}, "fullDescription": {"text": "`scripts/finalize-creatomate-local.mjs:26` calls `POST http://localhost:3000/api/webhooks/creatomate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:3000/api/webhooks/creatomate`\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-f42c60a6e38844a0", "name": "Dangling fetch: POST https://api.creatomate.com/v1/renders (scripts/re-render-v2.mjs:45)", "shortDescription": {"text": "Dangling fetch: POST https://api.creatomate.com/v1/renders (scripts/re-render-v2.mjs:45)"}, "fullDescription": {"text": "`scripts/re-render-v2.mjs:45` calls `POST https://api.creatomate.com/v1/renders` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.creatomate.com/v1/renders`\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-009dff669ace8bbe", "name": "Dangling fetch: POST https://api.kie.ai/api/v1/jobs/createTask (scripts/test-presenter.js:63)", "shortDescription": {"text": "Dangling fetch: POST https://api.kie.ai/api/v1/jobs/createTask (scripts/test-presenter.js:63)"}, "fullDescription": {"text": "`scripts/test-presenter.js:63` calls `POST https://api.kie.ai/api/v1/jobs/createTask` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.kie.ai/api/v1/jobs/createtask`\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-a2f4077342a6191f", "name": "Dangling fetch: GET https://api.kie.ai/api/v1/jobs/recordInfo?taskId=${taskId} (scripts/test-presenter.js:96)", "shortDescription": {"text": "Dangling fetch: GET https://api.kie.ai/api/v1/jobs/recordInfo?taskId=${taskId} (scripts/test-presenter.js:96)"}, "fullDescription": {"text": "`scripts/test-presenter.js:96` calls `GET https://api.kie.ai/api/v1/jobs/recordInfo?taskId=${taskId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.kie.ai/api/v1/jobs/recordinfo`\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-02b1e7b8afeaa44d", "name": "Dangling fetch: POST https://app.ayrshare.com/api/post (app/api/social-campaign/route.ts:309)", "shortDescription": {"text": "Dangling fetch: POST https://app.ayrshare.com/api/post (app/api/social-campaign/route.ts:309)"}, "fullDescription": {"text": "`app/api/social-campaign/route.ts:309` calls `POST https://app.ayrshare.com/api/post` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/app.ayrshare.com/api/post`\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-2834c73cdff840c4", "name": "Dangling fetch: POST https://oauth2.googleapis.com/token (app/api/auth/google/callback/route.ts:19)", "shortDescription": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (app/api/auth/google/callback/route.ts:19)"}, "fullDescription": {"text": "`app/api/auth/google/callback/route.ts:19` calls `POST https://oauth2.googleapis.com/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth2.googleapis.com/token`\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-26f66589499f8014", "name": "Dangling fetch: GET https://www.googleapis.com/oauth2/v2/userinfo (app/api/auth/google/callback/route.ts:37)", "shortDescription": {"text": "Dangling fetch: GET https://www.googleapis.com/oauth2/v2/userinfo (app/api/auth/google/callback/route.ts:37)"}, "fullDescription": {"text": "`app/api/auth/google/callback/route.ts:37` calls `GET https://www.googleapis.com/oauth2/v2/userinfo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.googleapis.com/oauth2/v2/userinfo`\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-2a92876ab4731ea9", "name": "Dangling fetch: POST https://login.microsoftonline.com/common/oauth2/v2.0/token (app/api/auth/microsoft/callback/route.t", "shortDescription": {"text": "Dangling fetch: POST https://login.microsoftonline.com/common/oauth2/v2.0/token (app/api/auth/microsoft/callback/route.ts:19)"}, "fullDescription": {"text": "`app/api/auth/microsoft/callback/route.ts:19` calls `POST https://login.microsoftonline.com/common/oauth2/v2.0/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/login.microsoftonline.com/common/oauth2/v2.0/token`\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-312c803653dea585", "name": "Dangling fetch: GET https://graph.microsoft.com/v1.0/me (app/api/auth/microsoft/callback/route.ts:38)", "shortDescription": {"text": "Dangling fetch: GET https://graph.microsoft.com/v1.0/me (app/api/auth/microsoft/callback/route.ts:38)"}, "fullDescription": {"text": "`app/api/auth/microsoft/callback/route.ts:38` calls `GET https://graph.microsoft.com/v1.0/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.microsoft.com/v1.0/me`\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-4382a18864470491", "name": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${proc", "shortDescription": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${process.env.GEMINI_API_KEY} (app/api/follow-up/generate/route.ts:66)"}, "fullDescription": {"text": "`app/api/follow-up/generate/route.ts:66` calls `POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${process.env.GEMINI_API_KEY}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash/<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-ae9c10db03e36cd8", "name": "Dangling fetch: POST https://app.ayrshare.com/api/post (app/api/social-share/route.ts:78)", "shortDescription": {"text": "Dangling fetch: POST https://app.ayrshare.com/api/post (app/api/social-share/route.ts:78)"}, "fullDescription": {"text": "`app/api/social-share/route.ts:78` calls `POST https://app.ayrshare.com/api/post` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/app.ayrshare.com/api/post`\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-3c6b2f7099e67141", "name": "Dangling fetch: POST https://api.cartesia.ai/tts/bytes (app/api/voice-preview/route.ts:22)", "shortDescription": {"text": "Dangling fetch: POST https://api.cartesia.ai/tts/bytes (app/api/voice-preview/route.ts:22)"}, "fullDescription": {"text": "`app/api/voice-preview/route.ts:22` calls `POST https://api.cartesia.ai/tts/bytes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.cartesia.ai/tts/bytes`\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-cb41f7c93563f29c", "name": "Dangling fetch: GET https://app.ayrshare.com/api/profiles/${profileKey} (app/api/social-accounts/route.ts:33)", "shortDescription": {"text": "Dangling fetch: GET https://app.ayrshare.com/api/profiles/${profileKey} (app/api/social-accounts/route.ts:33)"}, "fullDescription": {"text": "`app/api/social-accounts/route.ts:33` calls `GET https://app.ayrshare.com/api/profiles/${profileKey}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/app.ayrshare.com/api/profiles/<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-18c9e829af71517b", "name": "Dangling fetch: GET https://app.ayrshare.com/api/user (app/api/social-accounts/route.ts:61)", "shortDescription": {"text": "Dangling fetch: GET https://app.ayrshare.com/api/user (app/api/social-accounts/route.ts:61)"}, "fullDescription": {"text": "`app/api/social-accounts/route.ts:61` calls `GET https://app.ayrshare.com/api/user` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/app.ayrshare.com/api/user`\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-636c41d42d0b2671", "name": "Dangling fetch: POST https://app.ayrshare.com/api/profiles/profile (app/api/social-accounts/route.ts:113)", "shortDescription": {"text": "Dangling fetch: POST https://app.ayrshare.com/api/profiles/profile (app/api/social-accounts/route.ts:113)"}, "fullDescription": {"text": "`app/api/social-accounts/route.ts:113` calls `POST https://app.ayrshare.com/api/profiles/profile` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/app.ayrshare.com/api/profiles/profile`\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-1fd72e646aab2876", "name": "Dangling fetch: DELETE https://app.ayrshare.com/api/profiles/social (app/api/social-accounts/route.ts:159)", "shortDescription": {"text": "Dangling fetch: DELETE https://app.ayrshare.com/api/profiles/social (app/api/social-accounts/route.ts:159)"}, "fullDescription": {"text": "`app/api/social-accounts/route.ts:159` calls `DELETE https://app.ayrshare.com/api/profiles/social` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/app.ayrshare.com/api/profiles/social`\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-3c60e373f6f935b6", "name": "Dangling fetch: POST https://connect.stripe.com/oauth/token (app/api/stripe/oauth/callback/route.ts:26)", "shortDescription": {"text": "Dangling fetch: POST https://connect.stripe.com/oauth/token (app/api/stripe/oauth/callback/route.ts:26)"}, "fullDescription": {"text": "`app/api/stripe/oauth/callback/route.ts:26` calls `POST https://connect.stripe.com/oauth/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/connect.stripe.com/oauth/token`\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-9409713cc099c809", "name": "Dangling fetch: POST https://app.ayrshare.com/api/post (app/api/social-media/post/route.ts:73)", "shortDescription": {"text": "Dangling fetch: POST https://app.ayrshare.com/api/post (app/api/social-media/post/route.ts:73)"}, "fullDescription": {"text": "`app/api/social-media/post/route.ts:73` calls `POST https://app.ayrshare.com/api/post` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/app.ayrshare.com/api/post`\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-f1eb0e7af028722f", "name": "Dangling fetch: GET /api/referrals (app/(dashboard)/settings/page.tsx:23)", "shortDescription": {"text": "Dangling fetch: GET /api/referrals (app/(dashboard)/settings/page.tsx:23)"}, "fullDescription": {"text": "`app/(dashboard)/settings/page.tsx:23` calls `GET /api/referrals` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/referrals`\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-ef56e7b246e8fc3a", "name": "Dangling fetch: POST /api/referrals (app/(dashboard)/settings/page.tsx:34)", "shortDescription": {"text": "Dangling fetch: POST /api/referrals (app/(dashboard)/settings/page.tsx:34)"}, "fullDescription": {"text": "`app/(dashboard)/settings/page.tsx:34` calls `POST /api/referrals` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/referrals`\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-fb934dcc375779ab", "name": "Dangling fetch: GET /api/credits/balance (app/(dashboard)/settings/page.tsx:141)", "shortDescription": {"text": "Dangling fetch: GET /api/credits/balance (app/(dashboard)/settings/page.tsx:141)"}, "fullDescription": {"text": "`app/(dashboard)/settings/page.tsx:141` calls `GET /api/credits/balance` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/credits/balance`\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-29122c493a25259d", "name": "Dangling fetch: GET /api/email-connections (app/(dashboard)/settings/page.tsx:188)", "shortDescription": {"text": "Dangling fetch: GET /api/email-connections (app/(dashboard)/settings/page.tsx:188)"}, "fullDescription": {"text": "`app/(dashboard)/settings/page.tsx:188` calls `GET /api/email-connections` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-connections`\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-aaa63a90f67eaa21", "name": "Dangling fetch: GET /api/social-accounts (app/(dashboard)/settings/page.tsx:195)", "shortDescription": {"text": "Dangling fetch: GET /api/social-accounts (app/(dashboard)/settings/page.tsx:195)"}, "fullDescription": {"text": "`app/(dashboard)/settings/page.tsx:195` calls `GET /api/social-accounts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-accounts`\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-7513981ed1073c97", "name": "Dangling fetch: POST /api/social-accounts (app/(dashboard)/settings/page.tsx:207)", "shortDescription": {"text": "Dangling fetch: POST /api/social-accounts (app/(dashboard)/settings/page.tsx:207)"}, "fullDescription": {"text": "`app/(dashboard)/settings/page.tsx:207` calls `POST /api/social-accounts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-accounts`\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-fb8bccb94df64d9b", "name": "Dangling fetch: POST /api/social-accounts (app/(dashboard)/settings/page.tsx:232)", "shortDescription": {"text": "Dangling fetch: POST /api/social-accounts (app/(dashboard)/settings/page.tsx:232)"}, "fullDescription": {"text": "`app/(dashboard)/settings/page.tsx:232` calls `POST /api/social-accounts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-accounts`\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-aeb436e0ada4839d", "name": "Dangling fetch: POST /api/email-connections/test (app/(dashboard)/settings/page.tsx:265)", "shortDescription": {"text": "Dangling fetch: POST /api/email-connections/test (app/(dashboard)/settings/page.tsx:265)"}, "fullDescription": {"text": "`app/(dashboard)/settings/page.tsx:265` calls `POST /api/email-connections/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-connections/test`\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-1262a89bb48739f7", "name": "Dangling fetch: POST /api/upload-photo (app/(dashboard)/settings/page.tsx:331)", "shortDescription": {"text": "Dangling fetch: POST /api/upload-photo (app/(dashboard)/settings/page.tsx:331)"}, "fullDescription": {"text": "`app/(dashboard)/settings/page.tsx:331` calls `POST /api/upload-photo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/upload-photo`\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-708c84f04bae36fb", "name": "Dangling fetch: POST /api/upload-logo (app/(dashboard)/settings/page.tsx:355)", "shortDescription": {"text": "Dangling fetch: POST /api/upload-logo (app/(dashboard)/settings/page.tsx:355)"}, "fullDescription": {"text": "`app/(dashboard)/settings/page.tsx:355` calls `POST /api/upload-logo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/upload-logo`\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-efe07b940904d58f", "name": "Dangling fetch: POST /api/stripe/portal (app/(dashboard)/settings/page.tsx:941)", "shortDescription": {"text": "Dangling fetch: POST /api/stripe/portal (app/(dashboard)/settings/page.tsx:941)"}, "fullDescription": {"text": "`app/(dashboard)/settings/page.tsx:941` calls `POST /api/stripe/portal` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stripe/portal`\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-c2a9a12561032b8b", "name": "Dangling fetch: POST /api/stripe/portal (app/(dashboard)/settings/page.tsx:950)", "shortDescription": {"text": "Dangling fetch: POST /api/stripe/portal (app/(dashboard)/settings/page.tsx:950)"}, "fullDescription": {"text": "`app/(dashboard)/settings/page.tsx:950` calls `POST /api/stripe/portal` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stripe/portal`\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-8f932ea0d6028f32", "name": "Dangling fetch: POST /api/stripe/portal (app/(dashboard)/settings/page.tsx:1049)", "shortDescription": {"text": "Dangling fetch: POST /api/stripe/portal (app/(dashboard)/settings/page.tsx:1049)"}, "fullDescription": {"text": "`app/(dashboard)/settings/page.tsx:1049` calls `POST /api/stripe/portal` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stripe/portal`\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-01e2b3eeb41f53c4", "name": "Dangling fetch: POST /api/subscribe (app/(dashboard)/settings/page.tsx:1062)", "shortDescription": {"text": "Dangling fetch: POST /api/subscribe (app/(dashboard)/settings/page.tsx:1062)"}, "fullDescription": {"text": "`app/(dashboard)/settings/page.tsx:1062` calls `POST /api/subscribe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/subscribe`\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-237892386a728458", "name": "Dangling fetch: POST /api/account/delete (app/(dashboard)/settings/page.tsx:1094)", "shortDescription": {"text": "Dangling fetch: POST /api/account/delete (app/(dashboard)/settings/page.tsx:1094)"}, "fullDescription": {"text": "`app/(dashboard)/settings/page.tsx:1094` calls `POST /api/account/delete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/account/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-37a1645418c0cd52", "name": "Dangling fetch: POST /api/demo-slide-gpt (app/(dashboard)/demo-slide/page.tsx:34)", "shortDescription": {"text": "Dangling fetch: POST /api/demo-slide-gpt (app/(dashboard)/demo-slide/page.tsx:34)"}, "fullDescription": {"text": "`app/(dashboard)/demo-slide/page.tsx:34` calls `POST /api/demo-slide-gpt` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/demo-slide-gpt`\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-03b003ed9041704e", "name": "Dangling fetch: POST /api/generate-business-card (app/(dashboard)/business-cards/page.tsx:87)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-business-card (app/(dashboard)/business-cards/page.tsx:87)"}, "fullDescription": {"text": "`app/(dashboard)/business-cards/page.tsx:87` calls `POST /api/generate-business-card` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-business-card`\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-4be525c04c7aa205", "name": "Dangling fetch: GET /api/analytics (app/(dashboard)/analytics/page.tsx:57)", "shortDescription": {"text": "Dangling fetch: GET /api/analytics (app/(dashboard)/analytics/page.tsx:57)"}, "fullDescription": {"text": "`app/(dashboard)/analytics/page.tsx:57` calls `GET /api/analytics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/analytics`\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-cc5b07ceb86b1093", "name": "Dangling fetch: GET /api/benchmarks (app/(dashboard)/analytics/page.tsx:58)", "shortDescription": {"text": "Dangling fetch: GET /api/benchmarks (app/(dashboard)/analytics/page.tsx:58)"}, "fullDescription": {"text": "`app/(dashboard)/analytics/page.tsx:58` calls `GET /api/benchmarks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/benchmarks`\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-2cc3549d226ab774", "name": "Dangling fetch: POST /api/generate-infographic (app/(dashboard)/infographic-creator/page.tsx:94)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-infographic (app/(dashboard)/infographic-creator/page.tsx:94)"}, "fullDescription": {"text": "`app/(dashboard)/infographic-creator/page.tsx:94` calls `POST /api/generate-infographic` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-infographic`\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-f7fb4e96ddd39814", "name": "Dangling fetch: POST /api/generate-social-kit (app/(dashboard)/social-kit/page.tsx:95)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-social-kit (app/(dashboard)/social-kit/page.tsx:95)"}, "fullDescription": {"text": "`app/(dashboard)/social-kit/page.tsx:95` calls `POST /api/generate-social-kit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-social-kit`\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-cf250da6837511fb", "name": "Dangling fetch: GET /api/affiliate/stats (app/(dashboard)/affiliate/page.tsx:27)", "shortDescription": {"text": "Dangling fetch: GET /api/affiliate/stats (app/(dashboard)/affiliate/page.tsx:27)"}, "fullDescription": {"text": "`app/(dashboard)/affiliate/page.tsx:27` calls `GET /api/affiliate/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/affiliate/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-eb9cb49cffbe1c61", "name": "Dangling fetch: POST /api/affiliate/payout (app/(dashboard)/affiliate/page.tsx:40)", "shortDescription": {"text": "Dangling fetch: POST /api/affiliate/payout (app/(dashboard)/affiliate/page.tsx:40)"}, "fullDescription": {"text": "`app/(dashboard)/affiliate/page.tsx:40` calls `POST /api/affiliate/payout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/affiliate/payout`\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-ebee397b39935a65", "name": "Dangling fetch: POST /api/affiliate/enroll (app/(dashboard)/affiliate/page.tsx:51)", "shortDescription": {"text": "Dangling fetch: POST /api/affiliate/enroll (app/(dashboard)/affiliate/page.tsx:51)"}, "fullDescription": {"text": "`app/(dashboard)/affiliate/page.tsx:51` calls `POST /api/affiliate/enroll` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/affiliate/enroll`\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-3c2a2437233c8356", "name": "Dangling fetch: GET /api/notifications (app/(dashboard)/activity/page.tsx:50)", "shortDescription": {"text": "Dangling fetch: GET /api/notifications (app/(dashboard)/activity/page.tsx:50)"}, "fullDescription": {"text": "`app/(dashboard)/activity/page.tsx:50` calls `GET /api/notifications` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/notifications`\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-6cb3cd154920d490", "name": "Dangling fetch: GET /api/activity/jobs (app/(dashboard)/activity/page.tsx:55)", "shortDescription": {"text": "Dangling fetch: GET /api/activity/jobs (app/(dashboard)/activity/page.tsx:55)"}, "fullDescription": {"text": "`app/(dashboard)/activity/page.tsx:55` calls `GET /api/activity/jobs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/activity/jobs`\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-319661a53dba4b94", "name": "Dangling fetch: POST /api/scrape-brand (app/(dashboard)/brands/new/page.tsx:182)", "shortDescription": {"text": "Dangling fetch: POST /api/scrape-brand (app/(dashboard)/brands/new/page.tsx:182)"}, "fullDescription": {"text": "`app/(dashboard)/brands/new/page.tsx:182` calls `POST /api/scrape-brand` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/scrape-brand`\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-e143504ef491cd10", "name": "Dangling fetch: POST /api/extract-logo-colors (app/(dashboard)/brands/new/page.tsx:530)", "shortDescription": {"text": "Dangling fetch: POST /api/extract-logo-colors (app/(dashboard)/brands/new/page.tsx:530)"}, "fullDescription": {"text": "`app/(dashboard)/brands/new/page.tsx:530` calls `POST /api/extract-logo-colors` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract-logo-colors`\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-f521e15af8bda202", "name": "Dangling fetch: POST /api/generate-logo-kit (app/(dashboard)/brands/[id]/page.tsx:84)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-logo-kit (app/(dashboard)/brands/[id]/page.tsx:84)"}, "fullDescription": {"text": "`app/(dashboard)/brands/[id]/page.tsx:84` calls `POST /api/generate-logo-kit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-logo-kit`\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-adb6126bdd6aed49", "name": "Dangling fetch: POST /api/upload-logo (app/(dashboard)/brands/[id]/page.tsx:150)", "shortDescription": {"text": "Dangling fetch: POST /api/upload-logo (app/(dashboard)/brands/[id]/page.tsx:150)"}, "fullDescription": {"text": "`app/(dashboard)/brands/[id]/page.tsx:150` calls `POST /api/upload-logo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/upload-logo`\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-c04266aee1871c76", "name": "Dangling fetch: POST /api/extract-logo-colors (app/(dashboard)/brands/[id]/page.tsx:156)", "shortDescription": {"text": "Dangling fetch: POST /api/extract-logo-colors (app/(dashboard)/brands/[id]/page.tsx:156)"}, "fullDescription": {"text": "`app/(dashboard)/brands/[id]/page.tsx:156` calls `POST /api/extract-logo-colors` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract-logo-colors`\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-ba76c5699fb39760", "name": "Dangling fetch: POST /api/generate-brand-deck (app/(dashboard)/brands/[id]/page.tsx:234)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-brand-deck (app/(dashboard)/brands/[id]/page.tsx:234)"}, "fullDescription": {"text": "`app/(dashboard)/brands/[id]/page.tsx:234` calls `POST /api/generate-brand-deck` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-brand-deck`\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-4b5263ec0bce8b8f", "name": "Dangling fetch: POST /api/generate-ads (app/(dashboard)/ads/page.tsx:130)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-ads (app/(dashboard)/ads/page.tsx:130)"}, "fullDescription": {"text": "`app/(dashboard)/ads/page.tsx:130` calls `POST /api/generate-ads` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-ads`\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-23bf38f2eaacf9b8", "name": "Dangling fetch: POST /api/image-remix (app/(dashboard)/image-remix/page.tsx:86)", "shortDescription": {"text": "Dangling fetch: POST /api/image-remix (app/(dashboard)/image-remix/page.tsx:86)"}, "fullDescription": {"text": "`app/(dashboard)/image-remix/page.tsx:86` calls `POST /api/image-remix` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/image-remix`\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-aa8d024072379a80", "name": "Dangling fetch: GET /api/templates (app/(dashboard)/templates/page.tsx:124)", "shortDescription": {"text": "Dangling fetch: GET /api/templates (app/(dashboard)/templates/page.tsx:124)"}, "fullDescription": {"text": "`app/(dashboard)/templates/page.tsx:124` calls `GET /api/templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/templates`\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-2dda6e2596ae4e8f", "name": "Dangling fetch: POST /api/template-chat (app/(dashboard)/templates/page.tsx:143)", "shortDescription": {"text": "Dangling fetch: POST /api/template-chat (app/(dashboard)/templates/page.tsx:143)"}, "fullDescription": {"text": "`app/(dashboard)/templates/page.tsx:143` calls `POST /api/template-chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/template-chat`\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-11df23333e8d6f65", "name": "Dangling fetch: POST /api/templates/generate-preview (app/(dashboard)/templates/page.tsx:170)", "shortDescription": {"text": "Dangling fetch: POST /api/templates/generate-preview (app/(dashboard)/templates/page.tsx:170)"}, "fullDescription": {"text": "`app/(dashboard)/templates/page.tsx:170` calls `POST /api/templates/generate-preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/templates/generate-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-d5b5ce325b73848a", "name": "Dangling fetch: POST /api/templates/refine (app/(dashboard)/templates/page.tsx:192)", "shortDescription": {"text": "Dangling fetch: POST /api/templates/refine (app/(dashboard)/templates/page.tsx:192)"}, "fullDescription": {"text": "`app/(dashboard)/templates/page.tsx:192` calls `POST /api/templates/refine` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/templates/refine`\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-02afc181e36cc83e", "name": "Dangling fetch: POST /api/templates (app/(dashboard)/templates/page.tsx:215)", "shortDescription": {"text": "Dangling fetch: POST /api/templates (app/(dashboard)/templates/page.tsx:215)"}, "fullDescription": {"text": "`app/(dashboard)/templates/page.tsx:215` calls `POST /api/templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/templates`\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-feaf2c3ee9736914", "name": "Dangling fetch: DELETE /api/templates?id=${id} (app/(dashboard)/templates/page.tsx:238)", "shortDescription": {"text": "Dangling fetch: DELETE /api/templates?id=${id} (app/(dashboard)/templates/page.tsx:238)"}, "fullDescription": {"text": "`app/(dashboard)/templates/page.tsx:238` calls `DELETE /api/templates?id=${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/templates`\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-46dc86d5f6123c58", "name": "Dangling fetch: POST /api/templates/generate-preview (app/(dashboard)/templates/page.tsx:280)", "shortDescription": {"text": "Dangling fetch: POST /api/templates/generate-preview (app/(dashboard)/templates/page.tsx:280)"}, "fullDescription": {"text": "`app/(dashboard)/templates/page.tsx:280` calls `POST /api/templates/generate-preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/templates/generate-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-faf3463f2f5b02f4", "name": "Dangling fetch: POST /api/templates/generate-preview (app/(dashboard)/templates/page.tsx:312)", "shortDescription": {"text": "Dangling fetch: POST /api/templates/generate-preview (app/(dashboard)/templates/page.tsx:312)"}, "fullDescription": {"text": "`app/(dashboard)/templates/page.tsx:312` calls `POST /api/templates/generate-preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/templates/generate-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-71535b555fe3d9b4", "name": "Dangling fetch: POST /api/upload (app/(dashboard)/email-signature/page.tsx:68)", "shortDescription": {"text": "Dangling fetch: POST /api/upload (app/(dashboard)/email-signature/page.tsx:68)"}, "fullDescription": {"text": "`app/(dashboard)/email-signature/page.tsx:68` calls `POST /api/upload` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/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-df540b70076ec00a", "name": "Dangling fetch: POST /api/generate-email-signature (app/(dashboard)/email-signature/page.tsx:97)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-email-signature (app/(dashboard)/email-signature/page.tsx:97)"}, "fullDescription": {"text": "`app/(dashboard)/email-signature/page.tsx:97` calls `POST /api/generate-email-signature` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-email-signature`\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-211c2ff96db79d9c", "name": "Dangling fetch: POST /api/logo-chat (app/(dashboard)/logo-creator/page.tsx:245)", "shortDescription": {"text": "Dangling fetch: POST /api/logo-chat (app/(dashboard)/logo-creator/page.tsx:245)"}, "fullDescription": {"text": "`app/(dashboard)/logo-creator/page.tsx:245` calls `POST /api/logo-chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/logo-chat`\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-77a4262df26ba700", "name": "Dangling fetch: POST /api/logo-chat (app/(dashboard)/logo-creator/page.tsx:309)", "shortDescription": {"text": "Dangling fetch: POST /api/logo-chat (app/(dashboard)/logo-creator/page.tsx:309)"}, "fullDescription": {"text": "`app/(dashboard)/logo-creator/page.tsx:309` calls `POST /api/logo-chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/logo-chat`\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-2155cba36012baa3", "name": "Dangling fetch: POST /api/logo-chat (app/(dashboard)/logo-creator/page.tsx:355)", "shortDescription": {"text": "Dangling fetch: POST /api/logo-chat (app/(dashboard)/logo-creator/page.tsx:355)"}, "fullDescription": {"text": "`app/(dashboard)/logo-creator/page.tsx:355` calls `POST /api/logo-chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/logo-chat`\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-fc200980d4cef98e", "name": "Dangling fetch: POST /api/logo-chat (app/(dashboard)/logo-creator/page.tsx:391)", "shortDescription": {"text": "Dangling fetch: POST /api/logo-chat (app/(dashboard)/logo-creator/page.tsx:391)"}, "fullDescription": {"text": "`app/(dashboard)/logo-creator/page.tsx:391` calls `POST /api/logo-chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/logo-chat`\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-5d27b579e2c2a63b", "name": "Dangling fetch: GET /api/admin/data (app/(dashboard)/admin/page.tsx:57)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/data (app/(dashboard)/admin/page.tsx:57)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:57` calls `GET /api/admin/data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/data`\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-d59c4bdea6b2146b", "name": "Dangling fetch: GET /api/admin/stats (app/(dashboard)/admin/page.tsx:72)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/stats (app/(dashboard)/admin/page.tsx:72)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:72` calls `GET /api/admin/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/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-cb320571f03f629f", "name": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:76)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:76)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:76` calls `GET /api/admin/prospect-pipeline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/prospect-pipeline`\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-5c1ca0be79b9f99e", "name": "Dangling fetch: GET /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:80)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:80)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:80` calls `GET /api/admin/campaign-send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaign-send`\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-9aa6ed2c7afd0c3c", "name": "Dangling fetch: GET /api/admin/data (app/(dashboard)/admin/page.tsx:86)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/data (app/(dashboard)/admin/page.tsx:86)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:86` calls `GET /api/admin/data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/data`\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-dd02256f28a5f7d6", "name": "Dangling fetch: GET /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:95)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:95)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:95` calls `GET /api/admin/campaign-send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaign-send`\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-eca713f1b5a52a9a", "name": "Dangling fetch: POST /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:103)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:103)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:103` calls `POST /api/admin/campaign-send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaign-send`\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-00984c87f4101a5e", "name": "Dangling fetch: POST /api/admin/user-action (app/(dashboard)/admin/page.tsx:117)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/user-action (app/(dashboard)/admin/page.tsx:117)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:117` calls `POST /api/admin/user-action` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/user-action`\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-b2e3e659e5ca7852", "name": "Dangling fetch: POST /api/admin/impersonate (app/(dashboard)/admin/page.tsx:131)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/impersonate (app/(dashboard)/admin/page.tsx:131)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:131` calls `POST /api/admin/impersonate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/impersonate`\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-84321ef702330fbe", "name": "Dangling fetch: POST /api/admin/retry-video (app/(dashboard)/admin/page.tsx:144)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/retry-video (app/(dashboard)/admin/page.tsx:144)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:144` calls `POST /api/admin/retry-video` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/retry-video`\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-a18cd08bc40be47b", "name": "Dangling fetch: POST /api/admin/manage-access (app/(dashboard)/admin/page.tsx:157)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/manage-access (app/(dashboard)/admin/page.tsx:157)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:157` calls `POST /api/admin/manage-access` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/manage-access`\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-adbc5be83ce6f06c", "name": "Dangling fetch: POST /api/admin/create-user (app/(dashboard)/admin/page.tsx:518)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/create-user (app/(dashboard)/admin/page.tsx:518)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:518` calls `POST /api/admin/create-user` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/create-user`\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-ea071397495bc668", "name": "Dangling fetch: GET /api/admin/data (app/(dashboard)/admin/page.tsx:535)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/data (app/(dashboard)/admin/page.tsx:535)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:535` calls `GET /api/admin/data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/data`\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-cf179c7dc62db26d", "name": "Dangling fetch: POST /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:745)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:745)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:745` calls `POST /api/admin/prospect-pipeline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/prospect-pipeline`\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-866ba564d6aa1e3c", "name": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:754)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:754)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:754` calls `GET /api/admin/prospect-pipeline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/prospect-pipeline`\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-28924170a84db4d0", "name": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:768)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:768)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:768` calls `GET /api/admin/prospect-pipeline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/prospect-pipeline`\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-2493df9982b55ba1", "name": "Dangling fetch: POST /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:826)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:826)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:826` calls `POST /api/admin/prospect-pipeline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/prospect-pipeline`\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-7b02c4561935a111", "name": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:827)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:827)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:827` calls `GET /api/admin/prospect-pipeline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/prospect-pipeline`\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-9367a2d9fd2dcf88", "name": "Dangling fetch: POST /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:839)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:839)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:839` calls `POST /api/admin/prospect-pipeline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/prospect-pipeline`\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-a8effea25ec95a2b", "name": "Dangling fetch: POST /api/admin/prospect-send (app/(dashboard)/admin/page.tsx:879)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/prospect-send (app/(dashboard)/admin/page.tsx:879)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:879` calls `POST /api/admin/prospect-send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/prospect-send`\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-9073657b99402984", "name": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:894)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:894)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:894` calls `GET /api/admin/prospect-pipeline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/prospect-pipeline`\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-b2eb0fdd8f946344", "name": "Dangling fetch: POST /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:955)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:955)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:955` calls `POST /api/admin/prospect-pipeline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/prospect-pipeline`\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-99e0d8fe57adb73f", "name": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:956)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:956)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:956` calls `GET /api/admin/prospect-pipeline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/prospect-pipeline`\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-a864378833cdce22", "name": "Dangling fetch: POST /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:1127)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:1127)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:1127` calls `POST /api/admin/campaign-send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaign-send`\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-4f1708bcc9c91311", "name": "Dangling fetch: POST /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:1197)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:1197)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:1197` calls `POST /api/admin/campaign-send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaign-send`\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-19f32aa60198fb0b", "name": "Dangling fetch: POST /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:1213)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:1213)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:1213` calls `POST /api/admin/campaign-send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaign-send`\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-1f4129d5aa3ddc3e", "name": "Dangling fetch: POST /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:1232)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:1232)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:1232` calls `POST /api/admin/campaign-send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaign-send`\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-cf2127b4f1381a63", "name": "Dangling fetch: GET /api/admin/stats (app/(dashboard)/admin/page.tsx:1345)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/stats (app/(dashboard)/admin/page.tsx:1345)"}, "fullDescription": {"text": "`app/(dashboard)/admin/page.tsx:1345` calls `GET /api/admin/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/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-09e3cd20d6bde31b", "name": "Dangling fetch: GET /api/admin/user-detail?id=${userId} (app/(dashboard)/admin/users/[id]/page.tsx:32)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/user-detail?id=${userId} (app/(dashboard)/admin/users/[id]/page.tsx:32)"}, "fullDescription": {"text": "`app/(dashboard)/admin/users/[id]/page.tsx:32` calls `GET /api/admin/user-detail?id=${userId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/user-detail`\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-7e14e3ad3bc4731d", "name": "Dangling fetch: GET /api/admin/credit-history?userId=${userId} (app/(dashboard)/admin/users/[id]/page.tsx:33)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/credit-history?userId=${userId} (app/(dashboard)/admin/users/[id]/page.tsx:33)"}, "fullDescription": {"text": "`app/(dashboard)/admin/users/[id]/page.tsx:33` calls `GET /api/admin/credit-history?userId=${userId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/credit-history`\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-7595b5e5a9e48943", "name": "Dangling fetch: POST /api/admin/manage-access (app/(dashboard)/admin/users/[id]/page.tsx:48)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/manage-access (app/(dashboard)/admin/users/[id]/page.tsx:48)"}, "fullDescription": {"text": "`app/(dashboard)/admin/users/[id]/page.tsx:48` calls `POST /api/admin/manage-access` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/manage-access`\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-2810f420064d081e", "name": "Dangling fetch: POST /api/admin/user-action (app/(dashboard)/admin/users/[id]/page.tsx:61)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/user-action (app/(dashboard)/admin/users/[id]/page.tsx:61)"}, "fullDescription": {"text": "`app/(dashboard)/admin/users/[id]/page.tsx:61` calls `POST /api/admin/user-action` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/user-action`\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-a84021ecfe2568cf", "name": "Dangling fetch: GET /api/admin/user-detail?id=${userId} (app/(dashboard)/admin/users/[id]/page.tsx:66)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/user-detail?id=${userId} (app/(dashboard)/admin/users/[id]/page.tsx:66)"}, "fullDescription": {"text": "`app/(dashboard)/admin/users/[id]/page.tsx:66` calls `GET /api/admin/user-detail?id=${userId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/user-detail`\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-f314520ccfb981ed", "name": "Dangling fetch: POST /api/admin/bulk-generate (app/(dashboard)/admin/bulk/page.tsx:101)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/bulk-generate (app/(dashboard)/admin/bulk/page.tsx:101)"}, "fullDescription": {"text": "`app/(dashboard)/admin/bulk/page.tsx:101` calls `POST /api/admin/bulk-generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/bulk-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-a07643817d10d80d", "name": "Dangling fetch: GET /api/admin/api-keys (app/(dashboard)/admin/api-keys/page.tsx:30)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/api-keys (app/(dashboard)/admin/api-keys/page.tsx:30)"}, "fullDescription": {"text": "`app/(dashboard)/admin/api-keys/page.tsx:30` calls `GET /api/admin/api-keys` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/api-keys`\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-e8303c6f3459c329", "name": "Dangling fetch: POST /api/admin/api-keys (app/(dashboard)/admin/api-keys/page.tsx:41)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/api-keys (app/(dashboard)/admin/api-keys/page.tsx:41)"}, "fullDescription": {"text": "`app/(dashboard)/admin/api-keys/page.tsx:41` calls `POST /api/admin/api-keys` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/api-keys`\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-7d42bafc99fa333d", "name": "Dangling fetch: GET /api/admin/campaigns (app/(dashboard)/admin/campaigns/page.tsx:206)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/campaigns (app/(dashboard)/admin/campaigns/page.tsx:206)"}, "fullDescription": {"text": "`app/(dashboard)/admin/campaigns/page.tsx:206` calls `GET /api/admin/campaigns` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaigns`\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-6eb018c0fb086442", "name": "Dangling fetch: GET /api/admin/campaigns/${id} (app/(dashboard)/admin/campaigns/page.tsx:218)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/campaigns/${id} (app/(dashboard)/admin/campaigns/page.tsx:218)"}, "fullDescription": {"text": "`app/(dashboard)/admin/campaigns/page.tsx:218` calls `GET /api/admin/campaigns/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaigns/<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-b6235c90b202e8cd", "name": "Dangling fetch: POST /api/admin/campaigns (app/(dashboard)/admin/campaigns/page.tsx:235)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/campaigns (app/(dashboard)/admin/campaigns/page.tsx:235)"}, "fullDescription": {"text": "`app/(dashboard)/admin/campaigns/page.tsx:235` calls `POST /api/admin/campaigns` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaigns`\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-3074a2796aea65a0", "name": "Dangling fetch: DELETE /api/admin/campaigns/${id} (app/(dashboard)/admin/campaigns/page.tsx:260)", "shortDescription": {"text": "Dangling fetch: DELETE /api/admin/campaigns/${id} (app/(dashboard)/admin/campaigns/page.tsx:260)"}, "fullDescription": {"text": "`app/(dashboard)/admin/campaigns/page.tsx:260` calls `DELETE /api/admin/campaigns/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaigns/<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-d0cf46e762dfbaaa", "name": "Dangling fetch: POST /api/admin/campaigns/${selectedCampaign.id}/contacts (app/(dashboard)/admin/campaigns/page.tsx:279)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/campaigns/${selectedCampaign.id}/contacts (app/(dashboard)/admin/campaigns/page.tsx:279)"}, "fullDescription": {"text": "`app/(dashboard)/admin/campaigns/page.tsx:279` calls `POST /api/admin/campaigns/${selectedCampaign.id}/contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaigns/<p>/contacts`\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-57539db1bd0db9d9", "name": "Dangling fetch: POST /api/admin/campaigns/${selectedCampaign.id}/generate (app/(dashboard)/admin/campaigns/page.tsx:301)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/campaigns/${selectedCampaign.id}/generate (app/(dashboard)/admin/campaigns/page.tsx:301)"}, "fullDescription": {"text": "`app/(dashboard)/admin/campaigns/page.tsx:301` calls `POST /api/admin/campaigns/${selectedCampaign.id}/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaigns/<p>/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-2b76900ac024fe49", "name": "Dangling fetch: POST /api/admin/campaigns/${selectedCampaign.id}/approve (app/(dashboard)/admin/campaigns/page.tsx:313)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/campaigns/${selectedCampaign.id}/approve (app/(dashboard)/admin/campaigns/page.tsx:313)"}, "fullDescription": {"text": "`app/(dashboard)/admin/campaigns/page.tsx:313` calls `POST /api/admin/campaigns/${selectedCampaign.id}/approve` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaigns/<p>/approve`\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-c03cbeca0deb8865", "name": "Dangling fetch: POST /api/admin/campaigns/${selectedCampaign.id}/send (app/(dashboard)/admin/campaigns/page.tsx:327)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/campaigns/${selectedCampaign.id}/send (app/(dashboard)/admin/campaigns/page.tsx:327)"}, "fullDescription": {"text": "`app/(dashboard)/admin/campaigns/page.tsx:327` calls `POST /api/admin/campaigns/${selectedCampaign.id}/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaigns/<p>/send`\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-3841e41f92ff5d56", "name": "Dangling fetch: POST /api/admin/campaigns/nurture (app/(dashboard)/admin/campaigns/page.tsx:340)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/campaigns/nurture (app/(dashboard)/admin/campaigns/page.tsx:340)"}, "fullDescription": {"text": "`app/(dashboard)/admin/campaigns/page.tsx:340` calls `POST /api/admin/campaigns/nurture` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/campaigns/nurture`\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-9e44672bc2a652d4", "name": "Dangling fetch: GET /api/admin/costs (app/(dashboard)/admin/costs/page.tsx:32)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/costs (app/(dashboard)/admin/costs/page.tsx:32)"}, "fullDescription": {"text": "`app/(dashboard)/admin/costs/page.tsx:32` calls `GET /api/admin/costs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/costs`\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-15a2fb81927d29c0", "name": "Dangling fetch: GET /api/admin/affiliates (app/(dashboard)/admin/affiliates/page.tsx:29)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/affiliates (app/(dashboard)/admin/affiliates/page.tsx:29)"}, "fullDescription": {"text": "`app/(dashboard)/admin/affiliates/page.tsx:29` calls `GET /api/admin/affiliates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/affiliates`\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-6b3a1a6aac6ec688", "name": "Dangling fetch: POST /api/admin/affiliates (app/(dashboard)/admin/affiliates/page.tsx:40)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/affiliates (app/(dashboard)/admin/affiliates/page.tsx:40)"}, "fullDescription": {"text": "`app/(dashboard)/admin/affiliates/page.tsx:40` calls `POST /api/admin/affiliates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/affiliates`\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-090fbf320cf2a6fd", "name": "Dangling fetch: POST /api/admin/affiliates (app/(dashboard)/admin/affiliates/page.tsx:50)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/affiliates (app/(dashboard)/admin/affiliates/page.tsx:50)"}, "fullDescription": {"text": "`app/(dashboard)/admin/affiliates/page.tsx:50` calls `POST /api/admin/affiliates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/affiliates`\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-cd8e035a8a2d5ca9", "name": "Dangling fetch: GET /api/admin/revenue (app/(dashboard)/admin/revenue/page.tsx:37)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/revenue (app/(dashboard)/admin/revenue/page.tsx:37)"}, "fullDescription": {"text": "`app/(dashboard)/admin/revenue/page.tsx:37` calls `GET /api/admin/revenue` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/revenue`\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-a2b3f03e301ed27f", "name": "Dangling fetch: POST /api/fix-photo (app/(dashboard)/fix/page.tsx:52)", "shortDescription": {"text": "Dangling fetch: POST /api/fix-photo (app/(dashboard)/fix/page.tsx:52)"}, "fullDescription": {"text": "`app/(dashboard)/fix/page.tsx:52` calls `POST /api/fix-photo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/fix-photo`\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-5ec14b210c03f90c", "name": "Dangling fetch: POST /api/upload-photo (app/(dashboard)/fix/page.tsx:83)", "shortDescription": {"text": "Dangling fetch: POST /api/upload-photo (app/(dashboard)/fix/page.tsx:83)"}, "fullDescription": {"text": "`app/(dashboard)/fix/page.tsx:83` calls `POST /api/upload-photo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/upload-photo`\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-a9d02dbfe54997a7", "name": "Dangling fetch: POST /api/upload-logo (app/(dashboard)/fix/page.tsx:93)", "shortDescription": {"text": "Dangling fetch: POST /api/upload-logo (app/(dashboard)/fix/page.tsx:93)"}, "fullDescription": {"text": "`app/(dashboard)/fix/page.tsx:93` calls `POST /api/upload-logo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/upload-logo`\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-d1f468c1236a27b9", "name": "Dangling fetch: POST /api/extract (app/(dashboard)/deck-builder/page.tsx:112)", "shortDescription": {"text": "Dangling fetch: POST /api/extract (app/(dashboard)/deck-builder/page.tsx:112)"}, "fullDescription": {"text": "`app/(dashboard)/deck-builder/page.tsx:112` calls `POST /api/extract` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract`\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-71935afbe6f7ac6d", "name": "Dangling fetch: POST /api/extract-text (app/(dashboard)/deck-builder/page.tsx:127)", "shortDescription": {"text": "Dangling fetch: POST /api/extract-text (app/(dashboard)/deck-builder/page.tsx:127)"}, "fullDescription": {"text": "`app/(dashboard)/deck-builder/page.tsx:127` calls `POST /api/extract-text` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract-text`\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-94dce26e0316ae88", "name": "Dangling fetch: POST /api/extract-url (app/(dashboard)/deck-builder/page.tsx:146)", "shortDescription": {"text": "Dangling fetch: POST /api/extract-url (app/(dashboard)/deck-builder/page.tsx:146)"}, "fullDescription": {"text": "`app/(dashboard)/deck-builder/page.tsx:146` calls `POST /api/extract-url` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract-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-5da0698e04fbbea5", "name": "Dangling fetch: POST /api/ai-research (app/(dashboard)/deck-builder/page.tsx:165)", "shortDescription": {"text": "Dangling fetch: POST /api/ai-research (app/(dashboard)/deck-builder/page.tsx:165)"}, "fullDescription": {"text": "`app/(dashboard)/deck-builder/page.tsx:165` calls `POST /api/ai-research` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ai-research`\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-27355119560e67e9", "name": "Dangling fetch: POST /api/deck-builder (app/(dashboard)/deck-builder/page.tsx:204)", "shortDescription": {"text": "Dangling fetch: POST /api/deck-builder (app/(dashboard)/deck-builder/page.tsx:204)"}, "fullDescription": {"text": "`app/(dashboard)/deck-builder/page.tsx:204` calls `POST /api/deck-builder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/deck-builder`\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-dded8f59f78712c1", "name": "Dangling fetch: POST /api/deck-builder (app/(dashboard)/deck-builder/page.tsx:227)", "shortDescription": {"text": "Dangling fetch: POST /api/deck-builder (app/(dashboard)/deck-builder/page.tsx:227)"}, "fullDescription": {"text": "`app/(dashboard)/deck-builder/page.tsx:227` calls `POST /api/deck-builder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/deck-builder`\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-a6e32a8b819c2cd4", "name": "Dangling fetch: POST /api/deck-builder (app/(dashboard)/deck-builder/page.tsx:274)", "shortDescription": {"text": "Dangling fetch: POST /api/deck-builder (app/(dashboard)/deck-builder/page.tsx:274)"}, "fullDescription": {"text": "`app/(dashboard)/deck-builder/page.tsx:274` calls `POST /api/deck-builder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/deck-builder`\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-4d39836fcaa04e8a", "name": "Dangling fetch: GET /api/videos/draft?videoId=${videoId} (app/(dashboard)/create/brand/page.tsx:61)", "shortDescription": {"text": "Dangling fetch: GET /api/videos/draft?videoId=${videoId} (app/(dashboard)/create/brand/page.tsx:61)"}, "fullDescription": {"text": "`app/(dashboard)/create/brand/page.tsx:61` calls `GET /api/videos/draft?videoId=${videoId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/videos/draft`\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-988e76869e766d3a", "name": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/brand/page.tsx:213)", "shortDescription": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/brand/page.tsx:213)"}, "fullDescription": {"text": "`app/(dashboard)/create/brand/page.tsx:213` calls `PATCH /api/videos/draft` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/videos/draft`\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-f367629062827f46", "name": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/brand/page.tsx:245)", "shortDescription": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/brand/page.tsx:245)"}, "fullDescription": {"text": "`app/(dashboard)/create/brand/page.tsx:245` calls `PATCH /api/videos/draft` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/videos/draft`\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-a58ea1cbb219e0bf", "name": "Dangling fetch: GET /api/clients?search=${encodeURIComponent(q)}&sort=last_activity_at&order=desc (app/(dashboard)/creat", "shortDescription": {"text": "Dangling fetch: GET /api/clients?search=${encodeURIComponent(q)}&sort=last_activity_at&order=desc (app/(dashboard)/create/client/page.tsx:43)"}, "fullDescription": {"text": "`app/(dashboard)/create/client/page.tsx:43` calls `GET /api/clients?search=${encodeURIComponent(q)}&sort=last_activity_at&order=desc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clients`\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-6f460265fea8f278", "name": "Dangling fetch: POST /api/clients (app/(dashboard)/create/client/page.tsx:64)", "shortDescription": {"text": "Dangling fetch: POST /api/clients (app/(dashboard)/create/client/page.tsx:64)"}, "fullDescription": {"text": "`app/(dashboard)/create/client/page.tsx:64` calls `POST /api/clients` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clients`\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-24603ef929e502f6", "name": "Dangling fetch: GET /api/videos/draft?videoId=${videoId} (app/(dashboard)/create/voice/page.tsx:70)", "shortDescription": {"text": "Dangling fetch: GET /api/videos/draft?videoId=${videoId} (app/(dashboard)/create/voice/page.tsx:70)"}, "fullDescription": {"text": "`app/(dashboard)/create/voice/page.tsx:70` calls `GET /api/videos/draft?videoId=${videoId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/videos/draft`\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-3fd4698b3d52a0b3", "name": "Dangling fetch: GET /api/credits/balance (app/(dashboard)/create/voice/page.tsx:111)", "shortDescription": {"text": "Dangling fetch: GET /api/credits/balance (app/(dashboard)/create/voice/page.tsx:111)"}, "fullDescription": {"text": "`app/(dashboard)/create/voice/page.tsx:111` calls `GET /api/credits/balance` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/credits/balance`\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-1c44f8d79705b622", "name": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/voice/page.tsx:142)", "shortDescription": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/voice/page.tsx:142)"}, "fullDescription": {"text": "`app/(dashboard)/create/voice/page.tsx:142` calls `PATCH /api/videos/draft` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/videos/draft`\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-fe241bc28802df76", "name": "Dangling fetch: GET /api/videos/draft?videoId=${videoId} (app/(dashboard)/create/script/page.tsx:89)", "shortDescription": {"text": "Dangling fetch: GET /api/videos/draft?videoId=${videoId} (app/(dashboard)/create/script/page.tsx:89)"}, "fullDescription": {"text": "`app/(dashboard)/create/script/page.tsx:89` calls `GET /api/videos/draft?videoId=${videoId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/videos/draft`\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-724e3bd6427d2993", "name": "Dangling fetch: POST /api/generate-script (app/(dashboard)/create/script/page.tsx:153)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-script (app/(dashboard)/create/script/page.tsx:153)"}, "fullDescription": {"text": "`app/(dashboard)/create/script/page.tsx:153` calls `POST /api/generate-script` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-script`\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-6d4073bcedd19ef3", "name": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/script/page.tsx:189)", "shortDescription": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/script/page.tsx:189)"}, "fullDescription": {"text": "`app/(dashboard)/create/script/page.tsx:189` calls `PATCH /api/videos/draft` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/videos/draft`\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-efa8c4f4774b98a8", "name": "Dangling fetch: POST /api/script-chat (app/(dashboard)/create/script/page.tsx:248)", "shortDescription": {"text": "Dangling fetch: POST /api/script-chat (app/(dashboard)/create/script/page.tsx:248)"}, "fullDescription": {"text": "`app/(dashboard)/create/script/page.tsx:248` calls `POST /api/script-chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/script-chat`\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-aaf2b64b045fa790", "name": "Dangling fetch: POST /api/style-previews (app/(dashboard)/create/script/page.tsx:325)", "shortDescription": {"text": "Dangling fetch: POST /api/style-previews (app/(dashboard)/create/script/page.tsx:325)"}, "fullDescription": {"text": "`app/(dashboard)/create/script/page.tsx:325` calls `POST /api/style-previews` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/style-previews`\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-5d3d901938f0afc7", "name": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/script/page.tsx:361)", "shortDescription": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/script/page.tsx:361)"}, "fullDescription": {"text": "`app/(dashboard)/create/script/page.tsx:361` calls `PATCH /api/videos/draft` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/videos/draft`\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-2fae30aa33ede3a1", "name": "Dangling fetch: POST /api/generate-video (app/(dashboard)/create/script/page.tsx:377)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-video (app/(dashboard)/create/script/page.tsx:377)"}, "fullDescription": {"text": "`app/(dashboard)/create/script/page.tsx:377` calls `POST /api/generate-video` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-video`\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-9729b6f1f0099372", "name": "Dangling fetch: POST /api/quick-preview (app/(dashboard)/create/script/page.tsx:429)", "shortDescription": {"text": "Dangling fetch: POST /api/quick-preview (app/(dashboard)/create/script/page.tsx:429)"}, "fullDescription": {"text": "`app/(dashboard)/create/script/page.tsx:429` calls `POST /api/quick-preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/quick-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-124713e51f15aa8f", "name": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/script/page.tsx:457)", "shortDescription": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/script/page.tsx:457)"}, "fullDescription": {"text": "`app/(dashboard)/create/script/page.tsx:457` calls `PATCH /api/videos/draft` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/videos/draft`\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-4935f6e4b90f2e8a", "name": "Dangling fetch: GET /api/videos/draft?videoId=${existingDraftId} (app/(dashboard)/create/_components/Step1Content.tsx:44", "shortDescription": {"text": "Dangling fetch: GET /api/videos/draft?videoId=${existingDraftId} (app/(dashboard)/create/_components/Step1Content.tsx:44)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/Step1Content.tsx:44` calls `GET /api/videos/draft?videoId=${existingDraftId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/videos/draft`\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-8049f33d39ff4abd", "name": "Dangling fetch: GET /api/clients/${clientId} (app/(dashboard)/create/_components/Step1Content.tsx:66)", "shortDescription": {"text": "Dangling fetch: GET /api/clients/${clientId} (app/(dashboard)/create/_components/Step1Content.tsx:66)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/Step1Content.tsx:66` calls `GET /api/clients/${clientId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clients/<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-8a8a91cc10d26190", "name": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/_components/Step1Content.tsx:116)", "shortDescription": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/_components/Step1Content.tsx:116)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/Step1Content.tsx:116` calls `PATCH /api/videos/draft` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/videos/draft`\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-493236c0d7e36f4f", "name": "Dangling fetch: POST /api/videos/draft (app/(dashboard)/create/_components/Step1Content.tsx:141)", "shortDescription": {"text": "Dangling fetch: POST /api/videos/draft (app/(dashboard)/create/_components/Step1Content.tsx:141)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/Step1Content.tsx:141` calls `POST /api/videos/draft` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/videos/draft`\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-3cfefae5ffed235d", "name": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/_components/Step1Content.tsx:170)", "shortDescription": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/_components/Step1Content.tsx:170)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/Step1Content.tsx:170` calls `PATCH /api/videos/draft` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/videos/draft`\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-9b4bd6813926349c", "name": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/_components/Step1Content.tsx:186)", "shortDescription": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/_components/Step1Content.tsx:186)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/Step1Content.tsx:186` calls `PATCH /api/videos/draft` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/videos/draft`\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-57079f564dd5b61f", "name": "Dangling fetch: POST /api/style-preview-from-ref (app/(dashboard)/create/_components/Step1Content.tsx:244)", "shortDescription": {"text": "Dangling fetch: POST /api/style-preview-from-ref (app/(dashboard)/create/_components/Step1Content.tsx:244)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/Step1Content.tsx:244` calls `POST /api/style-preview-from-ref` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/style-preview-from-ref`\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-e59d0437df5822d2", "name": "Dangling fetch: POST /api/extract-url (app/(dashboard)/create/_components/Step1Content.tsx:306)", "shortDescription": {"text": "Dangling fetch: POST /api/extract-url (app/(dashboard)/create/_components/Step1Content.tsx:306)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/Step1Content.tsx:306` calls `POST /api/extract-url` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract-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-3f90ecddf498cd6f", "name": "Dangling fetch: POST /api/extract (app/(dashboard)/create/_components/Step1Content.tsx:319)", "shortDescription": {"text": "Dangling fetch: POST /api/extract (app/(dashboard)/create/_components/Step1Content.tsx:319)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/Step1Content.tsx:319` calls `POST /api/extract` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract`\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-228ce1ff924ef821", "name": "Dangling fetch: POST /api/extract-doc (app/(dashboard)/create/_components/Step1Content.tsx:334)", "shortDescription": {"text": "Dangling fetch: POST /api/extract-doc (app/(dashboard)/create/_components/Step1Content.tsx:334)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/Step1Content.tsx:334` calls `POST /api/extract-doc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract-doc`\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-f301cbfa93a32e3f", "name": "Dangling fetch: POST /api/extract (app/(dashboard)/create/_components/Step1Content.tsx:340)", "shortDescription": {"text": "Dangling fetch: POST /api/extract (app/(dashboard)/create/_components/Step1Content.tsx:340)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/Step1Content.tsx:340` calls `POST /api/extract` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract`\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-e3fc1a45c94b004f", "name": "Dangling fetch: POST /api/extract-url (app/(dashboard)/create/_components/Step1Content.tsx:406)", "shortDescription": {"text": "Dangling fetch: POST /api/extract-url (app/(dashboard)/create/_components/Step1Content.tsx:406)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/Step1Content.tsx:406` calls `POST /api/extract-url` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract-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-b23b59e321d3c04c", "name": "Dangling fetch: POST /api/extract (app/(dashboard)/create/_components/Step1Content.tsx:421)", "shortDescription": {"text": "Dangling fetch: POST /api/extract (app/(dashboard)/create/_components/Step1Content.tsx:421)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/Step1Content.tsx:421` calls `POST /api/extract` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract`\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-a3244d2282ea4c1c", "name": "Dangling fetch: POST /api/extract-doc (app/(dashboard)/create/_components/Step1Content.tsx:436)", "shortDescription": {"text": "Dangling fetch: POST /api/extract-doc (app/(dashboard)/create/_components/Step1Content.tsx:436)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/Step1Content.tsx:436` calls `POST /api/extract-doc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract-doc`\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-ecb9d2188953aab7", "name": "Dangling fetch: POST /api/extract (app/(dashboard)/create/_components/Step1Content.tsx:442)", "shortDescription": {"text": "Dangling fetch: POST /api/extract (app/(dashboard)/create/_components/Step1Content.tsx:442)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/Step1Content.tsx:442` calls `POST /api/extract` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract`\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-75f0ea71aba310bb", "name": "Dangling fetch: GET /api/credits/balance (app/(dashboard)/create/_components/CreditCost.tsx:38)", "shortDescription": {"text": "Dangling fetch: GET /api/credits/balance (app/(dashboard)/create/_components/CreditCost.tsx:38)"}, "fullDescription": {"text": "`app/(dashboard)/create/_components/CreditCost.tsx:38` calls `GET /api/credits/balance` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/credits/balance`\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-e14ae3a1bb915b73", "name": "Dangling fetch: POST /api/social-campaign (app/(dashboard)/social-campaigns/page.tsx:81)", "shortDescription": {"text": "Dangling fetch: POST /api/social-campaign (app/(dashboard)/social-campaigns/page.tsx:81)"}, "fullDescription": {"text": "`app/(dashboard)/social-campaigns/page.tsx:81` calls `POST /api/social-campaign` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-campaign`\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-4f5c3723c24e505e", "name": "Dangling fetch: POST /api/social-campaign (app/(dashboard)/social-campaigns/page.tsx:116)", "shortDescription": {"text": "Dangling fetch: POST /api/social-campaign (app/(dashboard)/social-campaigns/page.tsx:116)"}, "fullDescription": {"text": "`app/(dashboard)/social-campaigns/page.tsx:116` calls `POST /api/social-campaign` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-campaign`\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-5327db1d26bac2c6", "name": "Dangling fetch: POST /api/chat (app/(dashboard)/videos/[id]/page.tsx:436)", "shortDescription": {"text": "Dangling fetch: POST /api/chat (app/(dashboard)/videos/[id]/page.tsx:436)"}, "fullDescription": {"text": "`app/(dashboard)/videos/[id]/page.tsx:436` calls `POST /api/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/chat`\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-6369341e3f58bd64", "name": "Dangling fetch: POST /api/generate-video (app/(dashboard)/videos/[id]/page.tsx:531)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-video (app/(dashboard)/videos/[id]/page.tsx:531)"}, "fullDescription": {"text": "`app/(dashboard)/videos/[id]/page.tsx:531` calls `POST /api/generate-video` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-video`\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-be2f87030e1e1b68", "name": "Dangling fetch: GET /api/video-analytics?videoId=${params.id} (app/(dashboard)/videos/[id]/page.tsx:606)", "shortDescription": {"text": "Dangling fetch: GET /api/video-analytics?videoId=${params.id} (app/(dashboard)/videos/[id]/page.tsx:606)"}, "fullDescription": {"text": "`app/(dashboard)/videos/[id]/page.tsx:606` calls `GET /api/video-analytics?videoId=${params.id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/video-analytics`\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-38d15e1905d76210", "name": "Dangling fetch: POST /api/follow-up/generate (app/(dashboard)/videos/[id]/page.tsx:626)", "shortDescription": {"text": "Dangling fetch: POST /api/follow-up/generate (app/(dashboard)/videos/[id]/page.tsx:626)"}, "fullDescription": {"text": "`app/(dashboard)/videos/[id]/page.tsx:626` calls `POST /api/follow-up/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/follow-up/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-e0ec314f96ebc3e0", "name": "Dangling fetch: POST /api/follow-up/send (app/(dashboard)/videos/[id]/page.tsx:683)", "shortDescription": {"text": "Dangling fetch: POST /api/follow-up/send (app/(dashboard)/videos/[id]/page.tsx:683)"}, "fullDescription": {"text": "`app/(dashboard)/videos/[id]/page.tsx:683` calls `POST /api/follow-up/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/follow-up/send`\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-bce1a6d1abea7578", "name": "Dangling fetch: POST /api/download-pdf (app/(dashboard)/videos/[id]/page.tsx:847)", "shortDescription": {"text": "Dangling fetch: POST /api/download-pdf (app/(dashboard)/videos/[id]/page.tsx:847)"}, "fullDescription": {"text": "`app/(dashboard)/videos/[id]/page.tsx:847` calls `POST /api/download-pdf` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/download-pdf`\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-78deff8fdaf0024d", "name": "Dangling fetch: POST /api/download-pptx (app/(dashboard)/videos/[id]/page.tsx:869)", "shortDescription": {"text": "Dangling fetch: POST /api/download-pptx (app/(dashboard)/videos/[id]/page.tsx:869)"}, "fullDescription": {"text": "`app/(dashboard)/videos/[id]/page.tsx:869` calls `POST /api/download-pptx` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/download-pptx`\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-7f6a4e81430f351b", "name": "Dangling fetch: POST /api/translate-presentation (app/(dashboard)/videos/[id]/page.tsx:891)", "shortDescription": {"text": "Dangling fetch: POST /api/translate-presentation (app/(dashboard)/videos/[id]/page.tsx:891)"}, "fullDescription": {"text": "`app/(dashboard)/videos/[id]/page.tsx:891` calls `POST /api/translate-presentation` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/translate-presentation`\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-cefe29ed3f9f0537", "name": "Dangling fetch: POST /api/generate-social-post (app/(dashboard)/videos/[id]/page.tsx:1478)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-social-post (app/(dashboard)/videos/[id]/page.tsx:1478)"}, "fullDescription": {"text": "`app/(dashboard)/videos/[id]/page.tsx:1478` calls `POST /api/generate-social-post` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-social-post`\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-7422a17a8947b794", "name": "Dangling fetch: POST /api/re-render (app/(dashboard)/videos/[id]/page.tsx:1605)", "shortDescription": {"text": "Dangling fetch: POST /api/re-render (app/(dashboard)/videos/[id]/page.tsx:1605)"}, "fullDescription": {"text": "`app/(dashboard)/videos/[id]/page.tsx:1605` calls `POST /api/re-render` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/re-render`\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-fee0bb1ae599e150", "name": "Dangling fetch: POST /api/edit-slide (app/(dashboard)/videos/[id]/page.tsx:1657)", "shortDescription": {"text": "Dangling fetch: POST /api/edit-slide (app/(dashboard)/videos/[id]/page.tsx:1657)"}, "fullDescription": {"text": "`app/(dashboard)/videos/[id]/page.tsx:1657` calls `POST /api/edit-slide` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/edit-slide`\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-88b016ca9b342d91", "name": "Dangling fetch: GET /api/clients?${params} (app/(dashboard)/clients/page.tsx:57)", "shortDescription": {"text": "Dangling fetch: GET /api/clients?${params} (app/(dashboard)/clients/page.tsx:57)"}, "fullDescription": {"text": "`app/(dashboard)/clients/page.tsx:57` calls `GET /api/clients?${params}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clients`\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-ebd6e9925657bd0d", "name": "Dangling fetch: POST /api/clients (app/(dashboard)/clients/page.tsx:81)", "shortDescription": {"text": "Dangling fetch: POST /api/clients (app/(dashboard)/clients/page.tsx:81)"}, "fullDescription": {"text": "`app/(dashboard)/clients/page.tsx:81` calls `POST /api/clients` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clients`\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-1626c45a578c0205", "name": "Dangling fetch: POST /api/clients/import (app/(dashboard)/clients/page.tsx:116)", "shortDescription": {"text": "Dangling fetch: POST /api/clients/import (app/(dashboard)/clients/page.tsx:116)"}, "fullDescription": {"text": "`app/(dashboard)/clients/page.tsx:116` calls `POST /api/clients/import` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clients/import`\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-4ad2706bb130c60a", "name": "Dangling fetch: GET /api/clients/export (app/(dashboard)/clients/page.tsx:136)", "shortDescription": {"text": "Dangling fetch: GET /api/clients/export (app/(dashboard)/clients/page.tsx:136)"}, "fullDescription": {"text": "`app/(dashboard)/clients/page.tsx:136` calls `GET /api/clients/export` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clients/export`\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-c165163dbe6f7b77", "name": "Dangling fetch: GET /api/clients/${clientId} (app/(dashboard)/clients/[id]/page.tsx:123)", "shortDescription": {"text": "Dangling fetch: GET /api/clients/${clientId} (app/(dashboard)/clients/[id]/page.tsx:123)"}, "fullDescription": {"text": "`app/(dashboard)/clients/[id]/page.tsx:123` calls `GET /api/clients/${clientId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clients/<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-64a8479effcf1919", "name": "Dangling fetch: GET /api/clients/${clientId}/activities (app/(dashboard)/clients/[id]/page.tsx:144)", "shortDescription": {"text": "Dangling fetch: GET /api/clients/${clientId}/activities (app/(dashboard)/clients/[id]/page.tsx:144)"}, "fullDescription": {"text": "`app/(dashboard)/clients/[id]/page.tsx:144` calls `GET /api/clients/${clientId}/activities` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clients/<p>/activities`\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-9831e0b6a39ba8a9", "name": "Dangling fetch: GET /api/clients/${clientId}/videos (app/(dashboard)/clients/[id]/page.tsx:149)", "shortDescription": {"text": "Dangling fetch: GET /api/clients/${clientId}/videos (app/(dashboard)/clients/[id]/page.tsx:149)"}, "fullDescription": {"text": "`app/(dashboard)/clients/[id]/page.tsx:149` calls `GET /api/clients/${clientId}/videos` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clients/<p>/videos`\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-db401149fb16b589", "name": "Dangling fetch: GET /api/sent-emails?email=${encodeURIComponent(client.email)} (app/(dashboard)/clients/[id]/page.tsx:15", "shortDescription": {"text": "Dangling fetch: GET /api/sent-emails?email=${encodeURIComponent(client.email)} (app/(dashboard)/clients/[id]/page.tsx:155)"}, "fullDescription": {"text": "`app/(dashboard)/clients/[id]/page.tsx:155` calls `GET /api/sent-emails?email=${encodeURIComponent(client.email)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sent-emails`\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-877b0c8c16197bef", "name": "Dangling fetch: GET /api/quotes?clientEmail=${encodeURIComponent(client.email)} (app/(dashboard)/clients/[id]/page.tsx:1", "shortDescription": {"text": "Dangling fetch: GET /api/quotes?clientEmail=${encodeURIComponent(client.email)} (app/(dashboard)/clients/[id]/page.tsx:160)"}, "fullDescription": {"text": "`app/(dashboard)/clients/[id]/page.tsx:160` calls `GET /api/quotes?clientEmail=${encodeURIComponent(client.email)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/quotes`\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-240068639b9d721e", "name": "Dangling fetch: PATCH /api/clients/${clientId} (app/(dashboard)/clients/[id]/page.tsx:183)", "shortDescription": {"text": "Dangling fetch: PATCH /api/clients/${clientId} (app/(dashboard)/clients/[id]/page.tsx:183)"}, "fullDescription": {"text": "`app/(dashboard)/clients/[id]/page.tsx:183` calls `PATCH /api/clients/${clientId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clients/<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-6693aa60013a6c4a", "name": "Dangling fetch: DELETE /api/clients/${clientId} (app/(dashboard)/clients/[id]/page.tsx:213)", "shortDescription": {"text": "Dangling fetch: DELETE /api/clients/${clientId} (app/(dashboard)/clients/[id]/page.tsx:213)"}, "fullDescription": {"text": "`app/(dashboard)/clients/[id]/page.tsx:213` calls `DELETE /api/clients/${clientId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clients/<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-22803464dfcf7105", "name": "Dangling fetch: POST /api/clients/${clientId}/activities (app/(dashboard)/clients/[id]/page.tsx:228)", "shortDescription": {"text": "Dangling fetch: POST /api/clients/${clientId}/activities (app/(dashboard)/clients/[id]/page.tsx:228)"}, "fullDescription": {"text": "`app/(dashboard)/clients/[id]/page.tsx:228` calls `POST /api/clients/${clientId}/activities` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clients/<p>/activities`\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-b5636ac0a825a479", "name": "Dangling fetch: PATCH /api/clients/${clientId} (app/(dashboard)/clients/[id]/page.tsx:246)", "shortDescription": {"text": "Dangling fetch: PATCH /api/clients/${clientId} (app/(dashboard)/clients/[id]/page.tsx:246)"}, "fullDescription": {"text": "`app/(dashboard)/clients/[id]/page.tsx:246` calls `PATCH /api/clients/${clientId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clients/<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-b1323156cda98280", "name": "Dangling fetch: PATCH /api/clients/${clientId} (app/(dashboard)/clients/[id]/page.tsx:259)", "shortDescription": {"text": "Dangling fetch: PATCH /api/clients/${clientId} (app/(dashboard)/clients/[id]/page.tsx:259)"}, "fullDescription": {"text": "`app/(dashboard)/clients/[id]/page.tsx:259` calls `PATCH /api/clients/${clientId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/clients/<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-98e03b66d5d4d28c", "name": "Dangling fetch: POST /api/generate-flyer (app/(dashboard)/flyers/page.tsx:164)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-flyer (app/(dashboard)/flyers/page.tsx:164)"}, "fullDescription": {"text": "`app/(dashboard)/flyers/page.tsx:164` calls `POST /api/generate-flyer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-flyer`\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-a80a5002dc9dd094", "name": "Dangling fetch: POST /api/course-builder (app/(dashboard)/course-builder/page.tsx:50)", "shortDescription": {"text": "Dangling fetch: POST /api/course-builder (app/(dashboard)/course-builder/page.tsx:50)"}, "fullDescription": {"text": "`app/(dashboard)/course-builder/page.tsx:50` calls `POST /api/course-builder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/course-builder`\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-07433d3061cd0730", "name": "Dangling fetch: POST /api/course-builder (app/(dashboard)/course-builder/page.tsx:100)", "shortDescription": {"text": "Dangling fetch: POST /api/course-builder (app/(dashboard)/course-builder/page.tsx:100)"}, "fullDescription": {"text": "`app/(dashboard)/course-builder/page.tsx:100` calls `POST /api/course-builder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/course-builder`\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-e8ccd115d272149e", "name": "Dangling fetch: POST /api/template-demo/extract (app/(dashboard)/template-demo/page.tsx:39)", "shortDescription": {"text": "Dangling fetch: POST /api/template-demo/extract (app/(dashboard)/template-demo/page.tsx:39)"}, "fullDescription": {"text": "`app/(dashboard)/template-demo/page.tsx:39` calls `POST /api/template-demo/extract` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/template-demo/extract`\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-5f2ddda5de09c37f", "name": "Dangling fetch: POST /api/template-demo/generate (app/(dashboard)/template-demo/page.tsx:85)", "shortDescription": {"text": "Dangling fetch: POST /api/template-demo/generate (app/(dashboard)/template-demo/page.tsx:85)"}, "fullDescription": {"text": "`app/(dashboard)/template-demo/page.tsx:85` calls `POST /api/template-demo/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/template-demo/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-8ece1614b16ea380", "name": "Dangling fetch: POST /api/upload-asset (app/(dashboard)/quick/page.tsx:87)", "shortDescription": {"text": "Dangling fetch: POST /api/upload-asset (app/(dashboard)/quick/page.tsx:87)"}, "fullDescription": {"text": "`app/(dashboard)/quick/page.tsx:87` calls `POST /api/upload-asset` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/upload-asset`\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-eba46fc53b8f7524", "name": "Dangling fetch: POST /api/extract (app/(dashboard)/quick/page.tsx:118)", "shortDescription": {"text": "Dangling fetch: POST /api/extract (app/(dashboard)/quick/page.tsx:118)"}, "fullDescription": {"text": "`app/(dashboard)/quick/page.tsx:118` calls `POST /api/extract` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract`\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-0e93660b919f154b", "name": "Dangling fetch: POST /api/extract-url (app/(dashboard)/quick/page.tsx:128)", "shortDescription": {"text": "Dangling fetch: POST /api/extract-url (app/(dashboard)/quick/page.tsx:128)"}, "fullDescription": {"text": "`app/(dashboard)/quick/page.tsx:128` calls `POST /api/extract-url` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract-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-21eaf5098c828249", "name": "Dangling fetch: POST /api/extract-text (app/(dashboard)/quick/page.tsx:141)", "shortDescription": {"text": "Dangling fetch: POST /api/extract-text (app/(dashboard)/quick/page.tsx:141)"}, "fullDescription": {"text": "`app/(dashboard)/quick/page.tsx:141` calls `POST /api/extract-text` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract-text`\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-99ff0cc10d380537", "name": "Dangling fetch: POST /api/auto-select (app/(dashboard)/quick/page.tsx:160)", "shortDescription": {"text": "Dangling fetch: POST /api/auto-select (app/(dashboard)/quick/page.tsx:160)"}, "fullDescription": {"text": "`app/(dashboard)/quick/page.tsx:160` calls `POST /api/auto-select` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auto-select`\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-a83e11fcac37c5cf", "name": "Dangling fetch: POST /api/videos (app/(dashboard)/quick/page.tsx:171)", "shortDescription": {"text": "Dangling fetch: POST /api/videos (app/(dashboard)/quick/page.tsx:171)"}, "fullDescription": {"text": "`app/(dashboard)/quick/page.tsx:171` calls `POST /api/videos` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/videos`\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-736fbb0bc17cd2e1", "name": "Dangling fetch: POST /api/brand-kit (app/(dashboard)/brand-kit/page.tsx:155)", "shortDescription": {"text": "Dangling fetch: POST /api/brand-kit (app/(dashboard)/brand-kit/page.tsx:155)"}, "fullDescription": {"text": "`app/(dashboard)/brand-kit/page.tsx:155` calls `POST /api/brand-kit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/brand-kit`\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-200315f4f6c8f124", "name": "Dangling fetch: POST /api/brand-kit (app/(dashboard)/brand-kit/page.tsx:210)", "shortDescription": {"text": "Dangling fetch: POST /api/brand-kit (app/(dashboard)/brand-kit/page.tsx:210)"}, "fullDescription": {"text": "`app/(dashboard)/brand-kit/page.tsx:210` calls `POST /api/brand-kit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/brand-kit`\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-f93cbcf1bdbadaaa", "name": "Dangling fetch: POST /api/brand-kit (app/(dashboard)/brand-kit/page.tsx:231)", "shortDescription": {"text": "Dangling fetch: POST /api/brand-kit (app/(dashboard)/brand-kit/page.tsx:231)"}, "fullDescription": {"text": "`app/(dashboard)/brand-kit/page.tsx:231` calls `POST /api/brand-kit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/brand-kit`\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-d9a193e51d3e2890", "name": "Dangling fetch: POST /api/brand-kit (app/(dashboard)/brand-kit/page.tsx:254)", "shortDescription": {"text": "Dangling fetch: POST /api/brand-kit (app/(dashboard)/brand-kit/page.tsx:254)"}, "fullDescription": {"text": "`app/(dashboard)/brand-kit/page.tsx:254` calls `POST /api/brand-kit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/brand-kit`\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-d79ab496172da94f", "name": "Dangling fetch: POST /api/brand-kit (app/(dashboard)/brand-kit/page.tsx:297)", "shortDescription": {"text": "Dangling fetch: POST /api/brand-kit (app/(dashboard)/brand-kit/page.tsx:297)"}, "fullDescription": {"text": "`app/(dashboard)/brand-kit/page.tsx:297` calls `POST /api/brand-kit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/brand-kit`\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-3838f75ee9ac505b", "name": "Dangling fetch: POST /api/generate-headshot (app/(dashboard)/headshot/page.tsx:76)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-headshot (app/(dashboard)/headshot/page.tsx:76)"}, "fullDescription": {"text": "`app/(dashboard)/headshot/page.tsx:76` calls `POST /api/generate-headshot` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-headshot`\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-ba9f2a293a140287", "name": "Dangling fetch: GET /api/social-accounts (app/(dashboard)/social-media/page.tsx:77)", "shortDescription": {"text": "Dangling fetch: GET /api/social-accounts (app/(dashboard)/social-media/page.tsx:77)"}, "fullDescription": {"text": "`app/(dashboard)/social-media/page.tsx:77` calls `GET /api/social-accounts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-accounts`\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-ce54e22d832f058d", "name": "Dangling fetch: POST /api/social-media/generate (app/(dashboard)/social-media/page.tsx:153)", "shortDescription": {"text": "Dangling fetch: POST /api/social-media/generate (app/(dashboard)/social-media/page.tsx:153)"}, "fullDescription": {"text": "`app/(dashboard)/social-media/page.tsx:153` calls `POST /api/social-media/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-media/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-56a0e67f12c480c1", "name": "Dangling fetch: POST /api/social-media/post (app/(dashboard)/social-media/page.tsx:177)", "shortDescription": {"text": "Dangling fetch: POST /api/social-media/post (app/(dashboard)/social-media/page.tsx:177)"}, "fullDescription": {"text": "`app/(dashboard)/social-media/page.tsx:177` calls `POST /api/social-media/post` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-media/post`\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-6714c5933ca6a3f1", "name": "Dangling fetch: POST /api/social-media/generate (app/(dashboard)/social-media/page.tsx:202)", "shortDescription": {"text": "Dangling fetch: POST /api/social-media/generate (app/(dashboard)/social-media/page.tsx:202)"}, "fullDescription": {"text": "`app/(dashboard)/social-media/page.tsx:202` calls `POST /api/social-media/generate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-media/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-72be5dcdc755b462", "name": "Dangling fetch: POST /api/social-media/post (app/(dashboard)/social-media/page.tsx:223)", "shortDescription": {"text": "Dangling fetch: POST /api/social-media/post (app/(dashboard)/social-media/page.tsx:223)"}, "fullDescription": {"text": "`app/(dashboard)/social-media/page.tsx:223` calls `POST /api/social-media/post` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-media/post`\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-847611532209b7e7", "name": "Dangling fetch: POST /api/download-pdf (app/(dashboard)/infographics/[id]/page.tsx:77)", "shortDescription": {"text": "Dangling fetch: POST /api/download-pdf (app/(dashboard)/infographics/[id]/page.tsx:77)"}, "fullDescription": {"text": "`app/(dashboard)/infographics/[id]/page.tsx:77` calls `POST /api/download-pdf` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/download-pdf`\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-0453c895ce607b45", "name": "Dangling fetch: POST /api/generate-video (app/(dashboard)/infographics/[id]/page.tsx:111)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-video (app/(dashboard)/infographics/[id]/page.tsx:111)"}, "fullDescription": {"text": "`app/(dashboard)/infographics/[id]/page.tsx:111` calls `POST /api/generate-video` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-video`\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-eef88d423cd1b730", "name": "Dangling fetch: POST /api/stripe/checkout (app/(dashboard)/pricing/page.tsx:29)", "shortDescription": {"text": "Dangling fetch: POST /api/stripe/checkout (app/(dashboard)/pricing/page.tsx:29)"}, "fullDescription": {"text": "`app/(dashboard)/pricing/page.tsx:29` calls `POST /api/stripe/checkout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stripe/checkout`\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-7614641fddb44732", "name": "Dangling fetch: POST /api/stripe/portal (app/(dashboard)/pricing/page.tsx:46)", "shortDescription": {"text": "Dangling fetch: POST /api/stripe/portal (app/(dashboard)/pricing/page.tsx:46)"}, "fullDescription": {"text": "`app/(dashboard)/pricing/page.tsx:46` calls `POST /api/stripe/portal` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stripe/portal`\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-dc6391079124f36d", "name": "Dangling fetch: POST /api/upload-photo (app/(onboarding)/setup/page.tsx:140)", "shortDescription": {"text": "Dangling fetch: POST /api/upload-photo (app/(onboarding)/setup/page.tsx:140)"}, "fullDescription": {"text": "`app/(onboarding)/setup/page.tsx:140` calls `POST /api/upload-photo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/upload-photo`\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-19d7f52a1131c3ef", "name": "Dangling fetch: POST /api/upload-logo (app/(onboarding)/setup/page.tsx:158)", "shortDescription": {"text": "Dangling fetch: POST /api/upload-logo (app/(onboarding)/setup/page.tsx:158)"}, "fullDescription": {"text": "`app/(onboarding)/setup/page.tsx:158` calls `POST /api/upload-logo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/upload-logo`\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-077db559ca7ccf72", "name": "Dangling fetch: POST /api/extract-logo-colors (app/(onboarding)/setup/page.tsx:164)", "shortDescription": {"text": "Dangling fetch: POST /api/extract-logo-colors (app/(onboarding)/setup/page.tsx:164)"}, "fullDescription": {"text": "`app/(onboarding)/setup/page.tsx:164` calls `POST /api/extract-logo-colors` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract-logo-colors`\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-40279d150400462b", "name": "Dangling fetch: POST /api/voice-preview (app/(onboarding)/setup/page.tsx:235)", "shortDescription": {"text": "Dangling fetch: POST /api/voice-preview (app/(onboarding)/setup/page.tsx:235)"}, "fullDescription": {"text": "`app/(onboarding)/setup/page.tsx:235` calls `POST /api/voice-preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/voice-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-f5e835bf9c6e028e", "name": "Dangling fetch: POST /api/stripe/checkout (app/(onboarding)/setup/page.tsx:803)", "shortDescription": {"text": "Dangling fetch: POST /api/stripe/checkout (app/(onboarding)/setup/page.tsx:803)"}, "fullDescription": {"text": "`app/(onboarding)/setup/page.tsx:803` calls `POST /api/stripe/checkout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stripe/checkout`\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-e9be17cc3e5d71fa", "name": "Dangling fetch: POST /api/create-setup-intent (app/(auth)/setup-payment/page.tsx:22)", "shortDescription": {"text": "Dangling fetch: POST /api/create-setup-intent (app/(auth)/setup-payment/page.tsx:22)"}, "fullDescription": {"text": "`app/(auth)/setup-payment/page.tsx:22` calls `POST /api/create-setup-intent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/create-setup-intent`\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-071c56fc3504bb65", "name": "Dangling fetch: POST /api/confirm-card (app/(auth)/setup-payment/page.tsx:56)", "shortDescription": {"text": "Dangling fetch: POST /api/confirm-card (app/(auth)/setup-payment/page.tsx:56)"}, "fullDescription": {"text": "`app/(auth)/setup-payment/page.tsx:56` calls `POST /api/confirm-card` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/confirm-card`\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-2af020ad14493af4", "name": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/send (app/_lib/email.ts:121)", "shortDescription": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/send (app/_lib/email.ts:121)"}, "fullDescription": {"text": "`app/_lib/email.ts:121` calls `POST https://gmail.googleapis.com/gmail/v1/users/me/messages/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/gmail.googleapis.com/gmail/v1/users/me/messages/send`\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-d6fa529a8397db99", "name": "Dangling fetch: POST https://graph.microsoft.com/v1.0/me/sendMail (app/_lib/email.ts:148)", "shortDescription": {"text": "Dangling fetch: POST https://graph.microsoft.com/v1.0/me/sendMail (app/_lib/email.ts:148)"}, "fullDescription": {"text": "`app/_lib/email.ts:148` calls `POST https://graph.microsoft.com/v1.0/me/sendMail` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.microsoft.com/v1.0/me/sendmail`\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-294df298ae051735", "name": "Dangling fetch: POST https://oauth2.googleapis.com/token (app/_lib/email.ts:182)", "shortDescription": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (app/_lib/email.ts:182)"}, "fullDescription": {"text": "`app/_lib/email.ts:182` calls `POST https://oauth2.googleapis.com/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth2.googleapis.com/token`\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-b7624a05a1d7821a", "name": "Dangling fetch: POST https://login.microsoftonline.com/common/oauth2/v2.0/token (app/_lib/email.ts:197)", "shortDescription": {"text": "Dangling fetch: POST https://login.microsoftonline.com/common/oauth2/v2.0/token (app/_lib/email.ts:197)"}, "fullDescription": {"text": "`app/_lib/email.ts:197` calls `POST https://login.microsoftonline.com/common/oauth2/v2.0/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/login.microsoftonline.com/common/oauth2/v2.0/token`\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-70f9c0c4a9ad4dc5", "name": "Dangling fetch: GET https://www.googleapis.com/webfonts/v1/webfonts?key=${apiKey}&sort=popularity (app/_lib/google-fonts", "shortDescription": {"text": "Dangling fetch: GET https://www.googleapis.com/webfonts/v1/webfonts?key=${apiKey}&sort=popularity (app/_lib/google-fonts.ts:17)"}, "fullDescription": {"text": "`app/_lib/google-fonts.ts:17` calls `GET https://www.googleapis.com/webfonts/v1/webfonts?key=${apiKey}&sort=popularity` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.googleapis.com/webfonts/v1/webfonts`\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-ba97e7ac4f81bf9c", "name": "Dangling fetch: POST https://api.cartesia.ai/tts/bytes (app/_lib/tts-cartesia.ts:19)", "shortDescription": {"text": "Dangling fetch: POST https://api.cartesia.ai/tts/bytes (app/_lib/tts-cartesia.ts:19)"}, "fullDescription": {"text": "`app/_lib/tts-cartesia.ts:19` calls `POST https://api.cartesia.ai/tts/bytes` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.cartesia.ai/tts/bytes`\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-e99c755902aa6e3d", "name": "Dangling fetch: POST /api/extract-logo-colors (app/_lib/logo-colors.ts:13)", "shortDescription": {"text": "Dangling fetch: POST /api/extract-logo-colors (app/_lib/logo-colors.ts:13)"}, "fullDescription": {"text": "`app/_lib/logo-colors.ts:13` calls `POST /api/extract-logo-colors` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/extract-logo-colors`\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-4e8e1d6a0655e966", "name": "Dangling fetch: POST /api/stripe/checkout (app/_components/UpgradeModal.tsx:18)", "shortDescription": {"text": "Dangling fetch: POST /api/stripe/checkout (app/_components/UpgradeModal.tsx:18)"}, "fullDescription": {"text": "`app/_components/UpgradeModal.tsx:18` calls `POST /api/stripe/checkout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stripe/checkout`\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-80c882231defe823", "name": "Dangling fetch: POST /api/help-chat (app/_components/HelpChatWidget.tsx:38)", "shortDescription": {"text": "Dangling fetch: POST /api/help-chat (app/_components/HelpChatWidget.tsx:38)"}, "fullDescription": {"text": "`app/_components/HelpChatWidget.tsx:38` calls `POST /api/help-chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/help-chat`\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-f77c3029aa2fad43", "name": "Dangling fetch: POST /api/admin/impersonate (app/_components/ImpersonationBanner.tsx:31)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/impersonate (app/_components/ImpersonationBanner.tsx:31)"}, "fullDescription": {"text": "`app/_components/ImpersonationBanner.tsx:31` calls `POST /api/admin/impersonate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/impersonate`\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-d95867fcf3a72ea0", "name": "Dangling fetch: GET /api/demo-video/${id} (app/_components/DemoForm.tsx:71)", "shortDescription": {"text": "Dangling fetch: GET /api/demo-video/${id} (app/_components/DemoForm.tsx:71)"}, "fullDescription": {"text": "`app/_components/DemoForm.tsx:71` calls `GET /api/demo-video/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/demo-video/<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-473451176b8404f7", "name": "Dangling fetch: POST /api/demo-video (app/_components/DemoForm.tsx:103)", "shortDescription": {"text": "Dangling fetch: POST /api/demo-video (app/_components/DemoForm.tsx:103)"}, "fullDescription": {"text": "`app/_components/DemoForm.tsx:103` calls `POST /api/demo-video` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/demo-video`\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-f8e98c320e52e06b", "name": "Dangling fetch: POST /api/email-connections (app/_components/SmtpSetupModal.tsx:27)", "shortDescription": {"text": "Dangling fetch: POST /api/email-connections (app/_components/SmtpSetupModal.tsx:27)"}, "fullDescription": {"text": "`app/_components/SmtpSetupModal.tsx:27` calls `POST /api/email-connections` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-connections`\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-9d770e1f8ecdf338", "name": "Dangling fetch: GET /api/templates (app/_components/BrandStylePicker.tsx:54)", "shortDescription": {"text": "Dangling fetch: GET /api/templates (app/_components/BrandStylePicker.tsx:54)"}, "fullDescription": {"text": "`app/_components/BrandStylePicker.tsx:54` calls `GET /api/templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/templates`\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-7c808080b181ef00", "name": "Dangling fetch: POST /api/templates/from-reference (app/_components/BrandStylePicker.tsx:89)", "shortDescription": {"text": "Dangling fetch: POST /api/templates/from-reference (app/_components/BrandStylePicker.tsx:89)"}, "fullDescription": {"text": "`app/_components/BrandStylePicker.tsx:89` calls `POST /api/templates/from-reference` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/templates/from-reference`\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-ed8b3eaff7fbdd19", "name": "Dangling fetch: GET /api/notifications (app/_components/NotificationBell.tsx:47)", "shortDescription": {"text": "Dangling fetch: GET /api/notifications (app/_components/NotificationBell.tsx:47)"}, "fullDescription": {"text": "`app/_components/NotificationBell.tsx:47` calls `GET /api/notifications` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/notifications`\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-930d0978ed4b211a", "name": "Dangling fetch: POST /api/notifications (app/_components/NotificationBell.tsx:72)", "shortDescription": {"text": "Dangling fetch: POST /api/notifications (app/_components/NotificationBell.tsx:72)"}, "fullDescription": {"text": "`app/_components/NotificationBell.tsx:72` calls `POST /api/notifications` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/notifications`\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-244ce3a1d1331360", "name": "Dangling fetch: POST /api/notifications (app/_components/NotificationBell.tsx:82)", "shortDescription": {"text": "Dangling fetch: POST /api/notifications (app/_components/NotificationBell.tsx:82)"}, "fullDescription": {"text": "`app/_components/NotificationBell.tsx:82` calls `POST /api/notifications` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/notifications`\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-835ab7f4cbe089fc", "name": "Dangling fetch: POST /api/notifications (app/_components/NotificationBell.tsx:93)", "shortDescription": {"text": "Dangling fetch: POST /api/notifications (app/_components/NotificationBell.tsx:93)"}, "fullDescription": {"text": "`app/_components/NotificationBell.tsx:93` calls `POST /api/notifications` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/notifications`\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-9eeeb00df61ad158", "name": "Dangling fetch: POST /api/credits/buy (app/_components/BuyCreditsModal.tsx:29)", "shortDescription": {"text": "Dangling fetch: POST /api/credits/buy (app/_components/BuyCreditsModal.tsx:29)"}, "fullDescription": {"text": "`app/_components/BuyCreditsModal.tsx:29` calls `POST /api/credits/buy` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/credits/buy`\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-2dfcf199043806f6", "name": "Dangling fetch: GET /api/social-share (app/_components/SocialShareButton.tsx:27)", "shortDescription": {"text": "Dangling fetch: GET /api/social-share (app/_components/SocialShareButton.tsx:27)"}, "fullDescription": {"text": "`app/_components/SocialShareButton.tsx:27` calls `GET /api/social-share` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-share`\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-767a0d583189d7c4", "name": "Dangling fetch: POST /api/social-share (app/_components/SocialShareButton.tsx:38)", "shortDescription": {"text": "Dangling fetch: POST /api/social-share (app/_components/SocialShareButton.tsx:38)"}, "fullDescription": {"text": "`app/_components/SocialShareButton.tsx:38` calls `POST /api/social-share` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-share`\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-e6e8c7addfbd95c1", "name": "Dangling fetch: GET /api/social-share (app/_components/SocialShareButton.tsx:53)", "shortDescription": {"text": "Dangling fetch: GET /api/social-share (app/_components/SocialShareButton.tsx:53)"}, "fullDescription": {"text": "`app/_components/SocialShareButton.tsx:53` calls `GET /api/social-share` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/social-share`\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-5f3d25c46df00714", "name": "Dangling fetch: GET /api/credits/balance (app/_components/Header.tsx:42)", "shortDescription": {"text": "Dangling fetch: GET /api/credits/balance (app/_components/Header.tsx:42)"}, "fullDescription": {"text": "`app/_components/Header.tsx:42` calls `GET /api/credits/balance` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/credits/balance`\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-0b2b2d3e833e7b97", "name": "Dangling fetch: GET /api/email-connections (app/_components/SendEmailModal.tsx:26)", "shortDescription": {"text": "Dangling fetch: GET /api/email-connections (app/_components/SendEmailModal.tsx:26)"}, "fullDescription": {"text": "`app/_components/SendEmailModal.tsx:26` calls `GET /api/email-connections` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/email-connections`\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-b161de7c49a39d59", "name": "Dangling fetch: POST /api/send-email (app/_components/SendEmailModal.tsx:43)", "shortDescription": {"text": "Dangling fetch: POST /api/send-email (app/_components/SendEmailModal.tsx:43)"}, "fullDescription": {"text": "`app/_components/SendEmailModal.tsx:43` calls `POST /api/send-email` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/send-email`\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-e9c2ea0879bd3103", "name": "Dangling fetch: POST /api/contact (app/(public)/contact/page.tsx:21)", "shortDescription": {"text": "Dangling fetch: POST /api/contact (app/(public)/contact/page.tsx:21)"}, "fullDescription": {"text": "`app/(public)/contact/page.tsx:21` calls `POST /api/contact` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/contact`\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-a9b1b381482265de", "name": "Dangling fetch: POST /api/public/unsubscribe/${contactId} (app/(public)/unsubscribe/[id]/page.tsx:15)", "shortDescription": {"text": "Dangling fetch: POST /api/public/unsubscribe/${contactId} (app/(public)/unsubscribe/[id]/page.tsx:15)"}, "fullDescription": {"text": "`app/(public)/unsubscribe/[id]/page.tsx:15` calls `POST /api/public/unsubscribe/${contactId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/public/unsubscribe/<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-390451320dfc65db", "name": "Dangling fetch: POST /api/track-view (app/(public)/watch/[id]/page.tsx:779)", "shortDescription": {"text": "Dangling fetch: POST /api/track-view (app/(public)/watch/[id]/page.tsx:779)"}, "fullDescription": {"text": "`app/(public)/watch/[id]/page.tsx:779` calls `POST /api/track-view` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/track-view`\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-5083f34ea4422c4e", "name": "Dangling fetch: GET /api/public/watch/${params.id as string} (app/(public)/watch/[id]/page.tsx:793)", "shortDescription": {"text": "Dangling fetch: GET /api/public/watch/${params.id as string} (app/(public)/watch/[id]/page.tsx:793)"}, "fullDescription": {"text": "`app/(public)/watch/[id]/page.tsx:793` calls `GET /api/public/watch/${params.id as string}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/public/watch/<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-58ca13020d35a4fe", "name": "Dangling fetch: POST /api/quotes/pay (app/(public)/watch/[id]/page.tsx:865)", "shortDescription": {"text": "Dangling fetch: POST /api/quotes/pay (app/(public)/watch/[id]/page.tsx:865)"}, "fullDescription": {"text": "`app/(public)/watch/[id]/page.tsx:865` calls `POST /api/quotes/pay` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/quotes/pay`\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-e34f11bde8032cc6", "name": "Dangling fetch: POST /api/download-pptx (app/(public)/watch/[id]/page.tsx:1261)", "shortDescription": {"text": "Dangling fetch: POST /api/download-pptx (app/(public)/watch/[id]/page.tsx:1261)"}, "fullDescription": {"text": "`app/(public)/watch/[id]/page.tsx:1261` calls `POST /api/download-pptx` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/download-pptx`\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-31b50528e082d8e9", "name": "Dangling fetch: POST /api/capture-lead (app/(public)/watch/[id]/page.tsx:1737)", "shortDescription": {"text": "Dangling fetch: POST /api/capture-lead (app/(public)/watch/[id]/page.tsx:1737)"}, "fullDescription": {"text": "`app/(public)/watch/[id]/page.tsx:1737` calls `POST /api/capture-lead` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/capture-lead`\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-e491109b59e65c77", "name": "Dangling fetch: GET /api/public/campaign-view/${contactId} (app/(public)/m/[id]/page.tsx:55)", "shortDescription": {"text": "Dangling fetch: GET /api/public/campaign-view/${contactId} (app/(public)/m/[id]/page.tsx:55)"}, "fullDescription": {"text": "`app/(public)/m/[id]/page.tsx:55` calls `GET /api/public/campaign-view/${contactId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/public/campaign-view/<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-36b47dfdae6944c6", "name": "Dangling fetch: POST /api/track-view (app/(public)/m/[id]/page.tsx:72)", "shortDescription": {"text": "Dangling fetch: POST /api/track-view (app/(public)/m/[id]/page.tsx:72)"}, "fullDescription": {"text": "`app/(public)/m/[id]/page.tsx:72` calls `POST /api/track-view` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/track-view`\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-9da330685688010a", "name": "Dangling fetch: POST /api/try-demo (app/(public)/try/[slug]/page.tsx:41)", "shortDescription": {"text": "Dangling fetch: POST /api/try-demo (app/(public)/try/[slug]/page.tsx:41)"}, "fullDescription": {"text": "`app/(public)/try/[slug]/page.tsx:41` calls `POST /api/try-demo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/try-demo`\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-3b3e65cd3231fe72", "name": "Dangling fetch: POST /api/try-demo (app/(public)/try/[slug]/creating/page.tsx:48)", "shortDescription": {"text": "Dangling fetch: POST /api/try-demo (app/(public)/try/[slug]/creating/page.tsx:48)"}, "fullDescription": {"text": "`app/(public)/try/[slug]/creating/page.tsx:48` calls `POST /api/try-demo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/try-demo`\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-8642db2bff0d4c18", "name": "Dangling fetch: POST /api/generate-logo-kit (e2e/integration.spec.ts:422)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-logo-kit (e2e/integration.spec.ts:422)"}, "fullDescription": {"text": "`e2e/integration.spec.ts:422` calls `POST /api/generate-logo-kit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-logo-kit`\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-dbdf34bf4d062091", "name": "Dangling fetch: POST /api/pre-generate-audio (e2e/integration.spec.ts:633)", "shortDescription": {"text": "Dangling fetch: POST /api/pre-generate-audio (e2e/integration.spec.ts:633)"}, "fullDescription": {"text": "`e2e/integration.spec.ts:633` calls `POST /api/pre-generate-audio` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/pre-generate-audio`\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-a9690717cffe7298", "name": "Dangling fetch: POST /api/generate-slide (e2e/integration.spec.ts:660)", "shortDescription": {"text": "Dangling fetch: POST /api/generate-slide (e2e/integration.spec.ts:660)"}, "fullDescription": {"text": "`e2e/integration.spec.ts:660` calls `POST /api/generate-slide` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/generate-slide`\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-0a58683141f8a8ff", "name": "Unused endpoint: POST /assemble", "shortDescription": {"text": "Unused endpoint: POST /assemble"}, "fullDescription": {"text": "`video-service/server.js` declares `POST /assemble` 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-e228aef5c5986931", "name": "Unused endpoint: POST /convert-to-pdf", "shortDescription": {"text": "Unused endpoint: POST /convert-to-pdf"}, "fullDescription": {"text": "`video-service/server.js` declares `POST /convert-to-pdf` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-37583ca7e4c862e2", "name": "Unused endpoint: POST /convert", "shortDescription": {"text": "Unused endpoint: POST /convert"}, "fullDescription": {"text": "`video-service/server.js` declares `POST /convert` 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": "`video-service/server.js` 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-41b50ad8cb07547f", "name": "Unused endpoint: POST /extract-document", "shortDescription": {"text": "Unused endpoint: POST /extract-document"}, "fullDescription": {"text": "`vps/server.js` declares `POST /extract-document` 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/20870"}, "properties": {"repository": "tdaniel1925/docs2video", "repoUrl": "https://github.com/tdaniel1925/docs2video", "branch": "main"}, "results": [{"ruleId": "scanner-7974dc2326035e9b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-animated-slide.ts:6"}, "properties": {"repobilityId": "960f328d76df7811", "scanner": "scanner-primary", "fingerprint": "7974dc2326035e9b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d6ad9915efa490b9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/script-generation.test.ts:106"}, "properties": {"repobilityId": "f45b5d3d31183613", "scanner": "scanner-primary", "fingerprint": "d6ad9915efa490b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3e469b9717bdcd5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gemini-cover-test.ts:12"}, "properties": {"repobilityId": "490d223e42acb64f", "scanner": "scanner-primary", "fingerprint": "c3e469b9717bdcd5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c6ab0ba4a46e392", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sample-slides.ts:71"}, "properties": {"repobilityId": "850abc0aae2dedcc", "scanner": "scanner-primary", "fingerprint": "2c6ab0ba4a46e392", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d0211bc25e319e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/urban-demo.ts:61"}, "properties": {"repobilityId": "ccb9283cef99fc8a", "scanner": "scanner-primary", "fingerprint": "9d0211bc25e319e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ba3b486bd2929fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-affiliate-banners.ts:56"}, "properties": {"repobilityId": "d63bed3366607b8f", "scanner": "scanner-primary", "fingerprint": "3ba3b486bd2929fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-06755cb1e40222dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup-credit-packs.ts:48"}, "properties": {"repobilityId": "204e549870013695", "scanner": "scanner-primary", "fingerprint": "06755cb1e40222dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-822ce6a2440a49dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/consistent-demo.ts:71"}, "properties": {"repobilityId": "289a114b4c65a115", "scanner": "scanner-primary", "fingerprint": "822ce6a2440a49dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9a8c160703d0145", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-cover-examples.ts:19"}, "properties": {"repobilityId": "e2a4ebe80719299d", "scanner": "scanner-primary", "fingerprint": "b9a8c160703d0145", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e73760cbed09e32", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compare-models.ts:29"}, "properties": {"repobilityId": "c36067f79bcf4934", "scanner": "scanner-primary", "fingerprint": "9e73760cbed09e32", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17007d472d80b334", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-sample-slides.ts:120"}, "properties": {"repobilityId": "1df7485c3f33619b", "scanner": "scanner-primary", "fingerprint": "17007d472d80b334", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e7c5e4474ac515a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-insurance-extraction.ts:20"}, "properties": {"repobilityId": "95c5518736e88159", "scanner": "scanner-primary", "fingerprint": "e7c5e4474ac515a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-225b0bfa3b3c08da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/style-samples.ts:44"}, "properties": {"repobilityId": "a02e5204db9ba1a3", "scanner": "scanner-primary", "fingerprint": "225b0bfa3b3c08da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b166544439126ed1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-style-previews.ts:53"}, "properties": {"repobilityId": "bf31c4808429c189", "scanner": "scanner-primary", "fingerprint": "b166544439126ed1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cfaebcc4f045a71d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flash31-demo.ts:48"}, "properties": {"repobilityId": "55fbca291e854c05", "scanner": "scanner-primary", "fingerprint": "cfaebcc4f045a71d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-728aed4884eac18d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compare-text.ts:26"}, "properties": {"repobilityId": "07d74a96ee713b44", "scanner": "scanner-primary", "fingerprint": "728aed4884eac18d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-522c1759a756ca08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sample-slides-neon.ts:43"}, "properties": {"repobilityId": "99e08e43fe6968ed", "scanner": "scanner-primary", "fingerprint": "522c1759a756ca08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7fd1ec3e6d6cdc54", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-presenter.js:16"}, "properties": {"repobilityId": "bd081b1f86acfa6c", "scanner": "scanner-primary", "fingerprint": "7fd1ec3e6d6cdc54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d08421b84d7c7be", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-cover-examples-v2.ts:15"}, "properties": {"repobilityId": "b9cf587ddc38a1b9", "scanner": "scanner-primary", "fingerprint": "0d08421b84d7c7be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-28c1c24ec9a0dd8b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-industry-demos.ts:24"}, "properties": {"repobilityId": "181d1e55bfd3df0c", "scanner": "scanner-primary", "fingerprint": "28c1c24ec9a0dd8b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2562d26cd07d87da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/read-pdfs.ts:17"}, "properties": {"repobilityId": "8e31a118fb5aff2a", "scanner": "scanner-primary", "fingerprint": "2562d26cd07d87da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5aa0fdd607af8da1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compare-v2.ts:16"}, "properties": {"repobilityId": "326243c3d3572341", "scanner": "scanner-primary", "fingerprint": "5aa0fdd607af8da1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d25b0cf9a740dce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-voice-samples.js:31"}, "properties": {"repobilityId": "0951ede143db95e3", "scanner": "scanner-primary", "fingerprint": "0d25b0cf9a740dce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f72b1c1bd7203142", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cinematic-red-demo.ts:61"}, "properties": {"repobilityId": "15c188433e73fd25", "scanner": "scanner-primary", "fingerprint": "f72b1c1bd7203142", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-08008c6f5a227e88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-style-previews.js:61"}, "properties": {"repobilityId": "6ebea6ed6ae87a26", "scanner": "scanner-primary", "fingerprint": "08008c6f5a227e88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4dda8fcc96ab0088", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 video-service/server.js:78"}, "properties": {"repobilityId": "460bd84a16658101", "scanner": "scanner-primary", "fingerprint": "4dda8fcc96ab0088", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6d62a9430b4cb4fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-infographic/route.ts:105"}, "properties": {"repobilityId": "58e259e24793d88e", "scanner": "scanner-primary", "fingerprint": "6d62a9430b4cb4fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23f8be23aa652309", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/demo-video/route.ts:98"}, "properties": {"repobilityId": "751d4819052a8c31", "scanner": "scanner-primary", "fingerprint": "23f8be23aa652309", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5bfa702d5f5758ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/script-chat/route.ts:53"}, "properties": {"repobilityId": "2d4d2d8e8fedc467", "scanner": "scanner-primary", "fingerprint": "5bfa702d5f5758ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-07d7299d77915ea5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-share/route.ts:111"}, "properties": {"repobilityId": "06c30e2fe86bbbf6", "scanner": "scanner-primary", "fingerprint": "07d7299d77915ea5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a83afb5a60a043b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-brand-deck/route.ts:114"}, "properties": {"repobilityId": "ff1786766e7eac74", "scanner": "scanner-primary", "fingerprint": "a83afb5a60a043b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-21b9fc1680f392c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/style-preview-from-brand/route.ts:69"}, "properties": {"repobilityId": "279c96c85ffa093d", "scanner": "scanner-primary", "fingerprint": "21b9fc1680f392c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a08418f1900ab9e1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/extract-doc/route.ts:47"}, "properties": {"repobilityId": "c2fc13c94fed053b", "scanner": "scanner-primary", "fingerprint": "a08418f1900ab9e1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-adaf685d84f3c703", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/admin/create-user/route.ts:87"}, "properties": {"repobilityId": "aaf4a653ce7e725a", "scanner": "scanner-primary", "fingerprint": "adaf685d84f3c703", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0a89c3ea462f3ea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/admin/setup-credit-products/route.ts:47"}, "properties": {"repobilityId": "138d05a48dc46a8a", "scanner": "scanner-primary", "fingerprint": "d0a89c3ea462f3ea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2b57230f0d86317", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/admin/auto-demo/route.ts:71"}, "properties": {"repobilityId": "6b93a8d3eca76bc3", "scanner": "scanner-primary", "fingerprint": "d2b57230f0d86317", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0544eab3d4ad0137", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-pptx/route.ts:165"}, "properties": {"repobilityId": "218de5ba4e9fec69", "scanner": "scanner-primary", "fingerprint": "0544eab3d4ad0137", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d426e70983c5d590", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/extract-url/route.ts:84"}, "properties": {"repobilityId": "48484329d5bccc81", "scanner": "scanner-primary", "fingerprint": "d426e70983c5d590", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36d417a3986b4728", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/deck-builder/route.ts:31"}, "properties": {"repobilityId": "d2e50f7c902437a7", "scanner": "scanner-primary", "fingerprint": "36d417a3986b4728", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09acce4ccfc8db3e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-script/route.ts:57"}, "properties": {"repobilityId": "de729bd56eaa2d49", "scanner": "scanner-primary", "fingerprint": "09acce4ccfc8db3e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d46460b39dd0376a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/videos/start-pipeline/route.ts:53"}, "properties": {"repobilityId": "92789081578747a9", "scanner": "scanner-primary", "fingerprint": "d46460b39dd0376a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-34c92dcb42ee3557", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/social-accounts/route.ts:55"}, "properties": {"repobilityId": "79eb914b01a806d9", "scanner": "scanner-primary", "fingerprint": "34c92dcb42ee3557", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0359c17f6499804f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/demo-slide-gpt/route.ts:44"}, "properties": {"repobilityId": "6d03f2877554d119", "scanner": "scanner-primary", "fingerprint": "0359c17f6499804f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4769f26b8cd82553", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/nurture/route.ts:235"}, "properties": {"repobilityId": "ff113037ca414bd9", "scanner": "scanner-primary", "fingerprint": "4769f26b8cd82553", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36b7217e96420e31", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/daily-digest/route.ts:48"}, "properties": {"repobilityId": "13c21b778fb5671f", "scanner": "scanner-primary", "fingerprint": "36b7217e96420e31", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59e4e91f816e1712", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/cleanup-drafts/route.ts:36"}, "properties": {"repobilityId": "3e3f4c68e3f8fd1e", "scanner": "scanner-primary", "fingerprint": "59e4e91f816e1712", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-99bbe3b43e614a10", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/cron/weekly-report/route.ts:171"}, "properties": {"repobilityId": "0fb3b13a0084f2b3", "scanner": "scanner-primary", "fingerprint": "99bbe3b43e614a10", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5cc32c3c522c18aa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-flyer/route.ts:106"}, "properties": {"repobilityId": "e35cea1665d8fc73", "scanner": "scanner-primary", "fingerprint": "5cc32c3c522c18aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-10bb6688e6acbac2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-social-kit/route.ts:124"}, "properties": {"repobilityId": "afefd73e2efb19e3", "scanner": "scanner-primary", "fingerprint": "10bb6688e6acbac2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e7386b3b8aa9d626", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-video/route.ts:332"}, "properties": {"repobilityId": "49ac4a9e4c4eb0a6", "scanner": "scanner-primary", "fingerprint": "e7386b3b8aa9d626", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3a35605dd2443e9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/course-builder/route.ts:96"}, "properties": {"repobilityId": "5caf2be5dfe7b2cf", "scanner": "scanner-primary", "fingerprint": "c3a35605dd2443e9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f8f1278318f72e1e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/template-demo/generate/route.ts:40"}, "properties": {"repobilityId": "7512fa82518bbffc", "scanner": "scanner-primary", "fingerprint": "f8f1278318f72e1e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd14252b2c8aa559", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/template-demo/extract/route.ts:62"}, "properties": {"repobilityId": "2431491a05c17fb9", "scanner": "scanner-primary", "fingerprint": "fd14252b2c8aa559", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd0fc26f5016a174", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-deck/route.ts:144"}, "properties": {"repobilityId": "a1e023cdbfa86dbd", "scanner": "scanner-primary", "fingerprint": "dd0fc26f5016a174", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e56799197a6b4c18", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-pdf/route.ts:158"}, "properties": {"repobilityId": "6a0ae78688e01aa1", "scanner": "scanner-primary", "fingerprint": "e56799197a6b4c18", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f999df0f4e685e59", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/re-render/route.ts:54"}, "properties": {"repobilityId": "cc2780d6ba82085d", "scanner": "scanner-primary", "fingerprint": "f999df0f4e685e59", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-37fd7d01ba653f24", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/pre-generate-audio/route.ts:30"}, "properties": {"repobilityId": "f73adb6ff2a1462a", "scanner": "scanner-primary", "fingerprint": "37fd7d01ba653f24", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8ce2beffffa551c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-business-card/route.ts:97"}, "properties": {"repobilityId": "9261b8d7a46d898c", "scanner": "scanner-primary", "fingerprint": "c8ce2beffffa551c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8a42e79161c31346", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/webhooks/creatomate/route.ts:78"}, "properties": {"repobilityId": "e0ae6794505545d3", "scanner": "scanner-primary", "fingerprint": "8a42e79161c31346", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ce973c91ce31d92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/webhooks/stripe/route.ts:90"}, "properties": {"repobilityId": "820f2a9402f92ee7", "scanner": "scanner-primary", "fingerprint": "2ce973c91ce31d92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f539e7ab72226d45", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/style-preview-custom/route.ts:58"}, "properties": {"repobilityId": "0b71afc88b1109bd", "scanner": "scanner-primary", "fingerprint": "f539e7ab72226d45", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5305b0d781378f1a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/api/generate-ads/route.ts:72"}, "properties": {"repobilityId": "9804e5cb939db754", "scanner": "scanner-primary", "fingerprint": "5305b0d781378f1a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1da4c6a1799996d0", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(dashboard)/help/page.tsx:570"}, "properties": {"repobilityId": "e96b4806727c8dce", "scanner": "scanner-primary", "fingerprint": "1da4c6a1799996d0", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2715b91ef61ab720", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(dashboard)/help/faq/page.tsx:182"}, "properties": {"repobilityId": "eba6dca11ff040e8", "scanner": "scanner-primary", "fingerprint": "2715b91ef61ab720", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5fd2a148b4d1ae74", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(dashboard)/email-signature/page.tsx:495"}, "properties": {"repobilityId": "989abcf07af0de00", "scanner": "scanner-primary", "fingerprint": "5fd2a148b4d1ae74", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b03b35049da3a976", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(dashboard)/admin/help/page.tsx:368"}, "properties": {"repobilityId": "5a67d20ec44ee314", "scanner": "scanner-primary", "fingerprint": "b03b35049da3a976", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-295e6a6204524bd2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/(dashboard)/videos/[id]/page.tsx:530"}, "properties": {"repobilityId": "e5f94ac2928b4fa1", "scanner": "scanner-primary", "fingerprint": "295e6a6204524bd2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bc077f88da2d39be", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/(dashboard)/brand-kit/page.tsx:1057"}, "properties": {"repobilityId": "842b724ab6877d68", "scanner": "scanner-primary", "fingerprint": "bc077f88da2d39be", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ba9f5f52e522553a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/brand-scraper.ts:266"}, "properties": {"repobilityId": "d09065aeee7b09a7", "scanner": "scanner-primary", "fingerprint": "ba9f5f52e522553a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-122eb8d76b0e3e08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/video.ts:23"}, "properties": {"repobilityId": "32915b7052355698", "scanner": "scanner-primary", "fingerprint": "122eb8d76b0e3e08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-adb0788293ccbeb2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/notifications.ts:62"}, "properties": {"repobilityId": "af7ebdfd6b47f3a4", "scanner": "scanner-primary", "fingerprint": "adb0788293ccbeb2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2cd9dff94cad41ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/credits.ts:228"}, "properties": {"repobilityId": "dcb25e973e125534", "scanner": "scanner-primary", "fingerprint": "2cd9dff94cad41ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3cf4024cd43a69c8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/music-generator.ts:63"}, "properties": {"repobilityId": "f48ab64a2678b2f9", "scanner": "scanner-primary", "fingerprint": "3cf4024cd43a69c8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fef3b9bab89dce7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/script-generator.ts:204"}, "properties": {"repobilityId": "ed9478db96527a60", "scanner": "scanner-primary", "fingerprint": "fef3b9bab89dce7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-76ddd4e413e69cad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/animated-slide.ts:277"}, "properties": {"repobilityId": "3d2cb44d43b1b447", "scanner": "scanner-primary", "fingerprint": "76ddd4e413e69cad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6157fc52338eea29", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/insurance-reconciler.ts:103"}, "properties": {"repobilityId": "6e7a60db7e2a58dc", "scanner": "scanner-primary", "fingerprint": "6157fc52338eea29", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c2eaca90de367aa3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/tts.ts:21"}, "properties": {"repobilityId": "6555023304a4cb23", "scanner": "scanner-primary", "fingerprint": "c2eaca90de367aa3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe24e1d403e8ae04", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/insurance-extractor.ts:110"}, "properties": {"repobilityId": "092da7d97aff66c5", "scanner": "scanner-primary", "fingerprint": "fe24e1d403e8ae04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a64174cd9712de14", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/_lib/inngest/render-video.ts:140"}, "properties": {"repobilityId": "441ff7ad2b98018f", "scanner": "scanner-primary", "fingerprint": "a64174cd9712de14", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9291cb6226c2323e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/_components/VideoPlayer.tsx:82"}, "properties": {"repobilityId": "79681f447f28841d", "scanner": "scanner-primary", "fingerprint": "9291cb6226c2323e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1d1cd186423b8095", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 vps/server.js:69"}, "properties": {"repobilityId": "e2db98c5570176bf", "scanner": "scanner-primary", "fingerprint": "1d1cd186423b8095", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8a44cd38a99a2b9", "level": "warning", "message": {"text": "Dockerfile runs as root: video-service/Dockerfile"}, "properties": {"repobilityId": "103b1d595047d32b", "scanner": "scanner-primary", "fingerprint": "b8a44cd38a99a2b9", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-c42c4b42251d0b6b", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-slim"}, "properties": {"repobilityId": "37d15b441bb6b279", "scanner": "scanner-primary", "fingerprint": "c42c4b42251d0b6b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video-service/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-d6f68e51fd1ae493", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in video-service/server.js:2"}, "properties": {"repobilityId": "f6acf92a43dbf9b0", "scanner": "scanner-primary", "fingerprint": "d6f68e51fd1ae493", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video-service/server.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-827d23f1738f5812", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(dashboard)/help/page.tsx:570"}, "properties": {"repobilityId": "4f30fe65a03b56a3", "scanner": "scanner-primary", "fingerprint": "827d23f1738f5812", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(dashboard)/help/page.tsx"}, "region": {"startLine": 570}}}]}, {"ruleId": "scanner-cc74833dd6fb9fcb", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(dashboard)/help/faq/page.tsx:182"}, "properties": {"repobilityId": "1289d6985fa9423d", "scanner": "scanner-primary", "fingerprint": "cc74833dd6fb9fcb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(dashboard)/help/faq/page.tsx"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-6dfdfbc16f637833", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(dashboard)/email-signature/page.tsx:495"}, "properties": {"repobilityId": "86d404be707ade7d", "scanner": "scanner-primary", "fingerprint": "6dfdfbc16f637833", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(dashboard)/email-signature/page.tsx"}, "region": {"startLine": 495}}}]}, {"ruleId": "scanner-daa6f43518490080", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(dashboard)/admin/help/page.tsx:368"}, "properties": {"repobilityId": "3b24a51c801e6f0f", "scanner": "scanner-primary", "fingerprint": "daa6f43518490080", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(dashboard)/admin/help/page.tsx"}, "region": {"startLine": 368}}}]}, {"ruleId": "scanner-98dda4a517ed7362", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/(dashboard)/brand-kit/page.tsx:1057"}, "properties": {"repobilityId": "3175616f6236014f", "scanner": "scanner-primary", "fingerprint": "98dda4a517ed7362", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/(dashboard)/brand-kit/page.tsx"}, "region": {"startLine": 1057}}}]}, {"ruleId": "scanner-4b7d20f44bb45309", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in app/_lib/video.ts:5"}, "properties": {"repobilityId": "c0e189d215afa5f7", "scanner": "scanner-primary", "fingerprint": "4b7d20f44bb45309", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/_lib/video.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-5f1fd371ca548d1b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in app/_lib/animated-slide.ts:7"}, "properties": {"repobilityId": "da98e24d5efe5bc0", "scanner": "scanner-primary", "fingerprint": "5f1fd371ca548d1b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/_lib/animated-slide.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-b63e6fcde6336968", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in vps/server.js:2"}, "properties": {"repobilityId": "d0468ef06ebca183", "scanner": "scanner-primary", "fingerprint": "b63e6fcde6336968", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "vps/server.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-51878daafec6fcd7", "level": "note", "message": {"text": "Very large file: app/page.tsx (874 lines)"}, "properties": {"repobilityId": "5e5eaf124a1a5246", "scanner": "scanner-primary", "fingerprint": "51878daafec6fcd7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ab6cf32675278ff3", "level": "note", "message": {"text": "Very large file: app/(dashboard)/settings/page.tsx (1118 lines)"}, "properties": {"repobilityId": "4147b07e72445dde", "scanner": "scanner-primary", "fingerprint": "ab6cf32675278ff3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c8b11e3250fe4878", "level": "note", "message": {"text": "Very large file: app/(dashboard)/admin/page.tsx (1360 lines)"}, "properties": {"repobilityId": "c88041d2ff9bf791", "scanner": "scanner-primary", "fingerprint": "c8b11e3250fe4878", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-db05eb528ce3cbc5", "level": "note", "message": {"text": "Very large file: app/(dashboard)/deck-builder/page.tsx (1113 lines)"}, "properties": {"repobilityId": "d6fe961ee9efdf94", "scanner": "scanner-primary", "fingerprint": "db05eb528ce3cbc5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-867bb06130f294f5", "level": "note", "message": {"text": "Very large file: app/(dashboard)/create/script/page.tsx (1110 lines)"}, "properties": {"repobilityId": "7121ef9df20d5c25", "scanner": "scanner-primary", "fingerprint": "867bb06130f294f5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9f71c1297e413770", "level": "note", "message": {"text": "Very large file: app/(dashboard)/videos/[id]/page.tsx (2219 lines)"}, "properties": {"repobilityId": "1adbf2ae6bd575d4", "scanner": "scanner-primary", "fingerprint": "9f71c1297e413770", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bbea60906cef4924", "level": "note", "message": {"text": "Very large file: app/(public)/watch/[id]/page.tsx (1818 lines)"}, "properties": {"repobilityId": "7ad330142f168f1d", "scanner": "scanner-primary", "fingerprint": "bbea60906cef4924", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "89ffa95ed8f47667", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-cb82921dd5e3d96b", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: video-service/package.json"}, "properties": {"repobilityId": "4b74e6cde6d937cc", "scanner": "scanner-primary", "fingerprint": "cb82921dd5e3d96b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video-service/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "a7a0d46d1bf8ec6f", "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": "532243a2c40e9395", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "f71f27b8b096781d", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "88f559ace1c8c338", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "48e59b9488035f4f", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "9c788859e8b3ce3c", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "3c310ef3387076c7", "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": "6b55e35efc0cabe0", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-e725d2ab884fbd49", "level": "note", "message": {"text": "Multiple root agent instruction files without precedence"}, "properties": {"repobilityId": "1953db6c89508d22", "scanner": "scanner-primary", "fingerprint": "e725d2ab884fbd49", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["agent-instructions", "governance"]}}, {"ruleId": "scanner-b684df254cce9d6c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/finalize-creatomate-local.mjs:20"}, "properties": {"repobilityId": "ac75d2af47463a62", "scanner": "scanner-primary", "fingerprint": "b684df254cce9d6c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c2a65b9e9407845e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/re-render-v2.mjs:21"}, "properties": {"repobilityId": "5156af0886bd1975", "scanner": "scanner-primary", "fingerprint": "c2a65b9e9407845e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-22f0514070280137", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-presenter.js:63"}, "properties": {"repobilityId": "4fc0c21d448e3a1f", "scanner": "scanner-primary", "fingerprint": "22f0514070280137", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-817cbba2ae0f70b9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/auth/google/callback/route.ts:37"}, "properties": {"repobilityId": "65526fbefc61b31f", "scanner": "scanner-primary", "fingerprint": "817cbba2ae0f70b9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2052032427b6336e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/auth/microsoft/callback/route.ts:38"}, "properties": {"repobilityId": "c0e614206f321789", "scanner": "scanner-primary", "fingerprint": "2052032427b6336e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4cdf6d1e52e77ee2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/v1/videos/route.ts:45"}, "properties": {"repobilityId": "e6ffbff2cf9707ae", "scanner": "scanner-primary", "fingerprint": "4cdf6d1e52e77ee2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b788cf7b3da897b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-share/route.ts:78"}, "properties": {"repobilityId": "2b7a9a671ac93e81", "scanner": "scanner-primary", "fingerprint": "3b788cf7b3da897b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-750685ee907eb5de", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/create-video/route.ts:46"}, "properties": {"repobilityId": "16b5f7d0a9a96dea", "scanner": "scanner-primary", "fingerprint": "750685ee907eb5de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c9aadd4797dc52c7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/video-editor/route.ts:137"}, "properties": {"repobilityId": "c57cb06a981bca22", "scanner": "scanner-primary", "fingerprint": "c9aadd4797dc52c7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f1d0c1fadd108411", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/voice-preview/route.ts:22"}, "properties": {"repobilityId": "9dab5b306a79a740", "scanner": "scanner-primary", "fingerprint": "f1d0c1fadd108411", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6e7ce7aa4c40c51f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/admin/bulk-generate/route.ts:73"}, "properties": {"repobilityId": "69a79065ed0c7649", "scanner": "scanner-primary", "fingerprint": "6e7ce7aa4c40c51f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a19332ecfcf8a4c1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/extract/route.ts:242"}, "properties": {"repobilityId": "6b44ae04b06de6b4", "scanner": "scanner-primary", "fingerprint": "a19332ecfcf8a4c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a52b4ca00b39b856", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/videos/start-pipeline/route.ts:58"}, "properties": {"repobilityId": "6b6cb45bb299ebc0", "scanner": "scanner-primary", "fingerprint": "a52b4ca00b39b856", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cd1f5ca287feb96a", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/generate-video/route.ts:101"}, "properties": {"repobilityId": "0fde88603682d740", "scanner": "scanner-primary", "fingerprint": "cd1f5ca287feb96a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fdd498594346d7c5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/stripe/oauth/callback/route.ts:26"}, "properties": {"repobilityId": "c8a739c74e4b0923", "scanner": "scanner-primary", "fingerprint": "fdd498594346d7c5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-157f998c4ef5b05a", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/stripe/checkout/route.ts:65"}, "properties": {"repobilityId": "1cba45095dde5f61", "scanner": "scanner-primary", "fingerprint": "157f998c4ef5b05a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4cf472600310a348", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/social-media/post/route.ts:73"}, "properties": {"repobilityId": "b5eabb001a69e0e2", "scanner": "scanner-primary", "fingerprint": "4cf472600310a348", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ef0d3fadc2321052", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/settings/page.tsx:941"}, "properties": {"repobilityId": "f0ed7739d69df34e", "scanner": "scanner-primary", "fingerprint": "ef0d3fadc2321052", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-21a7cd383ea57899", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/activity/page.tsx:55"}, "properties": {"repobilityId": "8399b082c0fb31a1", "scanner": "scanner-primary", "fingerprint": "21a7cd383ea57899", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a54393044b42bc98", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/ads/page.tsx:130"}, "properties": {"repobilityId": "754f2b9c396946d2", "scanner": "scanner-primary", "fingerprint": "a54393044b42bc98", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ed1478b60a6fffba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/templates/page.tsx:124"}, "properties": {"repobilityId": "d613761d5fd3ed0c", "scanner": "scanner-primary", "fingerprint": "ed1478b60a6fffba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2568cc116c3eb678", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/email-signature/page.tsx:97"}, "properties": {"repobilityId": "992edbf7e0f7ce75", "scanner": "scanner-primary", "fingerprint": "2568cc116c3eb678", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-41d05aa55d9f3621", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/admin/page.tsx:57"}, "properties": {"repobilityId": "5072dfbf2614f53f", "scanner": "scanner-primary", "fingerprint": "41d05aa55d9f3621", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2a0bd2eebd42a27d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/admin/users/[id]/page.tsx:66"}, "properties": {"repobilityId": "5de61e08de13ff21", "scanner": "scanner-primary", "fingerprint": "2a0bd2eebd42a27d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-65c1156c6a147af8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/admin/campaigns/page.tsx:279"}, "properties": {"repobilityId": "ec36757e427b6da9", "scanner": "scanner-primary", "fingerprint": "65c1156c6a147af8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a97508e59553c9ff", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/fix/page.tsx:79"}, "properties": {"repobilityId": "3be1e720b3494fdc", "scanner": "scanner-primary", "fingerprint": "a97508e59553c9ff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ad96f19cb3d0c37c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/deck-builder/page.tsx:204"}, "properties": {"repobilityId": "4d50ca9e6dbbbc92", "scanner": "scanner-primary", "fingerprint": "ad96f19cb3d0c37c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-05d7c28f8d6ac420", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/create/brand/page.tsx:61"}, "properties": {"repobilityId": "afb28f20c38a8ff7", "scanner": "scanner-primary", "fingerprint": "05d7c28f8d6ac420", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5be94162de6e7aa0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/create/script/page.tsx:189"}, "properties": {"repobilityId": "cf796064efe77c01", "scanner": "scanner-primary", "fingerprint": "5be94162de6e7aa0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-96351b82cad2049f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/create/_components/Step1Content.tsx:44"}, "properties": {"repobilityId": "3661bb60042322cb", "scanner": "scanner-primary", "fingerprint": "96351b82cad2049f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-243e4acadcd284eb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/videos/[id]/page.tsx:531"}, "properties": {"repobilityId": "b5b9860f399f25bc", "scanner": "scanner-primary", "fingerprint": "243e4acadcd284eb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4543e068572a0862", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/flyers/page.tsx:164"}, "properties": {"repobilityId": "2787dd874eafdebc", "scanner": "scanner-primary", "fingerprint": "4543e068572a0862", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03c12ef2e05bbba1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/quick/page.tsx:118"}, "properties": {"repobilityId": "6d3c5e4196236c9c", "scanner": "scanner-primary", "fingerprint": "03c12ef2e05bbba1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-af0a683edd5d065d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(dashboard)/infographics/[id]/page.tsx:65"}, "properties": {"repobilityId": "293f7df7b3a73969", "scanner": "scanner-primary", "fingerprint": "af0a683edd5d065d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3ac102f81e201461", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/_lib/email.ts:121"}, "properties": {"repobilityId": "b11ad45ac3deb0c7", "scanner": "scanner-primary", "fingerprint": "3ac102f81e201461", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5e55bca32ae0e671", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/_lib/logo-styler.ts:71"}, "properties": {"repobilityId": "4c8759a3f939d1b3", "scanner": "scanner-primary", "fingerprint": "5e55bca32ae0e671", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2a78b3d731103c2f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/_lib/tts-cartesia.ts:19"}, "properties": {"repobilityId": "ba13393cc1705694", "scanner": "scanner-primary", "fingerprint": "2a78b3d731103c2f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3e08a31c1e5c920b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/_components/NotificationBell.tsx:72"}, "properties": {"repobilityId": "873039af4316c7bb", "scanner": "scanner-primary", "fingerprint": "3e08a31c1e5c920b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f4a5177e7aad5fef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/_components/SendEmailModal.tsx:26"}, "properties": {"repobilityId": "453623b5dee65577", "scanner": "scanner-primary", "fingerprint": "f4a5177e7aad5fef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-92eb5ec7ec5e03b0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/(public)/try/[slug]/creating/page.tsx:48"}, "properties": {"repobilityId": "0941198c1a983180", "scanner": "scanner-primary", "fingerprint": "92eb5ec7ec5e03b0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5c4225bf35f23493", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 e2e/integration.spec.ts:422"}, "properties": {"repobilityId": "9908e3ff5dcfe82c", "scanner": "scanner-primary", "fingerprint": "5c4225bf35f23493", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c63e2c5ec811bf39", "level": "error", "message": {"text": "Dangling fetch: GET https://api.creatomate.com/v2/renders/${renderId} (scripts/finalize-creatomate-local.mjs:20)"}, "properties": {"repobilityId": "0c2c1691bd2ee309", "scanner": "scanner-primary", "fingerprint": "c63e2c5ec811bf39", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dbc1c86a50942300", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost:3000/api/webhooks/creatomate (scripts/finalize-creatomate-local.mjs:26)"}, "properties": {"repobilityId": "117e0abce2d0ed73", "scanner": "scanner-primary", "fingerprint": "dbc1c86a50942300", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f42c60a6e38844a0", "level": "error", "message": {"text": "Dangling fetch: POST https://api.creatomate.com/v1/renders (scripts/re-render-v2.mjs:45)"}, "properties": {"repobilityId": "fdf9c6e3239575f3", "scanner": "scanner-primary", "fingerprint": "f42c60a6e38844a0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-009dff669ace8bbe", "level": "error", "message": {"text": "Dangling fetch: POST https://api.kie.ai/api/v1/jobs/createTask (scripts/test-presenter.js:63)"}, "properties": {"repobilityId": "37336935bf02cff5", "scanner": "scanner-primary", "fingerprint": "009dff669ace8bbe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a2f4077342a6191f", "level": "error", "message": {"text": "Dangling fetch: GET https://api.kie.ai/api/v1/jobs/recordInfo?taskId=${taskId} (scripts/test-presenter.js:96)"}, "properties": {"repobilityId": "16db608083146054", "scanner": "scanner-primary", "fingerprint": "a2f4077342a6191f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-02b1e7b8afeaa44d", "level": "error", "message": {"text": "Dangling fetch: POST https://app.ayrshare.com/api/post (app/api/social-campaign/route.ts:309)"}, "properties": {"repobilityId": "bbabf5ab39cfd5db", "scanner": "scanner-primary", "fingerprint": "02b1e7b8afeaa44d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2834c73cdff840c4", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (app/api/auth/google/callback/route.ts:19)"}, "properties": {"repobilityId": "2f3270f4a8287116", "scanner": "scanner-primary", "fingerprint": "2834c73cdff840c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-26f66589499f8014", "level": "error", "message": {"text": "Dangling fetch: GET https://www.googleapis.com/oauth2/v2/userinfo (app/api/auth/google/callback/route.ts:37)"}, "properties": {"repobilityId": "c119ca9eddf2fcd9", "scanner": "scanner-primary", "fingerprint": "26f66589499f8014", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2a92876ab4731ea9", "level": "error", "message": {"text": "Dangling fetch: POST https://login.microsoftonline.com/common/oauth2/v2.0/token (app/api/auth/microsoft/callback/route.ts:19)"}, "properties": {"repobilityId": "929db3f6f9f1b508", "scanner": "scanner-primary", "fingerprint": "2a92876ab4731ea9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-312c803653dea585", "level": "error", "message": {"text": "Dangling fetch: GET https://graph.microsoft.com/v1.0/me (app/api/auth/microsoft/callback/route.ts:38)"}, "properties": {"repobilityId": "28aba3d0b8642d1b", "scanner": "scanner-primary", "fingerprint": "312c803653dea585", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4382a18864470491", "level": "error", "message": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${process.env.GEMINI_API_KEY} (app/api/follow-up/generate/route.ts:66)"}, "properties": {"repobilityId": "f28482f830f5bf4c", "scanner": "scanner-primary", "fingerprint": "4382a18864470491", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ae9c10db03e36cd8", "level": "error", "message": {"text": "Dangling fetch: POST https://app.ayrshare.com/api/post (app/api/social-share/route.ts:78)"}, "properties": {"repobilityId": "ad78d5adc0a8d2fe", "scanner": "scanner-primary", "fingerprint": "ae9c10db03e36cd8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c6b2f7099e67141", "level": "error", "message": {"text": "Dangling fetch: POST https://api.cartesia.ai/tts/bytes (app/api/voice-preview/route.ts:22)"}, "properties": {"repobilityId": "adfcac5426704569", "scanner": "scanner-primary", "fingerprint": "3c6b2f7099e67141", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb41f7c93563f29c", "level": "error", "message": {"text": "Dangling fetch: GET https://app.ayrshare.com/api/profiles/${profileKey} (app/api/social-accounts/route.ts:33)"}, "properties": {"repobilityId": "ef7307438e5e4461", "scanner": "scanner-primary", "fingerprint": "cb41f7c93563f29c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-18c9e829af71517b", "level": "error", "message": {"text": "Dangling fetch: GET https://app.ayrshare.com/api/user (app/api/social-accounts/route.ts:61)"}, "properties": {"repobilityId": "b951f638563c4c79", "scanner": "scanner-primary", "fingerprint": "18c9e829af71517b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-636c41d42d0b2671", "level": "error", "message": {"text": "Dangling fetch: POST https://app.ayrshare.com/api/profiles/profile (app/api/social-accounts/route.ts:113)"}, "properties": {"repobilityId": "ee49110a39be9e2d", "scanner": "scanner-primary", "fingerprint": "636c41d42d0b2671", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1fd72e646aab2876", "level": "error", "message": {"text": "Dangling fetch: DELETE https://app.ayrshare.com/api/profiles/social (app/api/social-accounts/route.ts:159)"}, "properties": {"repobilityId": "9322183b37892c4e", "scanner": "scanner-primary", "fingerprint": "1fd72e646aab2876", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c60e373f6f935b6", "level": "error", "message": {"text": "Dangling fetch: POST https://connect.stripe.com/oauth/token (app/api/stripe/oauth/callback/route.ts:26)"}, "properties": {"repobilityId": "714741593f3f6829", "scanner": "scanner-primary", "fingerprint": "3c60e373f6f935b6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9409713cc099c809", "level": "error", "message": {"text": "Dangling fetch: POST https://app.ayrshare.com/api/post (app/api/social-media/post/route.ts:73)"}, "properties": {"repobilityId": "5155c076569f7b98", "scanner": "scanner-primary", "fingerprint": "9409713cc099c809", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f1eb0e7af028722f", "level": "error", "message": {"text": "Dangling fetch: GET /api/referrals (app/(dashboard)/settings/page.tsx:23)"}, "properties": {"repobilityId": "103e2cfdabd2ebd2", "scanner": "scanner-primary", "fingerprint": "f1eb0e7af028722f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ef56e7b246e8fc3a", "level": "error", "message": {"text": "Dangling fetch: POST /api/referrals (app/(dashboard)/settings/page.tsx:34)"}, "properties": {"repobilityId": "a11c8422dc97efc8", "scanner": "scanner-primary", "fingerprint": "ef56e7b246e8fc3a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fb934dcc375779ab", "level": "error", "message": {"text": "Dangling fetch: GET /api/credits/balance (app/(dashboard)/settings/page.tsx:141)"}, "properties": {"repobilityId": "df32e3ccacafa34b", "scanner": "scanner-primary", "fingerprint": "fb934dcc375779ab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-29122c493a25259d", "level": "error", "message": {"text": "Dangling fetch: GET /api/email-connections (app/(dashboard)/settings/page.tsx:188)"}, "properties": {"repobilityId": "a4cabac59a4a9865", "scanner": "scanner-primary", "fingerprint": "29122c493a25259d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aaa63a90f67eaa21", "level": "error", "message": {"text": "Dangling fetch: GET /api/social-accounts (app/(dashboard)/settings/page.tsx:195)"}, "properties": {"repobilityId": "6065de7b4622f05e", "scanner": "scanner-primary", "fingerprint": "aaa63a90f67eaa21", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7513981ed1073c97", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-accounts (app/(dashboard)/settings/page.tsx:207)"}, "properties": {"repobilityId": "e2d983c8df270e64", "scanner": "scanner-primary", "fingerprint": "7513981ed1073c97", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fb8bccb94df64d9b", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-accounts (app/(dashboard)/settings/page.tsx:232)"}, "properties": {"repobilityId": "281200c6e97bffe0", "scanner": "scanner-primary", "fingerprint": "fb8bccb94df64d9b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aeb436e0ada4839d", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-connections/test (app/(dashboard)/settings/page.tsx:265)"}, "properties": {"repobilityId": "273e3426de4aea11", "scanner": "scanner-primary", "fingerprint": "aeb436e0ada4839d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1262a89bb48739f7", "level": "error", "message": {"text": "Dangling fetch: POST /api/upload-photo (app/(dashboard)/settings/page.tsx:331)"}, "properties": {"repobilityId": "0acf82ca73432e88", "scanner": "scanner-primary", "fingerprint": "1262a89bb48739f7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-708c84f04bae36fb", "level": "error", "message": {"text": "Dangling fetch: POST /api/upload-logo (app/(dashboard)/settings/page.tsx:355)"}, "properties": {"repobilityId": "aec7a032e4d2a1bd", "scanner": "scanner-primary", "fingerprint": "708c84f04bae36fb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-efe07b940904d58f", "level": "error", "message": {"text": "Dangling fetch: POST /api/stripe/portal (app/(dashboard)/settings/page.tsx:941)"}, "properties": {"repobilityId": "f6aaf1c8c8751714", "scanner": "scanner-primary", "fingerprint": "efe07b940904d58f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c2a9a12561032b8b", "level": "error", "message": {"text": "Dangling fetch: POST /api/stripe/portal (app/(dashboard)/settings/page.tsx:950)"}, "properties": {"repobilityId": "84160a188a2751b8", "scanner": "scanner-primary", "fingerprint": "c2a9a12561032b8b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8f932ea0d6028f32", "level": "error", "message": {"text": "Dangling fetch: POST /api/stripe/portal (app/(dashboard)/settings/page.tsx:1049)"}, "properties": {"repobilityId": "bc7df6f665ebba72", "scanner": "scanner-primary", "fingerprint": "8f932ea0d6028f32", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-01e2b3eeb41f53c4", "level": "error", "message": {"text": "Dangling fetch: POST /api/subscribe (app/(dashboard)/settings/page.tsx:1062)"}, "properties": {"repobilityId": "5e3ee552b93ba2e4", "scanner": "scanner-primary", "fingerprint": "01e2b3eeb41f53c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-237892386a728458", "level": "error", "message": {"text": "Dangling fetch: POST /api/account/delete (app/(dashboard)/settings/page.tsx:1094)"}, "properties": {"repobilityId": "000d3b9b88aa8e84", "scanner": "scanner-primary", "fingerprint": "237892386a728458", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-37a1645418c0cd52", "level": "error", "message": {"text": "Dangling fetch: POST /api/demo-slide-gpt (app/(dashboard)/demo-slide/page.tsx:34)"}, "properties": {"repobilityId": "948a17c9cdbf318c", "scanner": "scanner-primary", "fingerprint": "37a1645418c0cd52", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-03b003ed9041704e", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-business-card (app/(dashboard)/business-cards/page.tsx:87)"}, "properties": {"repobilityId": "9cd90b4f678d2670", "scanner": "scanner-primary", "fingerprint": "03b003ed9041704e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4be525c04c7aa205", "level": "error", "message": {"text": "Dangling fetch: GET /api/analytics (app/(dashboard)/analytics/page.tsx:57)"}, "properties": {"repobilityId": "e9f1848a8fd39e1c", "scanner": "scanner-primary", "fingerprint": "4be525c04c7aa205", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cc5b07ceb86b1093", "level": "error", "message": {"text": "Dangling fetch: GET /api/benchmarks (app/(dashboard)/analytics/page.tsx:58)"}, "properties": {"repobilityId": "ba4c1b61dbc7f7a3", "scanner": "scanner-primary", "fingerprint": "cc5b07ceb86b1093", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2cc3549d226ab774", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-infographic (app/(dashboard)/infographic-creator/page.tsx:94)"}, "properties": {"repobilityId": "3ebf337cbaa53b07", "scanner": "scanner-primary", "fingerprint": "2cc3549d226ab774", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f7fb4e96ddd39814", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-social-kit (app/(dashboard)/social-kit/page.tsx:95)"}, "properties": {"repobilityId": "4dd2ae5467b67b5f", "scanner": "scanner-primary", "fingerprint": "f7fb4e96ddd39814", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cf250da6837511fb", "level": "error", "message": {"text": "Dangling fetch: GET /api/affiliate/stats (app/(dashboard)/affiliate/page.tsx:27)"}, "properties": {"repobilityId": "1318822e5ec7416f", "scanner": "scanner-primary", "fingerprint": "cf250da6837511fb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eb9cb49cffbe1c61", "level": "error", "message": {"text": "Dangling fetch: POST /api/affiliate/payout (app/(dashboard)/affiliate/page.tsx:40)"}, "properties": {"repobilityId": "8e963462d561c9bf", "scanner": "scanner-primary", "fingerprint": "eb9cb49cffbe1c61", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ebee397b39935a65", "level": "error", "message": {"text": "Dangling fetch: POST /api/affiliate/enroll (app/(dashboard)/affiliate/page.tsx:51)"}, "properties": {"repobilityId": "00fa6b5a596e7eec", "scanner": "scanner-primary", "fingerprint": "ebee397b39935a65", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c2a2437233c8356", "level": "error", "message": {"text": "Dangling fetch: GET /api/notifications (app/(dashboard)/activity/page.tsx:50)"}, "properties": {"repobilityId": "632ca50122521733", "scanner": "scanner-primary", "fingerprint": "3c2a2437233c8356", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6cb3cd154920d490", "level": "error", "message": {"text": "Dangling fetch: GET /api/activity/jobs (app/(dashboard)/activity/page.tsx:55)"}, "properties": {"repobilityId": "2c70c6b1e5d8dba8", "scanner": "scanner-primary", "fingerprint": "6cb3cd154920d490", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-319661a53dba4b94", "level": "error", "message": {"text": "Dangling fetch: POST /api/scrape-brand (app/(dashboard)/brands/new/page.tsx:182)"}, "properties": {"repobilityId": "7097bcc88f3784b8", "scanner": "scanner-primary", "fingerprint": "319661a53dba4b94", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e143504ef491cd10", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract-logo-colors (app/(dashboard)/brands/new/page.tsx:530)"}, "properties": {"repobilityId": "0233da2a2c71758e", "scanner": "scanner-primary", "fingerprint": "e143504ef491cd10", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f521e15af8bda202", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-logo-kit (app/(dashboard)/brands/[id]/page.tsx:84)"}, "properties": {"repobilityId": "11a7c8ec79c18893", "scanner": "scanner-primary", "fingerprint": "f521e15af8bda202", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-adb6126bdd6aed49", "level": "error", "message": {"text": "Dangling fetch: POST /api/upload-logo (app/(dashboard)/brands/[id]/page.tsx:150)"}, "properties": {"repobilityId": "59283e82ff356465", "scanner": "scanner-primary", "fingerprint": "adb6126bdd6aed49", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c04266aee1871c76", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract-logo-colors (app/(dashboard)/brands/[id]/page.tsx:156)"}, "properties": {"repobilityId": "4f8cd08a530e2b17", "scanner": "scanner-primary", "fingerprint": "c04266aee1871c76", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ba76c5699fb39760", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-brand-deck (app/(dashboard)/brands/[id]/page.tsx:234)"}, "properties": {"repobilityId": "29d887584779f2df", "scanner": "scanner-primary", "fingerprint": "ba76c5699fb39760", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4b5263ec0bce8b8f", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-ads (app/(dashboard)/ads/page.tsx:130)"}, "properties": {"repobilityId": "24d19e59293d839e", "scanner": "scanner-primary", "fingerprint": "4b5263ec0bce8b8f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-23bf38f2eaacf9b8", "level": "error", "message": {"text": "Dangling fetch: POST /api/image-remix (app/(dashboard)/image-remix/page.tsx:86)"}, "properties": {"repobilityId": "13672a52a02e2d86", "scanner": "scanner-primary", "fingerprint": "23bf38f2eaacf9b8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aa8d024072379a80", "level": "error", "message": {"text": "Dangling fetch: GET /api/templates (app/(dashboard)/templates/page.tsx:124)"}, "properties": {"repobilityId": "519abd13642d8c48", "scanner": "scanner-primary", "fingerprint": "aa8d024072379a80", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2dda6e2596ae4e8f", "level": "error", "message": {"text": "Dangling fetch: POST /api/template-chat (app/(dashboard)/templates/page.tsx:143)"}, "properties": {"repobilityId": "9fe68b099f73384c", "scanner": "scanner-primary", "fingerprint": "2dda6e2596ae4e8f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-11df23333e8d6f65", "level": "error", "message": {"text": "Dangling fetch: POST /api/templates/generate-preview (app/(dashboard)/templates/page.tsx:170)"}, "properties": {"repobilityId": "17c8e0f85adeb8fb", "scanner": "scanner-primary", "fingerprint": "11df23333e8d6f65", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d5b5ce325b73848a", "level": "error", "message": {"text": "Dangling fetch: POST /api/templates/refine (app/(dashboard)/templates/page.tsx:192)"}, "properties": {"repobilityId": "b766bddf3e3c4ab1", "scanner": "scanner-primary", "fingerprint": "d5b5ce325b73848a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-02afc181e36cc83e", "level": "error", "message": {"text": "Dangling fetch: POST /api/templates (app/(dashboard)/templates/page.tsx:215)"}, "properties": {"repobilityId": "8dbf8259d117202b", "scanner": "scanner-primary", "fingerprint": "02afc181e36cc83e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-feaf2c3ee9736914", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/templates?id=${id} (app/(dashboard)/templates/page.tsx:238)"}, "properties": {"repobilityId": "3332a010e962b747", "scanner": "scanner-primary", "fingerprint": "feaf2c3ee9736914", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-46dc86d5f6123c58", "level": "error", "message": {"text": "Dangling fetch: POST /api/templates/generate-preview (app/(dashboard)/templates/page.tsx:280)"}, "properties": {"repobilityId": "3d97a47c032f9207", "scanner": "scanner-primary", "fingerprint": "46dc86d5f6123c58", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-faf3463f2f5b02f4", "level": "error", "message": {"text": "Dangling fetch: POST /api/templates/generate-preview (app/(dashboard)/templates/page.tsx:312)"}, "properties": {"repobilityId": "295d77e172084aa7", "scanner": "scanner-primary", "fingerprint": "faf3463f2f5b02f4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-71535b555fe3d9b4", "level": "error", "message": {"text": "Dangling fetch: POST /api/upload (app/(dashboard)/email-signature/page.tsx:68)"}, "properties": {"repobilityId": "189128a641aafeab", "scanner": "scanner-primary", "fingerprint": "71535b555fe3d9b4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-df540b70076ec00a", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-email-signature (app/(dashboard)/email-signature/page.tsx:97)"}, "properties": {"repobilityId": "b5e0a21b4ce7d1c4", "scanner": "scanner-primary", "fingerprint": "df540b70076ec00a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-211c2ff96db79d9c", "level": "error", "message": {"text": "Dangling fetch: POST /api/logo-chat (app/(dashboard)/logo-creator/page.tsx:245)"}, "properties": {"repobilityId": "7a4d957454f826f2", "scanner": "scanner-primary", "fingerprint": "211c2ff96db79d9c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-77a4262df26ba700", "level": "error", "message": {"text": "Dangling fetch: POST /api/logo-chat (app/(dashboard)/logo-creator/page.tsx:309)"}, "properties": {"repobilityId": "52fbcc79e9fb735f", "scanner": "scanner-primary", "fingerprint": "77a4262df26ba700", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2155cba36012baa3", "level": "error", "message": {"text": "Dangling fetch: POST /api/logo-chat (app/(dashboard)/logo-creator/page.tsx:355)"}, "properties": {"repobilityId": "c32ab285670ac05a", "scanner": "scanner-primary", "fingerprint": "2155cba36012baa3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fc200980d4cef98e", "level": "error", "message": {"text": "Dangling fetch: POST /api/logo-chat (app/(dashboard)/logo-creator/page.tsx:391)"}, "properties": {"repobilityId": "0b0c496f03d22690", "scanner": "scanner-primary", "fingerprint": "fc200980d4cef98e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5d27b579e2c2a63b", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/data (app/(dashboard)/admin/page.tsx:57)"}, "properties": {"repobilityId": "f05078073c0c64bb", "scanner": "scanner-primary", "fingerprint": "5d27b579e2c2a63b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d59c4bdea6b2146b", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/stats (app/(dashboard)/admin/page.tsx:72)"}, "properties": {"repobilityId": "60423ad4e65b6ced", "scanner": "scanner-primary", "fingerprint": "d59c4bdea6b2146b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb320571f03f629f", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:76)"}, "properties": {"repobilityId": "4a83026a3a786a59", "scanner": "scanner-primary", "fingerprint": "cb320571f03f629f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5c1ca0be79b9f99e", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:80)"}, "properties": {"repobilityId": "fb8e9479bb419654", "scanner": "scanner-primary", "fingerprint": "5c1ca0be79b9f99e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9aa6ed2c7afd0c3c", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/data (app/(dashboard)/admin/page.tsx:86)"}, "properties": {"repobilityId": "18c13537e22f43a4", "scanner": "scanner-primary", "fingerprint": "9aa6ed2c7afd0c3c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dd02256f28a5f7d6", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:95)"}, "properties": {"repobilityId": "38d0570571f60be4", "scanner": "scanner-primary", "fingerprint": "dd02256f28a5f7d6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eca713f1b5a52a9a", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:103)"}, "properties": {"repobilityId": "3c8eeba89f676e58", "scanner": "scanner-primary", "fingerprint": "eca713f1b5a52a9a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-00984c87f4101a5e", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/user-action (app/(dashboard)/admin/page.tsx:117)"}, "properties": {"repobilityId": "96ac98b07aa9d563", "scanner": "scanner-primary", "fingerprint": "00984c87f4101a5e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b2e3e659e5ca7852", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/impersonate (app/(dashboard)/admin/page.tsx:131)"}, "properties": {"repobilityId": "66bd0e87691319a4", "scanner": "scanner-primary", "fingerprint": "b2e3e659e5ca7852", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-84321ef702330fbe", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/retry-video (app/(dashboard)/admin/page.tsx:144)"}, "properties": {"repobilityId": "0459310e49c3e3d7", "scanner": "scanner-primary", "fingerprint": "84321ef702330fbe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a18cd08bc40be47b", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/manage-access (app/(dashboard)/admin/page.tsx:157)"}, "properties": {"repobilityId": "8b4fc9614879a218", "scanner": "scanner-primary", "fingerprint": "a18cd08bc40be47b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-adbc5be83ce6f06c", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/create-user (app/(dashboard)/admin/page.tsx:518)"}, "properties": {"repobilityId": "0d1a0b25f62954f4", "scanner": "scanner-primary", "fingerprint": "adbc5be83ce6f06c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ea071397495bc668", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/data (app/(dashboard)/admin/page.tsx:535)"}, "properties": {"repobilityId": "8344803001db1552", "scanner": "scanner-primary", "fingerprint": "ea071397495bc668", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cf179c7dc62db26d", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:745)"}, "properties": {"repobilityId": "c95858fd183b37e7", "scanner": "scanner-primary", "fingerprint": "cf179c7dc62db26d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-866ba564d6aa1e3c", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:754)"}, "properties": {"repobilityId": "a0f278f45053db60", "scanner": "scanner-primary", "fingerprint": "866ba564d6aa1e3c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-28924170a84db4d0", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:768)"}, "properties": {"repobilityId": "c90e7e6246a4fd4d", "scanner": "scanner-primary", "fingerprint": "28924170a84db4d0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2493df9982b55ba1", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:826)"}, "properties": {"repobilityId": "ce93d36e052fda09", "scanner": "scanner-primary", "fingerprint": "2493df9982b55ba1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7b02c4561935a111", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:827)"}, "properties": {"repobilityId": "118e4865e093a96e", "scanner": "scanner-primary", "fingerprint": "7b02c4561935a111", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9367a2d9fd2dcf88", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:839)"}, "properties": {"repobilityId": "086a810dcc75e7c2", "scanner": "scanner-primary", "fingerprint": "9367a2d9fd2dcf88", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a8effea25ec95a2b", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/prospect-send (app/(dashboard)/admin/page.tsx:879)"}, "properties": {"repobilityId": "902b7a2eacedcd64", "scanner": "scanner-primary", "fingerprint": "a8effea25ec95a2b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9073657b99402984", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:894)"}, "properties": {"repobilityId": "8578ff2f6bc1bff0", "scanner": "scanner-primary", "fingerprint": "9073657b99402984", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b2eb0fdd8f946344", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:955)"}, "properties": {"repobilityId": "18e75a449db2c819", "scanner": "scanner-primary", "fingerprint": "b2eb0fdd8f946344", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-99e0d8fe57adb73f", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/prospect-pipeline (app/(dashboard)/admin/page.tsx:956)"}, "properties": {"repobilityId": "2dc6b6430cb9446a", "scanner": "scanner-primary", "fingerprint": "99e0d8fe57adb73f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a864378833cdce22", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:1127)"}, "properties": {"repobilityId": "ca78e9af87a266ee", "scanner": "scanner-primary", "fingerprint": "a864378833cdce22", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4f1708bcc9c91311", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:1197)"}, "properties": {"repobilityId": "68d34d64c28df55c", "scanner": "scanner-primary", "fingerprint": "4f1708bcc9c91311", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-19f32aa60198fb0b", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:1213)"}, "properties": {"repobilityId": "588437041cf07b12", "scanner": "scanner-primary", "fingerprint": "19f32aa60198fb0b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1f4129d5aa3ddc3e", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/campaign-send (app/(dashboard)/admin/page.tsx:1232)"}, "properties": {"repobilityId": "0adf3c542e268df8", "scanner": "scanner-primary", "fingerprint": "1f4129d5aa3ddc3e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cf2127b4f1381a63", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/stats (app/(dashboard)/admin/page.tsx:1345)"}, "properties": {"repobilityId": "e6fa79b17b001083", "scanner": "scanner-primary", "fingerprint": "cf2127b4f1381a63", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-09e3cd20d6bde31b", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/user-detail?id=${userId} (app/(dashboard)/admin/users/[id]/page.tsx:32)"}, "properties": {"repobilityId": "08595a4ab23a39b8", "scanner": "scanner-primary", "fingerprint": "09e3cd20d6bde31b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7e14e3ad3bc4731d", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/credit-history?userId=${userId} (app/(dashboard)/admin/users/[id]/page.tsx:33)"}, "properties": {"repobilityId": "49aaf1f8fd5d96e3", "scanner": "scanner-primary", "fingerprint": "7e14e3ad3bc4731d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7595b5e5a9e48943", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/manage-access (app/(dashboard)/admin/users/[id]/page.tsx:48)"}, "properties": {"repobilityId": "dc8cdc247e615d30", "scanner": "scanner-primary", "fingerprint": "7595b5e5a9e48943", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2810f420064d081e", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/user-action (app/(dashboard)/admin/users/[id]/page.tsx:61)"}, "properties": {"repobilityId": "ba3e6ee423498da9", "scanner": "scanner-primary", "fingerprint": "2810f420064d081e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a84021ecfe2568cf", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/user-detail?id=${userId} (app/(dashboard)/admin/users/[id]/page.tsx:66)"}, "properties": {"repobilityId": "0f19e4d12213f5b3", "scanner": "scanner-primary", "fingerprint": "a84021ecfe2568cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f314520ccfb981ed", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/bulk-generate (app/(dashboard)/admin/bulk/page.tsx:101)"}, "properties": {"repobilityId": "ff8743d5ea6d11d2", "scanner": "scanner-primary", "fingerprint": "f314520ccfb981ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a07643817d10d80d", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/api-keys (app/(dashboard)/admin/api-keys/page.tsx:30)"}, "properties": {"repobilityId": "e8eb70dca7727825", "scanner": "scanner-primary", "fingerprint": "a07643817d10d80d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e8303c6f3459c329", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/api-keys (app/(dashboard)/admin/api-keys/page.tsx:41)"}, "properties": {"repobilityId": "caa0538058975754", "scanner": "scanner-primary", "fingerprint": "e8303c6f3459c329", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7d42bafc99fa333d", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/campaigns (app/(dashboard)/admin/campaigns/page.tsx:206)"}, "properties": {"repobilityId": "9aa290df1c5c00d4", "scanner": "scanner-primary", "fingerprint": "7d42bafc99fa333d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6eb018c0fb086442", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/campaigns/${id} (app/(dashboard)/admin/campaigns/page.tsx:218)"}, "properties": {"repobilityId": "124d07ba37fe849e", "scanner": "scanner-primary", "fingerprint": "6eb018c0fb086442", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b6235c90b202e8cd", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/campaigns (app/(dashboard)/admin/campaigns/page.tsx:235)"}, "properties": {"repobilityId": "7b5f752bdb1635de", "scanner": "scanner-primary", "fingerprint": "b6235c90b202e8cd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3074a2796aea65a0", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/admin/campaigns/${id} (app/(dashboard)/admin/campaigns/page.tsx:260)"}, "properties": {"repobilityId": "3d846501b374a79a", "scanner": "scanner-primary", "fingerprint": "3074a2796aea65a0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d0cf46e762dfbaaa", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/campaigns/${selectedCampaign.id}/contacts (app/(dashboard)/admin/campaigns/page.tsx:279)"}, "properties": {"repobilityId": "0287521edf73f3c2", "scanner": "scanner-primary", "fingerprint": "d0cf46e762dfbaaa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-57539db1bd0db9d9", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/campaigns/${selectedCampaign.id}/generate (app/(dashboard)/admin/campaigns/page.tsx:301)"}, "properties": {"repobilityId": "cc9798d35fd01a93", "scanner": "scanner-primary", "fingerprint": "57539db1bd0db9d9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2b76900ac024fe49", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/campaigns/${selectedCampaign.id}/approve (app/(dashboard)/admin/campaigns/page.tsx:313)"}, "properties": {"repobilityId": "28cfc48c93fc169c", "scanner": "scanner-primary", "fingerprint": "2b76900ac024fe49", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c03cbeca0deb8865", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/campaigns/${selectedCampaign.id}/send (app/(dashboard)/admin/campaigns/page.tsx:327)"}, "properties": {"repobilityId": "bbab9ba8cc3705c7", "scanner": "scanner-primary", "fingerprint": "c03cbeca0deb8865", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3841e41f92ff5d56", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/campaigns/nurture (app/(dashboard)/admin/campaigns/page.tsx:340)"}, "properties": {"repobilityId": "7443fae09d2d7379", "scanner": "scanner-primary", "fingerprint": "3841e41f92ff5d56", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9e44672bc2a652d4", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/costs (app/(dashboard)/admin/costs/page.tsx:32)"}, "properties": {"repobilityId": "0973e0455ff807b7", "scanner": "scanner-primary", "fingerprint": "9e44672bc2a652d4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-15a2fb81927d29c0", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/affiliates (app/(dashboard)/admin/affiliates/page.tsx:29)"}, "properties": {"repobilityId": "aa545c3e740d1273", "scanner": "scanner-primary", "fingerprint": "15a2fb81927d29c0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6b3a1a6aac6ec688", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/affiliates (app/(dashboard)/admin/affiliates/page.tsx:40)"}, "properties": {"repobilityId": "900852e4454f18c9", "scanner": "scanner-primary", "fingerprint": "6b3a1a6aac6ec688", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-090fbf320cf2a6fd", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/affiliates (app/(dashboard)/admin/affiliates/page.tsx:50)"}, "properties": {"repobilityId": "ca60765517cb5de4", "scanner": "scanner-primary", "fingerprint": "090fbf320cf2a6fd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cd8e035a8a2d5ca9", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/revenue (app/(dashboard)/admin/revenue/page.tsx:37)"}, "properties": {"repobilityId": "ffe7cd2806056e35", "scanner": "scanner-primary", "fingerprint": "cd8e035a8a2d5ca9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a2b3f03e301ed27f", "level": "error", "message": {"text": "Dangling fetch: POST /api/fix-photo (app/(dashboard)/fix/page.tsx:52)"}, "properties": {"repobilityId": "b9ca0efae8e73a25", "scanner": "scanner-primary", "fingerprint": "a2b3f03e301ed27f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ec14b210c03f90c", "level": "error", "message": {"text": "Dangling fetch: POST /api/upload-photo (app/(dashboard)/fix/page.tsx:83)"}, "properties": {"repobilityId": "1bc1d83cb44ad238", "scanner": "scanner-primary", "fingerprint": "5ec14b210c03f90c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a9d02dbfe54997a7", "level": "error", "message": {"text": "Dangling fetch: POST /api/upload-logo (app/(dashboard)/fix/page.tsx:93)"}, "properties": {"repobilityId": "14d2e0bd96d122d4", "scanner": "scanner-primary", "fingerprint": "a9d02dbfe54997a7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d1f468c1236a27b9", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract (app/(dashboard)/deck-builder/page.tsx:112)"}, "properties": {"repobilityId": "03fdee2859d1b15a", "scanner": "scanner-primary", "fingerprint": "d1f468c1236a27b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-71935afbe6f7ac6d", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract-text (app/(dashboard)/deck-builder/page.tsx:127)"}, "properties": {"repobilityId": "6ce464892552df22", "scanner": "scanner-primary", "fingerprint": "71935afbe6f7ac6d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-94dce26e0316ae88", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract-url (app/(dashboard)/deck-builder/page.tsx:146)"}, "properties": {"repobilityId": "6042231ce591f9f0", "scanner": "scanner-primary", "fingerprint": "94dce26e0316ae88", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5da0698e04fbbea5", "level": "error", "message": {"text": "Dangling fetch: POST /api/ai-research (app/(dashboard)/deck-builder/page.tsx:165)"}, "properties": {"repobilityId": "2713b1058b31409e", "scanner": "scanner-primary", "fingerprint": "5da0698e04fbbea5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-27355119560e67e9", "level": "error", "message": {"text": "Dangling fetch: POST /api/deck-builder (app/(dashboard)/deck-builder/page.tsx:204)"}, "properties": {"repobilityId": "6e91b3191ed46046", "scanner": "scanner-primary", "fingerprint": "27355119560e67e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dded8f59f78712c1", "level": "error", "message": {"text": "Dangling fetch: POST /api/deck-builder (app/(dashboard)/deck-builder/page.tsx:227)"}, "properties": {"repobilityId": "c2de0e5458e8fa8e", "scanner": "scanner-primary", "fingerprint": "dded8f59f78712c1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a6e32a8b819c2cd4", "level": "error", "message": {"text": "Dangling fetch: POST /api/deck-builder (app/(dashboard)/deck-builder/page.tsx:274)"}, "properties": {"repobilityId": "b5a2c4f6efb5abab", "scanner": "scanner-primary", "fingerprint": "a6e32a8b819c2cd4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4d39836fcaa04e8a", "level": "error", "message": {"text": "Dangling fetch: GET /api/videos/draft?videoId=${videoId} (app/(dashboard)/create/brand/page.tsx:61)"}, "properties": {"repobilityId": "1c00a481d754acd9", "scanner": "scanner-primary", "fingerprint": "4d39836fcaa04e8a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-988e76869e766d3a", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/brand/page.tsx:213)"}, "properties": {"repobilityId": "51c385d55a6f6892", "scanner": "scanner-primary", "fingerprint": "988e76869e766d3a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f367629062827f46", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/brand/page.tsx:245)"}, "properties": {"repobilityId": "6bc46dbe823a2f8a", "scanner": "scanner-primary", "fingerprint": "f367629062827f46", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a58ea1cbb219e0bf", "level": "error", "message": {"text": "Dangling fetch: GET /api/clients?search=${encodeURIComponent(q)}&sort=last_activity_at&order=desc (app/(dashboard)/create/client/page.tsx:43)"}, "properties": {"repobilityId": "b010303e9823a34e", "scanner": "scanner-primary", "fingerprint": "a58ea1cbb219e0bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6f460265fea8f278", "level": "error", "message": {"text": "Dangling fetch: POST /api/clients (app/(dashboard)/create/client/page.tsx:64)"}, "properties": {"repobilityId": "9b82c6de5dd22e70", "scanner": "scanner-primary", "fingerprint": "6f460265fea8f278", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-24603ef929e502f6", "level": "error", "message": {"text": "Dangling fetch: GET /api/videos/draft?videoId=${videoId} (app/(dashboard)/create/voice/page.tsx:70)"}, "properties": {"repobilityId": "27c9d8890e26ac67", "scanner": "scanner-primary", "fingerprint": "24603ef929e502f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3fd4698b3d52a0b3", "level": "error", "message": {"text": "Dangling fetch: GET /api/credits/balance (app/(dashboard)/create/voice/page.tsx:111)"}, "properties": {"repobilityId": "3773bd10cb409665", "scanner": "scanner-primary", "fingerprint": "3fd4698b3d52a0b3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1c44f8d79705b622", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/voice/page.tsx:142)"}, "properties": {"repobilityId": "beb685f8264bb2e8", "scanner": "scanner-primary", "fingerprint": "1c44f8d79705b622", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fe241bc28802df76", "level": "error", "message": {"text": "Dangling fetch: GET /api/videos/draft?videoId=${videoId} (app/(dashboard)/create/script/page.tsx:89)"}, "properties": {"repobilityId": "3995ea2fbdb3a0fc", "scanner": "scanner-primary", "fingerprint": "fe241bc28802df76", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-724e3bd6427d2993", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-script (app/(dashboard)/create/script/page.tsx:153)"}, "properties": {"repobilityId": "f37060a49f727dc4", "scanner": "scanner-primary", "fingerprint": "724e3bd6427d2993", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6d4073bcedd19ef3", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/script/page.tsx:189)"}, "properties": {"repobilityId": "4df5fbd364c94c39", "scanner": "scanner-primary", "fingerprint": "6d4073bcedd19ef3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-efa8c4f4774b98a8", "level": "error", "message": {"text": "Dangling fetch: POST /api/script-chat (app/(dashboard)/create/script/page.tsx:248)"}, "properties": {"repobilityId": "1b444aac8e4ab2a8", "scanner": "scanner-primary", "fingerprint": "efa8c4f4774b98a8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aaf2b64b045fa790", "level": "error", "message": {"text": "Dangling fetch: POST /api/style-previews (app/(dashboard)/create/script/page.tsx:325)"}, "properties": {"repobilityId": "a2d1d60430c891e3", "scanner": "scanner-primary", "fingerprint": "aaf2b64b045fa790", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5d3d901938f0afc7", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/script/page.tsx:361)"}, "properties": {"repobilityId": "0c0318cf9ac0326f", "scanner": "scanner-primary", "fingerprint": "5d3d901938f0afc7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2fae30aa33ede3a1", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-video (app/(dashboard)/create/script/page.tsx:377)"}, "properties": {"repobilityId": "c77d5b3682ec8f9e", "scanner": "scanner-primary", "fingerprint": "2fae30aa33ede3a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9729b6f1f0099372", "level": "error", "message": {"text": "Dangling fetch: POST /api/quick-preview (app/(dashboard)/create/script/page.tsx:429)"}, "properties": {"repobilityId": "e4029e16d6781fa0", "scanner": "scanner-primary", "fingerprint": "9729b6f1f0099372", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-124713e51f15aa8f", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/script/page.tsx:457)"}, "properties": {"repobilityId": "e11b02c046ab5f44", "scanner": "scanner-primary", "fingerprint": "124713e51f15aa8f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4935f6e4b90f2e8a", "level": "error", "message": {"text": "Dangling fetch: GET /api/videos/draft?videoId=${existingDraftId} (app/(dashboard)/create/_components/Step1Content.tsx:44)"}, "properties": {"repobilityId": "b15ffbb8830e6b36", "scanner": "scanner-primary", "fingerprint": "4935f6e4b90f2e8a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8049f33d39ff4abd", "level": "error", "message": {"text": "Dangling fetch: GET /api/clients/${clientId} (app/(dashboard)/create/_components/Step1Content.tsx:66)"}, "properties": {"repobilityId": "a326cd7f17205198", "scanner": "scanner-primary", "fingerprint": "8049f33d39ff4abd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8a8a91cc10d26190", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/_components/Step1Content.tsx:116)"}, "properties": {"repobilityId": "87a5a23f72a0f1a8", "scanner": "scanner-primary", "fingerprint": "8a8a91cc10d26190", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-493236c0d7e36f4f", "level": "error", "message": {"text": "Dangling fetch: POST /api/videos/draft (app/(dashboard)/create/_components/Step1Content.tsx:141)"}, "properties": {"repobilityId": "bf8ad3f1558043e8", "scanner": "scanner-primary", "fingerprint": "493236c0d7e36f4f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3cfefae5ffed235d", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/_components/Step1Content.tsx:170)"}, "properties": {"repobilityId": "edf222780485644b", "scanner": "scanner-primary", "fingerprint": "3cfefae5ffed235d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9b4bd6813926349c", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/videos/draft (app/(dashboard)/create/_components/Step1Content.tsx:186)"}, "properties": {"repobilityId": "6510a6c81fb1fadf", "scanner": "scanner-primary", "fingerprint": "9b4bd6813926349c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-57079f564dd5b61f", "level": "error", "message": {"text": "Dangling fetch: POST /api/style-preview-from-ref (app/(dashboard)/create/_components/Step1Content.tsx:244)"}, "properties": {"repobilityId": "15181cb3f968dbfe", "scanner": "scanner-primary", "fingerprint": "57079f564dd5b61f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e59d0437df5822d2", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract-url (app/(dashboard)/create/_components/Step1Content.tsx:306)"}, "properties": {"repobilityId": "71b90beb6277773e", "scanner": "scanner-primary", "fingerprint": "e59d0437df5822d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3f90ecddf498cd6f", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract (app/(dashboard)/create/_components/Step1Content.tsx:319)"}, "properties": {"repobilityId": "c414389a5646d8c5", "scanner": "scanner-primary", "fingerprint": "3f90ecddf498cd6f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-228ce1ff924ef821", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract-doc (app/(dashboard)/create/_components/Step1Content.tsx:334)"}, "properties": {"repobilityId": "16f2452f7f6ed3e0", "scanner": "scanner-primary", "fingerprint": "228ce1ff924ef821", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f301cbfa93a32e3f", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract (app/(dashboard)/create/_components/Step1Content.tsx:340)"}, "properties": {"repobilityId": "9cf7a3ea6956ffb1", "scanner": "scanner-primary", "fingerprint": "f301cbfa93a32e3f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e3fc1a45c94b004f", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract-url (app/(dashboard)/create/_components/Step1Content.tsx:406)"}, "properties": {"repobilityId": "9e1b28ed7e5c3b34", "scanner": "scanner-primary", "fingerprint": "e3fc1a45c94b004f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b23b59e321d3c04c", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract (app/(dashboard)/create/_components/Step1Content.tsx:421)"}, "properties": {"repobilityId": "42ebd19b0f404e55", "scanner": "scanner-primary", "fingerprint": "b23b59e321d3c04c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a3244d2282ea4c1c", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract-doc (app/(dashboard)/create/_components/Step1Content.tsx:436)"}, "properties": {"repobilityId": "e7488a827a5478e8", "scanner": "scanner-primary", "fingerprint": "a3244d2282ea4c1c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ecb9d2188953aab7", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract (app/(dashboard)/create/_components/Step1Content.tsx:442)"}, "properties": {"repobilityId": "1f7e7861655f52ce", "scanner": "scanner-primary", "fingerprint": "ecb9d2188953aab7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-75f0ea71aba310bb", "level": "error", "message": {"text": "Dangling fetch: GET /api/credits/balance (app/(dashboard)/create/_components/CreditCost.tsx:38)"}, "properties": {"repobilityId": "98b080c3b71d5a07", "scanner": "scanner-primary", "fingerprint": "75f0ea71aba310bb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e14ae3a1bb915b73", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-campaign (app/(dashboard)/social-campaigns/page.tsx:81)"}, "properties": {"repobilityId": "ba24baaa46a55fb6", "scanner": "scanner-primary", "fingerprint": "e14ae3a1bb915b73", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4f5c3723c24e505e", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-campaign (app/(dashboard)/social-campaigns/page.tsx:116)"}, "properties": {"repobilityId": "8c0c71ea65d01b47", "scanner": "scanner-primary", "fingerprint": "4f5c3723c24e505e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5327db1d26bac2c6", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat (app/(dashboard)/videos/[id]/page.tsx:436)"}, "properties": {"repobilityId": "0e7d60d7e628c855", "scanner": "scanner-primary", "fingerprint": "5327db1d26bac2c6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6369341e3f58bd64", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-video (app/(dashboard)/videos/[id]/page.tsx:531)"}, "properties": {"repobilityId": "a13768f9de7e1833", "scanner": "scanner-primary", "fingerprint": "6369341e3f58bd64", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-be2f87030e1e1b68", "level": "error", "message": {"text": "Dangling fetch: GET /api/video-analytics?videoId=${params.id} (app/(dashboard)/videos/[id]/page.tsx:606)"}, "properties": {"repobilityId": "30ec9705a4f1fa1f", "scanner": "scanner-primary", "fingerprint": "be2f87030e1e1b68", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-38d15e1905d76210", "level": "error", "message": {"text": "Dangling fetch: POST /api/follow-up/generate (app/(dashboard)/videos/[id]/page.tsx:626)"}, "properties": {"repobilityId": "26d02c047bc73455", "scanner": "scanner-primary", "fingerprint": "38d15e1905d76210", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e0ec314f96ebc3e0", "level": "error", "message": {"text": "Dangling fetch: POST /api/follow-up/send (app/(dashboard)/videos/[id]/page.tsx:683)"}, "properties": {"repobilityId": "06975bdc935f9a93", "scanner": "scanner-primary", "fingerprint": "e0ec314f96ebc3e0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bce1a6d1abea7578", "level": "error", "message": {"text": "Dangling fetch: POST /api/download-pdf (app/(dashboard)/videos/[id]/page.tsx:847)"}, "properties": {"repobilityId": "dd5b92ef6f7f9e4e", "scanner": "scanner-primary", "fingerprint": "bce1a6d1abea7578", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-78deff8fdaf0024d", "level": "error", "message": {"text": "Dangling fetch: POST /api/download-pptx (app/(dashboard)/videos/[id]/page.tsx:869)"}, "properties": {"repobilityId": "f8261ed2c6ab1c00", "scanner": "scanner-primary", "fingerprint": "78deff8fdaf0024d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7f6a4e81430f351b", "level": "error", "message": {"text": "Dangling fetch: POST /api/translate-presentation (app/(dashboard)/videos/[id]/page.tsx:891)"}, "properties": {"repobilityId": "a659cb5d091c503a", "scanner": "scanner-primary", "fingerprint": "7f6a4e81430f351b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cefe29ed3f9f0537", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-social-post (app/(dashboard)/videos/[id]/page.tsx:1478)"}, "properties": {"repobilityId": "d85da5907cd2e8c5", "scanner": "scanner-primary", "fingerprint": "cefe29ed3f9f0537", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7422a17a8947b794", "level": "error", "message": {"text": "Dangling fetch: POST /api/re-render (app/(dashboard)/videos/[id]/page.tsx:1605)"}, "properties": {"repobilityId": "ee30419bafafc95d", "scanner": "scanner-primary", "fingerprint": "7422a17a8947b794", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fee0bb1ae599e150", "level": "error", "message": {"text": "Dangling fetch: POST /api/edit-slide (app/(dashboard)/videos/[id]/page.tsx:1657)"}, "properties": {"repobilityId": "34b1c711bb9e3edd", "scanner": "scanner-primary", "fingerprint": "fee0bb1ae599e150", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-88b016ca9b342d91", "level": "error", "message": {"text": "Dangling fetch: GET /api/clients?${params} (app/(dashboard)/clients/page.tsx:57)"}, "properties": {"repobilityId": "6930f1af00e01388", "scanner": "scanner-primary", "fingerprint": "88b016ca9b342d91", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ebd6e9925657bd0d", "level": "error", "message": {"text": "Dangling fetch: POST /api/clients (app/(dashboard)/clients/page.tsx:81)"}, "properties": {"repobilityId": "52d9d2f49be67e59", "scanner": "scanner-primary", "fingerprint": "ebd6e9925657bd0d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1626c45a578c0205", "level": "error", "message": {"text": "Dangling fetch: POST /api/clients/import (app/(dashboard)/clients/page.tsx:116)"}, "properties": {"repobilityId": "e44422b18b3e56c3", "scanner": "scanner-primary", "fingerprint": "1626c45a578c0205", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4ad2706bb130c60a", "level": "error", "message": {"text": "Dangling fetch: GET /api/clients/export (app/(dashboard)/clients/page.tsx:136)"}, "properties": {"repobilityId": "8ab9e98ff5fdfb9a", "scanner": "scanner-primary", "fingerprint": "4ad2706bb130c60a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c165163dbe6f7b77", "level": "error", "message": {"text": "Dangling fetch: GET /api/clients/${clientId} (app/(dashboard)/clients/[id]/page.tsx:123)"}, "properties": {"repobilityId": "454b5c1cacc28bc4", "scanner": "scanner-primary", "fingerprint": "c165163dbe6f7b77", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-64a8479effcf1919", "level": "error", "message": {"text": "Dangling fetch: GET /api/clients/${clientId}/activities (app/(dashboard)/clients/[id]/page.tsx:144)"}, "properties": {"repobilityId": "5309dd078b58a7e9", "scanner": "scanner-primary", "fingerprint": "64a8479effcf1919", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9831e0b6a39ba8a9", "level": "error", "message": {"text": "Dangling fetch: GET /api/clients/${clientId}/videos (app/(dashboard)/clients/[id]/page.tsx:149)"}, "properties": {"repobilityId": "70c05f36675addc0", "scanner": "scanner-primary", "fingerprint": "9831e0b6a39ba8a9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-db401149fb16b589", "level": "error", "message": {"text": "Dangling fetch: GET /api/sent-emails?email=${encodeURIComponent(client.email)} (app/(dashboard)/clients/[id]/page.tsx:155)"}, "properties": {"repobilityId": "3c2c9901886272bc", "scanner": "scanner-primary", "fingerprint": "db401149fb16b589", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-877b0c8c16197bef", "level": "error", "message": {"text": "Dangling fetch: GET /api/quotes?clientEmail=${encodeURIComponent(client.email)} (app/(dashboard)/clients/[id]/page.tsx:160)"}, "properties": {"repobilityId": "e8647d48f5366bcb", "scanner": "scanner-primary", "fingerprint": "877b0c8c16197bef", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-240068639b9d721e", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/clients/${clientId} (app/(dashboard)/clients/[id]/page.tsx:183)"}, "properties": {"repobilityId": "4cc1a33f13010702", "scanner": "scanner-primary", "fingerprint": "240068639b9d721e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6693aa60013a6c4a", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/clients/${clientId} (app/(dashboard)/clients/[id]/page.tsx:213)"}, "properties": {"repobilityId": "4cdb3659256b2cca", "scanner": "scanner-primary", "fingerprint": "6693aa60013a6c4a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-22803464dfcf7105", "level": "error", "message": {"text": "Dangling fetch: POST /api/clients/${clientId}/activities (app/(dashboard)/clients/[id]/page.tsx:228)"}, "properties": {"repobilityId": "31734cd74325b05f", "scanner": "scanner-primary", "fingerprint": "22803464dfcf7105", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b5636ac0a825a479", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/clients/${clientId} (app/(dashboard)/clients/[id]/page.tsx:246)"}, "properties": {"repobilityId": "cb82b5243f8dde1e", "scanner": "scanner-primary", "fingerprint": "b5636ac0a825a479", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b1323156cda98280", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/clients/${clientId} (app/(dashboard)/clients/[id]/page.tsx:259)"}, "properties": {"repobilityId": "6168d4e12b43515d", "scanner": "scanner-primary", "fingerprint": "b1323156cda98280", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-98e03b66d5d4d28c", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-flyer (app/(dashboard)/flyers/page.tsx:164)"}, "properties": {"repobilityId": "bfcde1f841aa9b67", "scanner": "scanner-primary", "fingerprint": "98e03b66d5d4d28c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a80a5002dc9dd094", "level": "error", "message": {"text": "Dangling fetch: POST /api/course-builder (app/(dashboard)/course-builder/page.tsx:50)"}, "properties": {"repobilityId": "551e0308eeec1751", "scanner": "scanner-primary", "fingerprint": "a80a5002dc9dd094", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-07433d3061cd0730", "level": "error", "message": {"text": "Dangling fetch: POST /api/course-builder (app/(dashboard)/course-builder/page.tsx:100)"}, "properties": {"repobilityId": "e8436332b7bf6d83", "scanner": "scanner-primary", "fingerprint": "07433d3061cd0730", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e8ccd115d272149e", "level": "error", "message": {"text": "Dangling fetch: POST /api/template-demo/extract (app/(dashboard)/template-demo/page.tsx:39)"}, "properties": {"repobilityId": "f06aaea54d4b088b", "scanner": "scanner-primary", "fingerprint": "e8ccd115d272149e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5f2ddda5de09c37f", "level": "error", "message": {"text": "Dangling fetch: POST /api/template-demo/generate (app/(dashboard)/template-demo/page.tsx:85)"}, "properties": {"repobilityId": "61a06a4cb9341d10", "scanner": "scanner-primary", "fingerprint": "5f2ddda5de09c37f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8ece1614b16ea380", "level": "error", "message": {"text": "Dangling fetch: POST /api/upload-asset (app/(dashboard)/quick/page.tsx:87)"}, "properties": {"repobilityId": "6686a3a2bc5cfcdb", "scanner": "scanner-primary", "fingerprint": "8ece1614b16ea380", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eba46fc53b8f7524", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract (app/(dashboard)/quick/page.tsx:118)"}, "properties": {"repobilityId": "ceca9a07a587b28d", "scanner": "scanner-primary", "fingerprint": "eba46fc53b8f7524", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0e93660b919f154b", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract-url (app/(dashboard)/quick/page.tsx:128)"}, "properties": {"repobilityId": "0b602f0aa63953e9", "scanner": "scanner-primary", "fingerprint": "0e93660b919f154b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-21eaf5098c828249", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract-text (app/(dashboard)/quick/page.tsx:141)"}, "properties": {"repobilityId": "28f55788f9fc1df1", "scanner": "scanner-primary", "fingerprint": "21eaf5098c828249", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-99ff0cc10d380537", "level": "error", "message": {"text": "Dangling fetch: POST /api/auto-select (app/(dashboard)/quick/page.tsx:160)"}, "properties": {"repobilityId": "0db04b2b186ed8eb", "scanner": "scanner-primary", "fingerprint": "99ff0cc10d380537", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a83e11fcac37c5cf", "level": "error", "message": {"text": "Dangling fetch: POST /api/videos (app/(dashboard)/quick/page.tsx:171)"}, "properties": {"repobilityId": "474708848b4a71b2", "scanner": "scanner-primary", "fingerprint": "a83e11fcac37c5cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-736fbb0bc17cd2e1", "level": "error", "message": {"text": "Dangling fetch: POST /api/brand-kit (app/(dashboard)/brand-kit/page.tsx:155)"}, "properties": {"repobilityId": "c0e4f4c50076646c", "scanner": "scanner-primary", "fingerprint": "736fbb0bc17cd2e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-200315f4f6c8f124", "level": "error", "message": {"text": "Dangling fetch: POST /api/brand-kit (app/(dashboard)/brand-kit/page.tsx:210)"}, "properties": {"repobilityId": "d2c7344f2ad29b08", "scanner": "scanner-primary", "fingerprint": "200315f4f6c8f124", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f93cbcf1bdbadaaa", "level": "error", "message": {"text": "Dangling fetch: POST /api/brand-kit (app/(dashboard)/brand-kit/page.tsx:231)"}, "properties": {"repobilityId": "88bc15bcaa95fe12", "scanner": "scanner-primary", "fingerprint": "f93cbcf1bdbadaaa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d9a193e51d3e2890", "level": "error", "message": {"text": "Dangling fetch: POST /api/brand-kit (app/(dashboard)/brand-kit/page.tsx:254)"}, "properties": {"repobilityId": "5673ac0697a273f7", "scanner": "scanner-primary", "fingerprint": "d9a193e51d3e2890", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d79ab496172da94f", "level": "error", "message": {"text": "Dangling fetch: POST /api/brand-kit (app/(dashboard)/brand-kit/page.tsx:297)"}, "properties": {"repobilityId": "a8a65f4bcba3f006", "scanner": "scanner-primary", "fingerprint": "d79ab496172da94f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3838f75ee9ac505b", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-headshot (app/(dashboard)/headshot/page.tsx:76)"}, "properties": {"repobilityId": "2980f4942c7818ee", "scanner": "scanner-primary", "fingerprint": "3838f75ee9ac505b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ba9f2a293a140287", "level": "error", "message": {"text": "Dangling fetch: GET /api/social-accounts (app/(dashboard)/social-media/page.tsx:77)"}, "properties": {"repobilityId": "80367734cf1b84d3", "scanner": "scanner-primary", "fingerprint": "ba9f2a293a140287", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ce54e22d832f058d", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-media/generate (app/(dashboard)/social-media/page.tsx:153)"}, "properties": {"repobilityId": "b3c0b7540aa28a1b", "scanner": "scanner-primary", "fingerprint": "ce54e22d832f058d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-56a0e67f12c480c1", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-media/post (app/(dashboard)/social-media/page.tsx:177)"}, "properties": {"repobilityId": "fc3e6402a7dceb2a", "scanner": "scanner-primary", "fingerprint": "56a0e67f12c480c1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6714c5933ca6a3f1", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-media/generate (app/(dashboard)/social-media/page.tsx:202)"}, "properties": {"repobilityId": "b31c7a0b3b273e47", "scanner": "scanner-primary", "fingerprint": "6714c5933ca6a3f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-72be5dcdc755b462", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-media/post (app/(dashboard)/social-media/page.tsx:223)"}, "properties": {"repobilityId": "38d6afac1883c278", "scanner": "scanner-primary", "fingerprint": "72be5dcdc755b462", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-847611532209b7e7", "level": "error", "message": {"text": "Dangling fetch: POST /api/download-pdf (app/(dashboard)/infographics/[id]/page.tsx:77)"}, "properties": {"repobilityId": "e433ad2a481d6218", "scanner": "scanner-primary", "fingerprint": "847611532209b7e7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0453c895ce607b45", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-video (app/(dashboard)/infographics/[id]/page.tsx:111)"}, "properties": {"repobilityId": "91e308f54bfc7c33", "scanner": "scanner-primary", "fingerprint": "0453c895ce607b45", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eef88d423cd1b730", "level": "error", "message": {"text": "Dangling fetch: POST /api/stripe/checkout (app/(dashboard)/pricing/page.tsx:29)"}, "properties": {"repobilityId": "9e2a5b7510545baf", "scanner": "scanner-primary", "fingerprint": "eef88d423cd1b730", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7614641fddb44732", "level": "error", "message": {"text": "Dangling fetch: POST /api/stripe/portal (app/(dashboard)/pricing/page.tsx:46)"}, "properties": {"repobilityId": "02eb6eb34e57cb38", "scanner": "scanner-primary", "fingerprint": "7614641fddb44732", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc6391079124f36d", "level": "error", "message": {"text": "Dangling fetch: POST /api/upload-photo (app/(onboarding)/setup/page.tsx:140)"}, "properties": {"repobilityId": "3ceb4dc2e0c0844f", "scanner": "scanner-primary", "fingerprint": "dc6391079124f36d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-19d7f52a1131c3ef", "level": "error", "message": {"text": "Dangling fetch: POST /api/upload-logo (app/(onboarding)/setup/page.tsx:158)"}, "properties": {"repobilityId": "3923a9266ffc9ae9", "scanner": "scanner-primary", "fingerprint": "19d7f52a1131c3ef", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-077db559ca7ccf72", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract-logo-colors (app/(onboarding)/setup/page.tsx:164)"}, "properties": {"repobilityId": "a0d9466585f4a2d0", "scanner": "scanner-primary", "fingerprint": "077db559ca7ccf72", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-40279d150400462b", "level": "error", "message": {"text": "Dangling fetch: POST /api/voice-preview (app/(onboarding)/setup/page.tsx:235)"}, "properties": {"repobilityId": "8829e8b604229dfe", "scanner": "scanner-primary", "fingerprint": "40279d150400462b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f5e835bf9c6e028e", "level": "error", "message": {"text": "Dangling fetch: POST /api/stripe/checkout (app/(onboarding)/setup/page.tsx:803)"}, "properties": {"repobilityId": "7ad88ba7c428c3c0", "scanner": "scanner-primary", "fingerprint": "f5e835bf9c6e028e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e9be17cc3e5d71fa", "level": "error", "message": {"text": "Dangling fetch: POST /api/create-setup-intent (app/(auth)/setup-payment/page.tsx:22)"}, "properties": {"repobilityId": "69717e3bb6c61e95", "scanner": "scanner-primary", "fingerprint": "e9be17cc3e5d71fa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-071c56fc3504bb65", "level": "error", "message": {"text": "Dangling fetch: POST /api/confirm-card (app/(auth)/setup-payment/page.tsx:56)"}, "properties": {"repobilityId": "92454d47859a2eb9", "scanner": "scanner-primary", "fingerprint": "071c56fc3504bb65", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2af020ad14493af4", "level": "error", "message": {"text": "Dangling fetch: POST https://gmail.googleapis.com/gmail/v1/users/me/messages/send (app/_lib/email.ts:121)"}, "properties": {"repobilityId": "889a806be64114b3", "scanner": "scanner-primary", "fingerprint": "2af020ad14493af4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d6fa529a8397db99", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.microsoft.com/v1.0/me/sendMail (app/_lib/email.ts:148)"}, "properties": {"repobilityId": "b268850493bffd51", "scanner": "scanner-primary", "fingerprint": "d6fa529a8397db99", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-294df298ae051735", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (app/_lib/email.ts:182)"}, "properties": {"repobilityId": "82f6ef90acdaa9ed", "scanner": "scanner-primary", "fingerprint": "294df298ae051735", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b7624a05a1d7821a", "level": "error", "message": {"text": "Dangling fetch: POST https://login.microsoftonline.com/common/oauth2/v2.0/token (app/_lib/email.ts:197)"}, "properties": {"repobilityId": "c0d2aa6da650108b", "scanner": "scanner-primary", "fingerprint": "b7624a05a1d7821a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-70f9c0c4a9ad4dc5", "level": "error", "message": {"text": "Dangling fetch: GET https://www.googleapis.com/webfonts/v1/webfonts?key=${apiKey}&sort=popularity (app/_lib/google-fonts.ts:17)"}, "properties": {"repobilityId": "2aece7ce8c63c4b3", "scanner": "scanner-primary", "fingerprint": "70f9c0c4a9ad4dc5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ba97e7ac4f81bf9c", "level": "error", "message": {"text": "Dangling fetch: POST https://api.cartesia.ai/tts/bytes (app/_lib/tts-cartesia.ts:19)"}, "properties": {"repobilityId": "7f6647d305610350", "scanner": "scanner-primary", "fingerprint": "ba97e7ac4f81bf9c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e99c755902aa6e3d", "level": "error", "message": {"text": "Dangling fetch: POST /api/extract-logo-colors (app/_lib/logo-colors.ts:13)"}, "properties": {"repobilityId": "4b554c57a6ab19cc", "scanner": "scanner-primary", "fingerprint": "e99c755902aa6e3d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4e8e1d6a0655e966", "level": "error", "message": {"text": "Dangling fetch: POST /api/stripe/checkout (app/_components/UpgradeModal.tsx:18)"}, "properties": {"repobilityId": "ed60327b18c29fe6", "scanner": "scanner-primary", "fingerprint": "4e8e1d6a0655e966", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-80c882231defe823", "level": "error", "message": {"text": "Dangling fetch: POST /api/help-chat (app/_components/HelpChatWidget.tsx:38)"}, "properties": {"repobilityId": "c8a9ff28baa8643f", "scanner": "scanner-primary", "fingerprint": "80c882231defe823", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f77c3029aa2fad43", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/impersonate (app/_components/ImpersonationBanner.tsx:31)"}, "properties": {"repobilityId": "de6f534fb57ec8e0", "scanner": "scanner-primary", "fingerprint": "f77c3029aa2fad43", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d95867fcf3a72ea0", "level": "error", "message": {"text": "Dangling fetch: GET /api/demo-video/${id} (app/_components/DemoForm.tsx:71)"}, "properties": {"repobilityId": "444f44c3b2859373", "scanner": "scanner-primary", "fingerprint": "d95867fcf3a72ea0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-473451176b8404f7", "level": "error", "message": {"text": "Dangling fetch: POST /api/demo-video (app/_components/DemoForm.tsx:103)"}, "properties": {"repobilityId": "28a2ade382febff9", "scanner": "scanner-primary", "fingerprint": "473451176b8404f7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f8e98c320e52e06b", "level": "error", "message": {"text": "Dangling fetch: POST /api/email-connections (app/_components/SmtpSetupModal.tsx:27)"}, "properties": {"repobilityId": "f3f8d7584cc6e3db", "scanner": "scanner-primary", "fingerprint": "f8e98c320e52e06b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9d770e1f8ecdf338", "level": "error", "message": {"text": "Dangling fetch: GET /api/templates (app/_components/BrandStylePicker.tsx:54)"}, "properties": {"repobilityId": "9e3b83feaa4fd552", "scanner": "scanner-primary", "fingerprint": "9d770e1f8ecdf338", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7c808080b181ef00", "level": "error", "message": {"text": "Dangling fetch: POST /api/templates/from-reference (app/_components/BrandStylePicker.tsx:89)"}, "properties": {"repobilityId": "1c064ac98c7f04a7", "scanner": "scanner-primary", "fingerprint": "7c808080b181ef00", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ed8b3eaff7fbdd19", "level": "error", "message": {"text": "Dangling fetch: GET /api/notifications (app/_components/NotificationBell.tsx:47)"}, "properties": {"repobilityId": "8fdf8540dda6d75a", "scanner": "scanner-primary", "fingerprint": "ed8b3eaff7fbdd19", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-930d0978ed4b211a", "level": "error", "message": {"text": "Dangling fetch: POST /api/notifications (app/_components/NotificationBell.tsx:72)"}, "properties": {"repobilityId": "f0be266ae5e200d8", "scanner": "scanner-primary", "fingerprint": "930d0978ed4b211a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-244ce3a1d1331360", "level": "error", "message": {"text": "Dangling fetch: POST /api/notifications (app/_components/NotificationBell.tsx:82)"}, "properties": {"repobilityId": "5672a5fbacfa8483", "scanner": "scanner-primary", "fingerprint": "244ce3a1d1331360", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-835ab7f4cbe089fc", "level": "error", "message": {"text": "Dangling fetch: POST /api/notifications (app/_components/NotificationBell.tsx:93)"}, "properties": {"repobilityId": "0ea1ae87619662e1", "scanner": "scanner-primary", "fingerprint": "835ab7f4cbe089fc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9eeeb00df61ad158", "level": "error", "message": {"text": "Dangling fetch: POST /api/credits/buy (app/_components/BuyCreditsModal.tsx:29)"}, "properties": {"repobilityId": "ea40f0b9da483370", "scanner": "scanner-primary", "fingerprint": "9eeeb00df61ad158", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2dfcf199043806f6", "level": "error", "message": {"text": "Dangling fetch: GET /api/social-share (app/_components/SocialShareButton.tsx:27)"}, "properties": {"repobilityId": "995d35413141b3ea", "scanner": "scanner-primary", "fingerprint": "2dfcf199043806f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-767a0d583189d7c4", "level": "error", "message": {"text": "Dangling fetch: POST /api/social-share (app/_components/SocialShareButton.tsx:38)"}, "properties": {"repobilityId": "b20dccd77babcf1b", "scanner": "scanner-primary", "fingerprint": "767a0d583189d7c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e6e8c7addfbd95c1", "level": "error", "message": {"text": "Dangling fetch: GET /api/social-share (app/_components/SocialShareButton.tsx:53)"}, "properties": {"repobilityId": "2542315a3d1ae80d", "scanner": "scanner-primary", "fingerprint": "e6e8c7addfbd95c1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5f3d25c46df00714", "level": "error", "message": {"text": "Dangling fetch: GET /api/credits/balance (app/_components/Header.tsx:42)"}, "properties": {"repobilityId": "2a02961c639388fc", "scanner": "scanner-primary", "fingerprint": "5f3d25c46df00714", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0b2b2d3e833e7b97", "level": "error", "message": {"text": "Dangling fetch: GET /api/email-connections (app/_components/SendEmailModal.tsx:26)"}, "properties": {"repobilityId": "c787afe65c24f68e", "scanner": "scanner-primary", "fingerprint": "0b2b2d3e833e7b97", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b161de7c49a39d59", "level": "error", "message": {"text": "Dangling fetch: POST /api/send-email (app/_components/SendEmailModal.tsx:43)"}, "properties": {"repobilityId": "ec34a5eb70ac4db8", "scanner": "scanner-primary", "fingerprint": "b161de7c49a39d59", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e9c2ea0879bd3103", "level": "error", "message": {"text": "Dangling fetch: POST /api/contact (app/(public)/contact/page.tsx:21)"}, "properties": {"repobilityId": "dc643bcf8eb3acef", "scanner": "scanner-primary", "fingerprint": "e9c2ea0879bd3103", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a9b1b381482265de", "level": "error", "message": {"text": "Dangling fetch: POST /api/public/unsubscribe/${contactId} (app/(public)/unsubscribe/[id]/page.tsx:15)"}, "properties": {"repobilityId": "fe302e3ca3aec189", "scanner": "scanner-primary", "fingerprint": "a9b1b381482265de", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-390451320dfc65db", "level": "error", "message": {"text": "Dangling fetch: POST /api/track-view (app/(public)/watch/[id]/page.tsx:779)"}, "properties": {"repobilityId": "8a3ffd3715e00dd3", "scanner": "scanner-primary", "fingerprint": "390451320dfc65db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5083f34ea4422c4e", "level": "error", "message": {"text": "Dangling fetch: GET /api/public/watch/${params.id as string} (app/(public)/watch/[id]/page.tsx:793)"}, "properties": {"repobilityId": "4eebb0178d869b2f", "scanner": "scanner-primary", "fingerprint": "5083f34ea4422c4e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-58ca13020d35a4fe", "level": "error", "message": {"text": "Dangling fetch: POST /api/quotes/pay (app/(public)/watch/[id]/page.tsx:865)"}, "properties": {"repobilityId": "3f90874d0586cdb6", "scanner": "scanner-primary", "fingerprint": "58ca13020d35a4fe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e34f11bde8032cc6", "level": "error", "message": {"text": "Dangling fetch: POST /api/download-pptx (app/(public)/watch/[id]/page.tsx:1261)"}, "properties": {"repobilityId": "0c1110432cbc3b9b", "scanner": "scanner-primary", "fingerprint": "e34f11bde8032cc6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-31b50528e082d8e9", "level": "error", "message": {"text": "Dangling fetch: POST /api/capture-lead (app/(public)/watch/[id]/page.tsx:1737)"}, "properties": {"repobilityId": "c6f14cdc49fd65af", "scanner": "scanner-primary", "fingerprint": "31b50528e082d8e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e491109b59e65c77", "level": "error", "message": {"text": "Dangling fetch: GET /api/public/campaign-view/${contactId} (app/(public)/m/[id]/page.tsx:55)"}, "properties": {"repobilityId": "7220a8978f47835b", "scanner": "scanner-primary", "fingerprint": "e491109b59e65c77", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-36b47dfdae6944c6", "level": "error", "message": {"text": "Dangling fetch: POST /api/track-view (app/(public)/m/[id]/page.tsx:72)"}, "properties": {"repobilityId": "7027110bd0d87e4c", "scanner": "scanner-primary", "fingerprint": "36b47dfdae6944c6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9da330685688010a", "level": "error", "message": {"text": "Dangling fetch: POST /api/try-demo (app/(public)/try/[slug]/page.tsx:41)"}, "properties": {"repobilityId": "304a2487053def08", "scanner": "scanner-primary", "fingerprint": "9da330685688010a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b3e65cd3231fe72", "level": "error", "message": {"text": "Dangling fetch: POST /api/try-demo (app/(public)/try/[slug]/creating/page.tsx:48)"}, "properties": {"repobilityId": "87cef7e01061a8ae", "scanner": "scanner-primary", "fingerprint": "3b3e65cd3231fe72", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8642db2bff0d4c18", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-logo-kit (e2e/integration.spec.ts:422)"}, "properties": {"repobilityId": "d5e13b855d1f439f", "scanner": "scanner-primary", "fingerprint": "8642db2bff0d4c18", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dbdf34bf4d062091", "level": "error", "message": {"text": "Dangling fetch: POST /api/pre-generate-audio (e2e/integration.spec.ts:633)"}, "properties": {"repobilityId": "284025dfb3857c54", "scanner": "scanner-primary", "fingerprint": "dbdf34bf4d062091", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a9690717cffe7298", "level": "error", "message": {"text": "Dangling fetch: POST /api/generate-slide (e2e/integration.spec.ts:660)"}, "properties": {"repobilityId": "5b29a046ee930dd6", "scanner": "scanner-primary", "fingerprint": "a9690717cffe7298", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0a58683141f8a8ff", "level": "note", "message": {"text": "Unused endpoint: POST /assemble"}, "properties": {"repobilityId": "278e8de074f57b5b", "scanner": "scanner-primary", "fingerprint": "0a58683141f8a8ff", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e228aef5c5986931", "level": "note", "message": {"text": "Unused endpoint: POST /convert-to-pdf"}, "properties": {"repobilityId": "efa41baaad60596f", "scanner": "scanner-primary", "fingerprint": "e228aef5c5986931", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-37583ca7e4c862e2", "level": "note", "message": {"text": "Unused endpoint: POST /convert"}, "properties": {"repobilityId": "ac6e1e145c84f0d5", "scanner": "scanner-primary", "fingerprint": "37583ca7e4c862e2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-970eb92d6ec2bfaa", "level": "note", "message": {"text": "Unused endpoint: POST /generate"}, "properties": {"repobilityId": "ec6630e4cba22d47", "scanner": "scanner-primary", "fingerprint": "970eb92d6ec2bfaa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-41b50ad8cb07547f", "level": "note", "message": {"text": "Unused endpoint: POST /extract-document"}, "properties": {"repobilityId": "0a184404aeea83b1", "scanner": "scanner-primary", "fingerprint": "41b50ad8cb07547f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}