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