box-open-sdk 0.4.1

Box API client for Rust (open source, community, punk rock) — typed models, async managers, and a reqwest runtime with retry, backoff, and token refresh.
Documentation
// Code generated by box-gantry 0.1.0 (spec 3fb3510fe12f2f80) for Box API 2024.0. DO NOT EDIT.

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>>,
}