box_open_sdk/models/schemas/
webhooks.rs1use crate::serde_helpers::double_option;
4
5use super::*;
6
7#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
8pub struct Webhook {
9 #[serde(default, skip_serializing_if = "Option::is_none")]
10 pub id: Option<String>,
11 #[serde(default, skip_serializing_if = "Option::is_none")]
12 pub r#type: Option<WebhookType>,
13 #[serde(default, skip_serializing_if = "Option::is_none")]
14 pub target: Option<WebhookTarget>,
15 #[serde(default, skip_serializing_if = "Option::is_none")]
16 pub created_by: Option<UserMini>,
17 #[serde(default, skip_serializing_if = "Option::is_none")]
18 pub created_at: Option<chrono::DateTime<chrono::Utc>>,
19 #[serde(default, skip_serializing_if = "Option::is_none")]
20 pub address: Option<String>,
21 #[serde(default, skip_serializing_if = "Option::is_none")]
22 pub triggers: Option<Vec<WebhookTriggers>>,
23}
24
25#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
26pub struct WebhookMini {
27 #[serde(default, skip_serializing_if = "Option::is_none")]
28 pub id: Option<String>,
29 #[serde(default, skip_serializing_if = "Option::is_none")]
30 pub r#type: Option<WebhookType>,
31 #[serde(default, skip_serializing_if = "Option::is_none")]
32 pub target: Option<WebhookTarget>,
33}
34
35#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
36pub struct Webhooks {
37 #[serde(default, skip_serializing_if = "Option::is_none")]
38 pub limit: Option<i64>,
39 #[serde(
40 default,
41 skip_serializing_if = "Option::is_none",
42 deserialize_with = "double_option"
43 )]
44 pub next_marker: Option<Option<String>>,
45 #[serde(
46 default,
47 skip_serializing_if = "Option::is_none",
48 deserialize_with = "double_option"
49 )]
50 pub prev_marker: Option<Option<String>>,
51 #[serde(default, skip_serializing_if = "Option::is_none")]
52 pub entries: Option<Vec<WebhookMini>>,
53}
54
55#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
56#[serde(transparent)]
57pub struct WebhookType(pub String);
58
59impl WebhookType {
60 pub const WEBHOOK: &'static str = "webhook";
61}
62
63#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
64pub struct WebhookTarget {
65 #[serde(default, skip_serializing_if = "Option::is_none")]
66 pub id: Option<String>,
67 #[serde(default, skip_serializing_if = "Option::is_none")]
68 pub r#type: Option<EventSourceItemType>,
69}
70
71#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
72#[serde(transparent)]
73pub struct WebhookTriggers(pub String);
74
75impl WebhookTriggers {
76 pub const FILE_UPLOADED: &'static str = "FILE.UPLOADED";
77 pub const FILE_PREVIEWED: &'static str = "FILE.PREVIEWED";
78 pub const FILE_DOWNLOADED: &'static str = "FILE.DOWNLOADED";
79 pub const FILE_TRASHED: &'static str = "FILE.TRASHED";
80 pub const FILE_DELETED: &'static str = "FILE.DELETED";
81 pub const FILE_RESTORED: &'static str = "FILE.RESTORED";
82 pub const FILE_COPIED: &'static str = "FILE.COPIED";
83 pub const FILE_MOVED: &'static str = "FILE.MOVED";
84 pub const FILE_LOCKED: &'static str = "FILE.LOCKED";
85 pub const FILE_UNLOCKED: &'static str = "FILE.UNLOCKED";
86 pub const FILE_RENAMED: &'static str = "FILE.RENAMED";
87 pub const COMMENT_CREATED: &'static str = "COMMENT.CREATED";
88 pub const COMMENT_UPDATED: &'static str = "COMMENT.UPDATED";
89 pub const COMMENT_DELETED: &'static str = "COMMENT.DELETED";
90 pub const TASK_ASSIGNMENT_CREATED: &'static str = "TASK_ASSIGNMENT.CREATED";
91 pub const TASK_ASSIGNMENT_UPDATED: &'static str = "TASK_ASSIGNMENT.UPDATED";
92 pub const METADATA_INSTANCE_CREATED: &'static str = "METADATA_INSTANCE.CREATED";
93 pub const METADATA_INSTANCE_UPDATED: &'static str = "METADATA_INSTANCE.UPDATED";
94 pub const METADATA_INSTANCE_DELETED: &'static str = "METADATA_INSTANCE.DELETED";
95 pub const FOLDER_CREATED: &'static str = "FOLDER.CREATED";
96 pub const FOLDER_RENAMED: &'static str = "FOLDER.RENAMED";
97 pub const FOLDER_DOWNLOADED: &'static str = "FOLDER.DOWNLOADED";
98 pub const FOLDER_RESTORED: &'static str = "FOLDER.RESTORED";
99 pub const FOLDER_DELETED: &'static str = "FOLDER.DELETED";
100 pub const FOLDER_COPIED: &'static str = "FOLDER.COPIED";
101 pub const FOLDER_MOVED: &'static str = "FOLDER.MOVED";
102 pub const FOLDER_TRASHED: &'static str = "FOLDER.TRASHED";
103 pub const WEBHOOK_DELETED: &'static str = "WEBHOOK.DELETED";
104 pub const COLLABORATION_CREATED: &'static str = "COLLABORATION.CREATED";
105 pub const COLLABORATION_ACCEPTED: &'static str = "COLLABORATION.ACCEPTED";
106 pub const COLLABORATION_REJECTED: &'static str = "COLLABORATION.REJECTED";
107 pub const COLLABORATION_REMOVED: &'static str = "COLLABORATION.REMOVED";
108 pub const COLLABORATION_UPDATED: &'static str = "COLLABORATION.UPDATED";
109 pub const SHARED_LINK_DELETED: &'static str = "SHARED_LINK.DELETED";
110 pub const SHARED_LINK_CREATED: &'static str = "SHARED_LINK.CREATED";
111 pub const SHARED_LINK_UPDATED: &'static str = "SHARED_LINK.UPDATED";
112 pub const SIGN_REQUEST_COMPLETED: &'static str = "SIGN_REQUEST.COMPLETED";
113 pub const SIGN_REQUEST_DECLINED: &'static str = "SIGN_REQUEST.DECLINED";
114 pub const SIGN_REQUEST_EXPIRED: &'static str = "SIGN_REQUEST.EXPIRED";
115 pub const SIGN_REQUEST_SIGNER_EMAIL_BOUNCED: &'static str = "SIGN_REQUEST.SIGNER_EMAIL_BOUNCED";
116 pub const SIGN_REQUEST_SIGN_SIGNER_SIGNED: &'static str = "SIGN_REQUEST.SIGN_SIGNER_SIGNED";
117 pub const SIGN_REQUEST_SIGN_DOCUMENT_CREATED: &'static str =
118 "SIGN_REQUEST.SIGN_DOCUMENT_CREATED";
119 pub const SIGN_REQUEST_SIGN_ERROR_FINALIZING: &'static str =
120 "SIGN_REQUEST.SIGN_ERROR_FINALIZING";
121}
122
123#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
124pub struct CreateWebhookRequest {
125 pub target: WebhookTarget,
126 pub address: String,
127 pub triggers: Vec<WebhookTriggers>,
128}
129
130#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
131pub struct UpdateWebhookRequest {
132 #[serde(default, skip_serializing_if = "Option::is_none")]
133 pub target: Option<WebhookTarget>,
134 #[serde(default, skip_serializing_if = "Option::is_none")]
135 pub address: Option<String>,
136 #[serde(default, skip_serializing_if = "Option::is_none")]
137 pub triggers: Option<Vec<WebhookTriggers>>,
138}