notion_sdk/user/
mod.rs

1//!
2//! # Notion User
3//!
4mod api;
5pub mod id;
6mod tests;
7
8use crate::user::id::UserId;
9use serde::{Deserialize, Serialize};
10
11#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
12pub struct UserCommon {
13    pub id: UserId,
14    pub name: Option<String>,
15    pub avatar_url: Option<String>,
16}
17
18#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
19pub struct Person {
20    pub email: String,
21}
22
23#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
24pub struct Bot {
25    pub owner: Owner,
26    pub workspace_name: String,
27}
28
29#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
30pub struct Owner {
31    #[serde(rename = "type")]
32    pub owner_type: String,
33    pub workspace: bool,
34}
35
36#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
37#[serde(tag = "type", rename_all = "snake_case")]
38pub enum User {
39    Person {
40        #[serde(flatten)]
41        common: UserCommon,
42        person: Person,
43    },
44    Bot {
45        #[serde(flatten)]
46        common: UserCommon,
47        bot: Bot,
48    },
49}