Skip to main content

Overview

The update_user function updates an existing user’s profile information.

Function Signature

pub async fn update_user(
    user_id: &str,
    request: UpdateUserRequest
) -> Result<User>

Parameters

user_id
&str
required
The unique identifier of the user to update
request
UpdateUserRequest
required
The user fields to update (all optional):
  • first_name: User’s first name
  • last_name: User’s last name
  • username: Username
  • phone: Phone number
  • metadata: Custom metadata

Return Value

Returns Result<User> containing the updated user details.

Basic Usage

use wacht::api::users::*;

let update = UpdateUserRequest {
    first_name: Some("Jane".to_string()),
    last_name: Some("Smith".to_string()),
    username: Some("janesmith".to_string()),
    phone: None,
    metadata: Some(serde_json::json!({
        "department": "marketing",
        "title": "Senior Manager"
    })),
};

let updated_user = update_user("52057194421551105", update).await?;
println!("Updated user: {} {}", updated_user.first_name, updated_user.last_name);

Error Handling

match update_user("52057194421551105", request).await {
    Ok(user) => {
        println!("Successfully updated user: {}", user.email);
        println!("Username: {}", user.username);
        println!("Last updated: {}", user.updated_at);
    }
    Err(Error::Api { status, message, .. }) => {
        match status.as_u16() {
            404 => println!("User not found"),
            400 => println!("Invalid request: {}", message),
            409 => println!("Username already taken: {}", message),
            403 => println!("Access denied: {}", message),
            _ => println!("API error {}: {}", status, message),
        }
    }
    Err(e) => println!("Request failed: {}", e),
}

Rate Limits

  • Update operations: 100 requests per minute
  • Burst limit: 10 requests per second