use crate::serde_helpers::double_option;
use super::*;
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct Webhook {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<WebhookType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub target: Option<WebhookTarget>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_by: Option<UserMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub triggers: Option<Vec<WebhookTriggers>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct WebhookMini {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<WebhookType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub target: Option<WebhookTarget>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct Webhooks {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<i64>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub next_marker: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub prev_marker: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub entries: Option<Vec<WebhookMini>>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct WebhookType(pub String);
impl WebhookType {
pub const WEBHOOK: &'static str = "webhook";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct WebhookTarget {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<EventSourceItemType>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct WebhookTriggers(pub String);
impl WebhookTriggers {
pub const FILE_UPLOADED: &'static str = "FILE.UPLOADED";
pub const FILE_PREVIEWED: &'static str = "FILE.PREVIEWED";
pub const FILE_DOWNLOADED: &'static str = "FILE.DOWNLOADED";
pub const FILE_TRASHED: &'static str = "FILE.TRASHED";
pub const FILE_DELETED: &'static str = "FILE.DELETED";
pub const FILE_RESTORED: &'static str = "FILE.RESTORED";
pub const FILE_COPIED: &'static str = "FILE.COPIED";
pub const FILE_MOVED: &'static str = "FILE.MOVED";
pub const FILE_LOCKED: &'static str = "FILE.LOCKED";
pub const FILE_UNLOCKED: &'static str = "FILE.UNLOCKED";
pub const FILE_RENAMED: &'static str = "FILE.RENAMED";
pub const COMMENT_CREATED: &'static str = "COMMENT.CREATED";
pub const COMMENT_UPDATED: &'static str = "COMMENT.UPDATED";
pub const COMMENT_DELETED: &'static str = "COMMENT.DELETED";
pub const TASK_ASSIGNMENT_CREATED: &'static str = "TASK_ASSIGNMENT.CREATED";
pub const TASK_ASSIGNMENT_UPDATED: &'static str = "TASK_ASSIGNMENT.UPDATED";
pub const METADATA_INSTANCE_CREATED: &'static str = "METADATA_INSTANCE.CREATED";
pub const METADATA_INSTANCE_UPDATED: &'static str = "METADATA_INSTANCE.UPDATED";
pub const METADATA_INSTANCE_DELETED: &'static str = "METADATA_INSTANCE.DELETED";
pub const FOLDER_CREATED: &'static str = "FOLDER.CREATED";
pub const FOLDER_RENAMED: &'static str = "FOLDER.RENAMED";
pub const FOLDER_DOWNLOADED: &'static str = "FOLDER.DOWNLOADED";
pub const FOLDER_RESTORED: &'static str = "FOLDER.RESTORED";
pub const FOLDER_DELETED: &'static str = "FOLDER.DELETED";
pub const FOLDER_COPIED: &'static str = "FOLDER.COPIED";
pub const FOLDER_MOVED: &'static str = "FOLDER.MOVED";
pub const FOLDER_TRASHED: &'static str = "FOLDER.TRASHED";
pub const WEBHOOK_DELETED: &'static str = "WEBHOOK.DELETED";
pub const COLLABORATION_CREATED: &'static str = "COLLABORATION.CREATED";
pub const COLLABORATION_ACCEPTED: &'static str = "COLLABORATION.ACCEPTED";
pub const COLLABORATION_REJECTED: &'static str = "COLLABORATION.REJECTED";
pub const COLLABORATION_REMOVED: &'static str = "COLLABORATION.REMOVED";
pub const COLLABORATION_UPDATED: &'static str = "COLLABORATION.UPDATED";
pub const SHARED_LINK_DELETED: &'static str = "SHARED_LINK.DELETED";
pub const SHARED_LINK_CREATED: &'static str = "SHARED_LINK.CREATED";
pub const SHARED_LINK_UPDATED: &'static str = "SHARED_LINK.UPDATED";
pub const SIGN_REQUEST_COMPLETED: &'static str = "SIGN_REQUEST.COMPLETED";
pub const SIGN_REQUEST_DECLINED: &'static str = "SIGN_REQUEST.DECLINED";
pub const SIGN_REQUEST_EXPIRED: &'static str = "SIGN_REQUEST.EXPIRED";
pub const SIGN_REQUEST_SIGNER_EMAIL_BOUNCED: &'static str = "SIGN_REQUEST.SIGNER_EMAIL_BOUNCED";
pub const SIGN_REQUEST_SIGN_SIGNER_SIGNED: &'static str = "SIGN_REQUEST.SIGN_SIGNER_SIGNED";
pub const SIGN_REQUEST_SIGN_DOCUMENT_CREATED: &'static str =
"SIGN_REQUEST.SIGN_DOCUMENT_CREATED";
pub const SIGN_REQUEST_SIGN_ERROR_FINALIZING: &'static str =
"SIGN_REQUEST.SIGN_ERROR_FINALIZING";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CreateWebhookRequest {
pub target: WebhookTarget,
pub address: String,
pub triggers: Vec<WebhookTriggers>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct UpdateWebhookRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub target: Option<WebhookTarget>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub triggers: Option<Vec<WebhookTriggers>>,
}