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 FilesUnderRetention {
    #[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<FileMini>>,
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct RetentionPolicyAssignment {
    pub id: String,
    pub r#type: RetentionPolicyAssignmentType,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub retention_policy: Option<RetentionPolicyMini>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub assigned_to: Option<RetentionPolicyAssignmentAssignedTo>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub filter_fields: Option<Option<Vec<RetentionPolicyAssignmentFilterFields>>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub assigned_by: Option<UserMini>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub assigned_at: Option<chrono::DateTime<chrono::Utc>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub start_date_field: Option<String>,
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct RetentionPolicyAssignments {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub entries: Option<Vec<RetentionPolicyAssignment>>,
    #[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>>,
}

#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct RetentionPolicyAssignmentType(pub String);

impl RetentionPolicyAssignmentType {
    pub const RETENTION_POLICY_ASSIGNMENT: &'static str = "retention_policy_assignment";
}

#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct AssignedToType(pub String);

impl AssignedToType {
    pub const FOLDER: &'static str = "folder";
    pub const ENTERPRISE: &'static str = "enterprise";
    pub const METADATA_TEMPLATE: &'static str = "metadata_template";
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct RetentionPolicyAssignmentAssignedTo {
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub id: Option<Option<String>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub r#type: Option<AssignedToType>,
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct RetentionPolicyAssignmentFilterFields {
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub field: Option<Option<String>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub value: Option<Option<String>>,
}

#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct AssignToType(pub String);

impl AssignToType {
    pub const ENTERPRISE: &'static str = "enterprise";
    pub const FOLDER: &'static str = "folder";
    pub const METADATA_TEMPLATE: &'static str = "metadata_template";
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CreateRetentionPolicyAssignmentRequestAssignTo {
    pub r#type: AssignToType,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub id: Option<Option<String>>,
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct PostFilterFields {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub field: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub value: Option<String>,
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct CreateRetentionPolicyAssignmentRequest {
    pub policy_id: String,
    pub assign_to: CreateRetentionPolicyAssignmentRequestAssignTo,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub filter_fields: Option<Vec<PostFilterFields>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub start_date_field: Option<String>,
}