{"record":{"id":"21ba411342d2d393","repo":"ruvnet/ruflo","slug":"missing-url-parameter","errorCode":null,"errorMessage":"Missing 'url' parameter","messagePattern":"Missing 'url' parameter","errorType":"http","errorClass":"HttpError","httpStatus":400,"severity":"error","filePath":"ruflo/src/ruvocal/src/routes/api/fetch-url/+server.ts","lineNumber":54,"sourceCode":"\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tassertSafeIp(entry.address, hostname);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\treturn callback(e as Error, \"\", 4);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn callback(null, address, family);\n\t\t\t});\n\t\t},\n\t},\n});\n\nexport async function GET({ url }) {\n\tconst targetUrl = url.searchParams.get(\"url\");\n\n\tif (!targetUrl) {\n\t\tlogger.warn(\"Missing 'url' parameter\");\n\t\tthrow error(400, \"Missing 'url' parameter\");\n\t}\n\n\tif (!isValidUrl(targetUrl)) {\n\t\tlogger.warn({ targetUrl }, \"Invalid or unsafe URL (only HTTPS is supported)\");\n\t\tthrow error(400, \"Invalid or unsafe URL (only HTTPS is supported)\");\n\t}\n\n\t// Fetch with timeout, following redirects manually to validate each hop\n\tconst controller = new AbortController();\n\tconst timeoutId = setTimeout(() => controller.abort(), FETCH_TIMEOUT);\n\n\tlet currentUrl = targetUrl;\n\tlet response: Awaited<ReturnType<typeof fetch>>;\n\tlet redirectCount = 0;\n\n\ttry {\n\t\t// eslint-disable-next-line no-constant-condition\n\t\twhile (true) {","sourceCodeStart":36,"sourceCodeEnd":72,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/ruflo/src/ruvocal/src/routes/api/fetch-url/+server.ts#L36-L72","documentation":"SvelteKit 400 error thrown by the fetch-url GET handler when the required 'url' query parameter is absent, so there is nothing to fetch or validate.","triggerScenarios":"Thrown at ruflo/src/ruvocal/src/routes/api/fetch-url/+server.ts:54 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass the 'url' query parameter or JSON field in the request to /api/fetch-url."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fa13ee4ad60ac2090b1480656eb233521790d640","analyzedAt":"2026-08-18T21:34:22.708Z","contentChangedAt":"2026-08-18T21:34:22.708Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}