nullnet_libtoken/
models.rs

1use crate::utils::empty_object_or_null_is_none;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Serialize, Deserialize)]
5pub struct Account {
6    #[serde(default)]
7    pub is_root_account: bool,
8    pub profile: Profile,
9    #[serde(default, deserialize_with = "empty_object_or_null_is_none")]
10    pub contact: Option<Contact>,
11    #[serde(default, deserialize_with = "empty_object_or_null_is_none")]
12    pub device: Option<Device>,
13    pub organization: Organization,
14    pub id: String,
15    pub account_id: String,
16    pub organization_id: String,
17    pub account_organization_id: String,
18    pub account_status: String,
19    pub role_id: Option<String>,
20}
21
22#[derive(Debug, Serialize, Deserialize)]
23pub struct Profile {
24    pub id: String,
25    pub first_name: Option<String>,
26    pub last_name: Option<String>,
27    pub email: String,
28    pub account_id: String,
29    pub categories: Vec<String>,
30    pub code: Option<String>,
31    pub status: String,
32    pub organization_id: String,
33}
34
35#[derive(Debug, Serialize, Deserialize)]
36pub struct Contact {
37    pub id: String,
38    pub first_name: String,
39    pub last_name: String,
40    pub account_id: String,
41    pub code: String,
42    pub categories: Vec<String>,
43    pub status: String,
44    pub organization_id: String,
45    pub date_of_birth: Option<String>,
46}
47
48#[derive(Debug, Serialize, Deserialize)]
49pub struct Device {
50    pub id: String,
51    pub code: String,
52    pub categories: Vec<String>,
53    pub status: String,
54    pub organization_id: String,
55    pub timestamp: Option<String>,
56}
57
58#[derive(Debug, Serialize, Deserialize)]
59pub struct Organization {
60    pub id: String,
61    pub name: String,
62    pub code: String,
63    pub categories: Vec<String>,
64    pub status: String,
65    pub organization_id: String,
66    pub parent_organization_id: Option<String>,
67}