use crate::serde_helpers::double_option;
use super::*;
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_document_preparation_needed: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub redirect_url: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub declined_redirect_url: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub are_text_signatures_enabled: Option<bool>,
#[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")]
pub are_reminders_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub prefill_tags: Option<Vec<SignRequestPrefillTag>>,
#[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",
deserialize_with = "double_option"
)]
pub external_id: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub template_id: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub external_system_name: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub request_flow: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<SignRequestType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source_files: Option<Vec<FileBase>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub signers: Option<Vec<SignRequestSigner>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub signature_color: Option<Option<String>>,
#[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 prepare_url: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub signing_log: Option<FileMini>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<SignRequestStatus>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sign_files: Option<SignRequestSignFiles>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub auto_expire_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub parent_folder: Option<FolderMini>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub collaborator_level: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub short_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub finished_at: Option<Option<chrono::DateTime<chrono::Utc>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub error_code: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub sender_email: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub sender_id: Option<Option<i64>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestCancelRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestCreateRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_document_preparation_needed: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub redirect_url: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub declined_redirect_url: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub are_text_signatures_enabled: Option<bool>,
#[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")]
pub are_reminders_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub prefill_tags: Option<Vec<SignRequestPrefillTag>>,
#[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",
deserialize_with = "double_option"
)]
pub external_id: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub template_id: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub external_system_name: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub request_flow: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub source_files: Option<Option<Vec<FileBase>>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub signature_color: Option<Option<SignRequestCreateRequestSignatureColor>>,
pub signers: Vec<SignRequestCreateSigner>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub parent_folder: Option<FolderMini>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestCreateSigner {
#[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 embed_url_external_user_id: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub redirect_url: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub declined_redirect_url: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub login_required: Option<Option<bool>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub verification_phone_number: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub password: Option<Option<String>>,
#[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 suppress_notifications: Option<Option<bool>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub language: Option<Option<String>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestPrefillTag {
#[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>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequests {
#[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")]
pub entries: Option<Vec<SignRequest>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSigner {
pub email: 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 embed_url_external_user_id: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub redirect_url: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub declined_redirect_url: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub login_required: Option<Option<bool>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub verification_phone_number: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub password: Option<Option<String>>,
#[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 suppress_notifications: Option<Option<bool>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub language: Option<Option<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub has_viewed_document: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub signer_decision: Option<Option<SignRequestSignerSignerDecision>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub inputs: Option<Vec<SignRequestSignerInput>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub embed_url: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub iframeable_embed_url: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub attachments: Option<Option<Vec<SignRequestSignerAttachment>>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSignerAttachment {
#[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",
deserialize_with = "double_option"
)]
pub name: Option<Option<String>>,
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSignerInput {
#[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<SignRequestSignerInputType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub content_type: Option<SignRequestSignerInputContentType>,
pub page_index: i64,
#[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>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub reason: Option<Option<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub is_validated: Option<Option<bool>>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestType(pub String);
impl SignRequestType {
pub const SIGN_REQUEST: &'static str = "sign-request";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestStatus(pub String);
impl SignRequestStatus {
pub const CONVERTING: &'static str = "converting";
pub const CREATED: &'static str = "created";
pub const SENT: &'static str = "sent";
pub const VIEWED: &'static str = "viewed";
pub const SIGNED: &'static str = "signed";
pub const CANCELLED: &'static str = "cancelled";
pub const DECLINED: &'static str = "declined";
pub const ERROR: &'static str = "error";
pub const ERROR_CONVERTING: &'static str = "error_converting";
pub const ERROR_SENDING: &'static str = "error_sending";
pub const EXPIRED: &'static str = "expired";
pub const FINALIZING: &'static str = "finalizing";
pub const ERROR_FINALIZING: &'static str = "error_finalizing";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSignFiles {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub files: Option<Vec<FileMini>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_ready_for_download: Option<bool>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestCreateRequestSignatureColor(pub String);
impl SignRequestCreateRequestSignatureColor {
pub const BLUE: &'static str = "blue";
pub const BLACK: &'static str = "black";
pub const RED: &'static str = "red";
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignerDecisionType(pub String);
impl SignerDecisionType {
pub const SIGNED: &'static str = "signed";
pub const DECLINED: &'static str = "declined";
}
#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct SignRequestSignerSignerDecision {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<SignerDecisionType>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub finalized_at: Option<chrono::DateTime<chrono::Utc>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "double_option"
)]
pub additional_info: Option<Option<String>>,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(transparent)]
pub struct SignRequestSignerInputType(pub String);
impl SignRequestSignerInputType {
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 RADIO: &'static str = "radio";
pub const DROPDOWN: &'static str = "dropdown";
}