Skip to main content

auth0_integration/models/
update_user_request.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4/// Fields accepted by Auth0 PATCH /api/v2/users/{id}.
5/// All fields are optional — only non-None fields are serialized.
6#[derive(Serialize, Deserialize, Default)]
7pub struct UpdateUserRequest {
8    #[serde(skip_serializing_if = "Option::is_none")]
9    pub email: Option<String>,
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub email_verified: Option<bool>,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub verify_email: Option<bool>,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub phone_number: Option<String>,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub phone_verified: Option<bool>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub name: Option<String>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub given_name: Option<String>,
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub family_name: Option<String>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub nickname: Option<String>,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub picture: Option<String>,
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub username: Option<String>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub password: Option<String>,
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub verify_password: Option<bool>,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub blocked: Option<bool>,
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub connection: Option<String>,
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub user_metadata: Option<Value>,
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub app_metadata: Option<Value>,
42}
43
44impl UpdateUserRequest {
45    /// Creates a new empty `UpdateUserRequest` with all fields set to `None`.
46    ///
47    /// After construction, set the fields you want to update directly on the struct.
48    /// Only fields set to `Some(...)` are sent to Auth0 — the rest are omitted.
49    ///
50    /// # Fields
51    ///
52    /// | Field            | Type                | Description                                                  |
53    /// |------------------|---------------------|--------------------------------------------------------------|
54    /// | `email`          | `Option<String>`    | New email address for the user                               |
55    /// | `email_verified` | `Option<bool>`      | Whether the email has been verified                          |
56    /// | `verify_email`   | `Option<bool>`      | If `true`, sends a verification email after update           |
57    /// | `phone_number`   | `Option<String>`    | Phone number in E.164 format (e.g. `+15551234567`)           |
58    /// | `phone_verified` | `Option<bool>`      | Whether the phone number has been verified                   |
59    /// | `name`           | `Option<String>`    | Full display name                                            |
60    /// | `given_name`     | `Option<String>`    | First name                                                   |
61    /// | `family_name`    | `Option<String>`    | Last name                                                    |
62    /// | `nickname`       | `Option<String>`    | Preferred short name                                         |
63    /// | `picture`        | `Option<String>`    | URL of the user's profile picture                            |
64    /// | `username`       | `Option<String>`    | Username (only for connections that support it)              |
65    /// | `password`       | `Option<String>`    | New password (only for database connections)                 |
66    /// | `verify_password`| `Option<bool>`      | If `true`, sends a password-change confirmation email        |
67    /// | `blocked`        | `Option<bool>`      | If `true`, the user is blocked from logging in               |
68    /// | `connection`     | `Option<String>`    | Connection name the update applies to                        |
69    /// | `user_metadata`  | `Option<Value>`     | Arbitrary JSON object editable by the user                   |
70    /// | `app_metadata`   | `Option<Value>`     | Arbitrary JSON object editable only by the application       |
71    ///
72    /// # Example
73    ///
74    /// ```rust
75    /// use auth0_integration::models::UpdateUserRequest;
76    ///
77    /// let req = UpdateUserRequest::new();
78    /// // req.name = Some("Jane Doe".to_string());
79    /// // req.blocked = Some(false);
80    /// ```
81    pub fn new() -> Self {
82        Self::default()
83    }
84}