box_open_sdk/models/schemas/
file_requests.rs1use crate::serde_helpers::double_option;
4
5use super::*;
6
7#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8pub struct FileRequest {
9 pub id: String,
10 pub r#type: FileRequestType,
11 #[serde(default, skip_serializing_if = "Option::is_none")]
12 pub title: Option<String>,
13 #[serde(
14 default,
15 skip_serializing_if = "Option::is_none",
16 deserialize_with = "double_option"
17 )]
18 pub description: Option<Option<String>>,
19 #[serde(default, skip_serializing_if = "Option::is_none")]
20 pub status: Option<FileRequestStatus>,
21 #[serde(default, skip_serializing_if = "Option::is_none")]
22 pub is_email_required: Option<bool>,
23 #[serde(default, skip_serializing_if = "Option::is_none")]
24 pub is_description_required: Option<bool>,
25 #[serde(default, skip_serializing_if = "Option::is_none")]
26 pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
27 pub folder: FolderMini,
28 #[serde(default, skip_serializing_if = "Option::is_none")]
29 pub url: Option<String>,
30 #[serde(
31 default,
32 skip_serializing_if = "Option::is_none",
33 deserialize_with = "double_option"
34 )]
35 pub etag: Option<Option<String>>,
36 #[serde(default, skip_serializing_if = "Option::is_none")]
37 pub created_by: Option<UserMini>,
38 pub created_at: chrono::DateTime<chrono::Utc>,
39 #[serde(default, skip_serializing_if = "Option::is_none")]
40 pub updated_by: Option<UserMini>,
41 pub updated_at: chrono::DateTime<chrono::Utc>,
42}
43
44#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
45pub struct FileRequestCopyRequest {
46 #[serde(default, skip_serializing_if = "Option::is_none")]
47 pub title: Option<String>,
48 #[serde(default, skip_serializing_if = "Option::is_none")]
49 pub description: Option<String>,
50 #[serde(default, skip_serializing_if = "Option::is_none")]
51 pub status: Option<FileRequestStatus>,
52 #[serde(default, skip_serializing_if = "Option::is_none")]
53 pub is_email_required: Option<bool>,
54 #[serde(default, skip_serializing_if = "Option::is_none")]
55 pub is_description_required: Option<bool>,
56 #[serde(default, skip_serializing_if = "Option::is_none")]
57 pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
58 pub folder: FileRequestCopyRequestFolder,
59}
60
61#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
62pub struct FileRequestUpdateRequest {
63 #[serde(default, skip_serializing_if = "Option::is_none")]
64 pub title: Option<String>,
65 #[serde(default, skip_serializing_if = "Option::is_none")]
66 pub description: Option<String>,
67 #[serde(default, skip_serializing_if = "Option::is_none")]
68 pub status: Option<FileRequestStatus>,
69 #[serde(default, skip_serializing_if = "Option::is_none")]
70 pub is_email_required: Option<bool>,
71 #[serde(default, skip_serializing_if = "Option::is_none")]
72 pub is_description_required: Option<bool>,
73 #[serde(default, skip_serializing_if = "Option::is_none")]
74 pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
75}
76
77#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
78#[serde(transparent)]
79pub struct FileRequestType(pub String);
80
81impl FileRequestType {
82 pub const FILE_REQUEST: &'static str = "file_request";
83}
84
85#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
86#[serde(transparent)]
87pub struct FileRequestStatus(pub String);
88
89impl FileRequestStatus {
90 pub const ACTIVE: &'static str = "active";
91 pub const INACTIVE: &'static str = "inactive";
92}
93
94#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
95pub struct FileRequestCopyRequestFolder {
96 #[serde(default, skip_serializing_if = "Option::is_none")]
97 pub r#type: Option<FolderType>,
98 pub id: String,
99}