{"record":{"id":"65083fbfcddd2867","repo":"rustfs/rustfs","slug":"connect-endpoint-must-be-an-https-base-url-without","errorCode":null,"errorMessage":"Connect endpoint must be an HTTPS base URL without credentials, query, or fragment","messagePattern":"Connect endpoint must be an HTTPS base URL without credentials, query, or fragment","errorType":"validation","errorClass":"ClientError","httpStatus":null,"severity":"error","filePath":"rustfs/src/connect/client.rs","lineNumber":522,"sourceCode":"\n#[derive(Deserialize)]\nstruct ErrorDetail {\n    #[serde(default)]\n    reason: String,\n}\n\nasync fn decode_reason(mut response: reqwest::Response) -> Option<String> {\n    let body = read_body(&mut response).await.ok()?;\n    serde_json::from_slice::<ErrorEnvelope>(&body)\n        .ok()?\n        .details\n        .into_iter()\n        .find_map(|detail| (!detail.reason.is_empty()).then_some(detail.reason))\n}\n\n#[derive(Debug, thiserror::Error)]\npub enum ClientError {\n    #[error(\"Connect endpoint must be an HTTPS base URL without credentials, query, or fragment\")]\n    Endpoint,\n    #[error(\"Connect root CA configuration is invalid\")]\n    RootCertificate,\n    #[error(\n        \"Connect registration has a pending attempt for a different token; restore the original protected token configuration\"\n    )]\n    PendingRegistration,\n    #[error(\n        \"Connect credential rotation has an unfinished attempt for a different current certificate; inspect the local credential store\"\n    )]\n    PendingRotation,\n    #[error(\"RustFS is not registered with Connect\")]\n    NotRegistered,\n    #[error(\"the Connect device private key is missing; restore device.key before using the stored certificate\")]\n    IdentityMissing,\n    #[error(\"the Connect device certificate has expired; call ConnectClient::reenroll with a fresh registration token\")]\n    CredentialExpired,\n    #[error(\"the Connect device certificate is not yet valid; fix local clock skew or call ConnectClient::reenroll\")]","sourceCodeStart":504,"sourceCodeEnd":540,"githubUrl":"https://github.com/rustfs/rustfs/blob/201c653dcd34c2a01b9aec5991ed76176b342118/rustfs/src/connect/client.rs#L504-L540","documentation":"ClientError::Endpoint fires during ConnectClient construction when RUSTFS_CONNECT_ENDPOINT fails strict URL validation: it must be an HTTPS base URL with no embedded credentials, query string, or fragment. It is a configuration guard, not a network error.","triggerScenarios":"Thrown at rustfs/src/connect/client.rs:522 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set RUSTFS_CONNECT_ENDPOINT to a plain https://host[:port] base URL","Remove any userinfo, query, or fragment components from the endpoint","Ensure the URL scheme is https, not http"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"201c653dcd34c2a01b9aec5991ed76176b342118","analyzedAt":"2026-08-23T16:57:04.676Z","contentChangedAt":"2026-08-23T16:57:04.676Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}