{"record":{"id":"7bf3ebb68739b673","repo":"tinyhumansai/openhuman","slug":"message-id-is-required","errorCode":null,"errorMessage":"message_id is required","messagePattern":"message_id is required","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/api/rest.rs","lineNumber":995,"sourceCode":"    /// atomic-final delivery).\n    ///\n    /// **The deployed backend does not implement this route yet** (#5230): its\n    /// channel router has `POST /:channel/messages` and `DELETE\n    /// /:channel/messages/:messageId` only, so every call currently returns the\n    /// unmatched-route 404, which [`authed_json`](Self::authed_json) surfaces as\n    /// [`BackendApiError::ChannelEditUnsupported`]. Callers must degrade rather\n    /// than treat that as the message having been deleted. Keep this method: it\n    /// starts working unchanged the moment the backend adds the route.\n    pub async fn send_channel_edit(\n        &self,\n        channel: &str,\n        message_id: &str,\n        bearer_jwt: &str,\n        edit_body: Value,\n    ) -> Result<Value> {\n        let channel = channel.trim().trim_matches('/');\n        anyhow::ensure!(!channel.is_empty(), \"channel is required\");\n        anyhow::ensure!(!message_id.is_empty(), \"message_id is required\");\n        let encoded_channel = urlencoding::encode(channel);\n        let encoded_id = urlencoding::encode(message_id);\n        self.authed_json(\n            bearer_jwt,\n            Method::PATCH,\n            &format!(\"channels/{encoded_channel}/messages/{encoded_id}\"),\n            Some(edit_body),\n        )\n        .await\n    }\n\n    /// Deletes a message from a communication channel. Used to clean up\n    /// ephemeral messages (e.g. thinking indicators) after the final\n    /// response has been delivered.\n    pub async fn send_channel_delete(\n        &self,\n        channel: &str,\n        message_id: &str,","sourceCodeStart":977,"sourceCodeEnd":1013,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/api/rest.rs#L977-L1013","documentation":"send_channel_edit requires the target message identifier; the message_id argument is empty, so there is no message to address the edit to and the call is rejected client-side.","triggerScenarios":"Thrown at src/api/rest.rs:995 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass the message_id of the previously sent message","Verify the id was copied from the send response, not from a truncated field"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}