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    pub avator_url: Option<String>,
14}
15
16#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
17#[serde(tag = "type", rename_all = "snake_case")]
18pub enum UserType {
19    Person { person: Person },
20    Bot { bot: Bot },
21}
22
23#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
24pub struct Person {
25    pub email: String,
26}
27
28#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
29pub struct Bot {
30    pub owner: OwnerType,
31    pub workspace_name: String,
32}
33
34#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
35#[serde(tag = "type", rename_all = "snake_case")]
36pub enum OwnerType {
37    Workspace { workspace: bool },
38    User { workspace: bool },
39}