Skip to main content

notion_client/objects/
user.rs

1use serde::{Deserialize, Serialize};
2use serde_with::skip_serializing_none;
3
4#[skip_serializing_none]
5#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq, Default)]
6
7pub struct User {
8    pub object: String,
9    pub id: String,
10    #[serde(flatten)]
11    pub user_type: Option<UserType>,
12    pub name: Option<String>,
13    #[serde(rename = "avatar_url")]
14    pub avatar_url: Option<String>,
15}
16
17#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
18#[serde(tag = "type", rename_all = "snake_case")]
19pub enum UserType {
20    Person { person: Person },
21    Bot { bot: Bot },
22}
23
24#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
25pub struct Person {
26    pub email: String,
27}
28
29#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
30pub struct Bot {
31    pub owner: OwnerType,
32    pub workspace_name: String,
33}
34
35#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
36#[serde(tag = "type", rename_all = "snake_case")]
37pub enum OwnerType {
38    Workspace { workspace: bool },
39    User { workspace: bool },
40}