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 SignTemplate {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub r#type: Option<SignTemplateType>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub name: Option<Option<String>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub email_subject: Option<Option<String>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub email_message: Option<Option<String>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub days_valid: Option<Option<i64>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub parent_folder: Option<FolderMini>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub source_files: Option<Vec<FileMini>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub are_fields_locked: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub are_options_locked: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub are_recipients_locked: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub are_email_settings_locked: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub are_files_locked: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub signers: Option<Vec<TemplateSigner>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub additional_info: Option<SignTemplateAdditionalInfo>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub ready_sign_link: Option<Option<SignTemplateReadySignLink>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub custom_branding: Option<Option<SignTemplateCustomBranding>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub request_flow: Option<Option<String>>,
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignTemplates {
    #[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<SignTemplate>>,
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct TemplateSigner {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub inputs: Option<Vec<TemplateSignerInput>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub email: Option<Option<String>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub role: Option<SignRequestCreateSignerRole>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub is_in_person: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub order: Option<i64>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub signer_group_id: Option<Option<String>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub label: Option<Option<String>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub public_id: Option<String>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub is_password_required: Option<Option<bool>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub is_phone_number_required: Option<Option<bool>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub login_required: Option<Option<bool>>,
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct TemplateSignerInput {
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub document_tag_id: Option<Option<String>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub text_value: Option<Option<String>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub checkbox_value: Option<Option<bool>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub date_value: Option<Option<chrono::NaiveDate>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub r#type: Option<TemplateSignerInputType>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub content_type: Option<SignRequestSignerInputContentType>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub is_required: Option<bool>,
    pub page_index: i64,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub document_id: Option<Option<String>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub dropdown_choices: Option<Option<Vec<String>>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub group_id: Option<Option<String>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub coordinates: Option<TemplateSignerInputCoordinates>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub dimensions: Option<TemplateSignerInputDimensions>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub label: Option<Option<String>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub read_only: Option<bool>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub validation: Option<Option<SignRequestSignerInputValidation>>,
}

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

impl SignTemplateType {
    pub const SIGN_TEMPLATE: &'static str = "sign-template";
}

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

impl AdditionalInfoNonEditable {
    pub const EMAIL_SUBJECT: &'static str = "email_subject";
    pub const EMAIL_MESSAGE: &'static str = "email_message";
    pub const NAME: &'static str = "name";
    pub const DAYS_VALID: &'static str = "days_valid";
    pub const SIGNERS: &'static str = "signers";
    pub const SOURCE_FILES: &'static str = "source_files";
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct AdditionalInfoRequired {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub signers: Option<Vec<Vec<SignRequestSignerInputEmailValidationValidationType>>>,
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignTemplateAdditionalInfo {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub non_editable: Option<Vec<AdditionalInfoNonEditable>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub required: Option<AdditionalInfoRequired>,
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignTemplateReadySignLink {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub url: Option<String>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub name: Option<Option<String>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub instructions: Option<Option<String>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub folder_id: Option<Option<String>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub is_notification_disabled: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub is_active: Option<bool>,
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignTemplateCustomBranding {
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub company_name: Option<Option<String>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub logo_uri: Option<Option<String>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub branding_color: Option<Option<String>>,
    #[serde(
        default,
        skip_serializing_if = "Option::is_none",
        deserialize_with = "double_option"
    )]
    pub email_footer_text: Option<Option<String>>,
}

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

impl TemplateSignerInputType {
    pub const SIGNATURE: &'static str = "signature";
    pub const DATE: &'static str = "date";
    pub const TEXT: &'static str = "text";
    pub const CHECKBOX: &'static str = "checkbox";
    pub const ATTACHMENT: &'static str = "attachment";
    pub const RADIO: &'static str = "radio";
    pub const DROPDOWN: &'static str = "dropdown";
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct TemplateSignerInputCoordinates {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub x: Option<f64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub y: Option<f64>,
}

#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct TemplateSignerInputDimensions {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub width: Option<f64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub height: Option<f64>,
}