tinyhumansai/openhuman · error · anyhow::Error

missing required object argument `payload`

Error message

missing required object argument `payload`

What it means

A billing webhook/mutator tool requiring a `payload` object was invoked without it (missing, or the cloned value absent). Guard before the external-effect call; the payload shape beyond `object` is validated downstream by the domain/backend.

Source

Thrown at src/openhuman/hosted/billing/tools.rs:470

    }
    fn parameters_schema(&self) -> serde_json::Value {
        json!({
            "type": "object",
            "properties": { "payload": { "type": "object" } },
            "required": ["payload"]
        })
    }
    fn permission_level(&self) -> PermissionLevel {
        PermissionLevel::Write
    }
    fn external_effect(&self) -> bool {
        true
    }
    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
        let payload = args
            .get("payload")
            .cloned()
            .ok_or_else(|| anyhow::anyhow!("missing required object argument `payload`"))?;
        emit!(
            billing::update_auto_recharge(&self.config, payload).await,
            "billing_update_auto_recharge"
        )
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use crate::openhuman::tools::traits::ToolScope;

    fn cfg() -> Arc<Config> {
        Arc::new(Config::default())
    }

    #[test]
    fn names_and_levels() {

View on GitHub (pinned to 7491200858)

Solutions

  1. Include `payload` as a JSON object with the fields the billing endpoint expects
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/openhuman/hosted/billing/tools.rs:470 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/edd80415b6f5c481. Report an issue: GitHub.