#![allow(
missing_docs,
clippy::doc_lazy_continuation,
clippy::doc_overindented_list_items
)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AdditionalEmailsDto {
pub email: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Address {
#[serde(
rename = "addressLine1",
default,
skip_serializing_if = "Option::is_none"
)]
pub address_line1: Option<String>,
#[serde(
rename = "addressLine2",
default,
skip_serializing_if = "Option::is_none"
)]
pub address_line2: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub city: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub state: Option<String>,
#[serde(
rename = "countryCode",
default,
skip_serializing_if = "Option::is_none"
)]
pub country_code: Option<String>,
#[serde(
rename = "postalCode",
default,
skip_serializing_if = "Option::is_none"
)]
pub postal_code: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AddressDto {
#[serde(
rename = "addressLine1",
default,
skip_serializing_if = "Option::is_none"
)]
pub address_line1: Option<String>,
#[serde(
rename = "addressLine2",
default,
skip_serializing_if = "Option::is_none"
)]
pub address_line2: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub city: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub state: Option<String>,
#[serde(
rename = "countryCode",
default,
skip_serializing_if = "Option::is_none"
)]
pub country_code: Option<String>,
#[serde(
rename = "postalCode",
default,
skip_serializing_if = "Option::is_none"
)]
pub postal_code: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AltDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AttachmentsDto {
pub id: String,
pub name: String,
pub url: String,
#[serde(rename = "type")]
pub type_: String,
pub size: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AutoInvoice {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AutoInvoicingDto {
pub enabled: bool,
#[serde(
rename = "directPayments",
default,
skip_serializing_if = "Option::is_none"
)]
pub direct_payments: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AutoPaymentDetailsDto {
pub enable: bool,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(
rename = "paymentMethodId",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_method_id: Option<String>,
#[serde(
rename = "customerId",
default,
skip_serializing_if = "Option::is_none"
)]
pub customer_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub card: Option<CardDto>,
#[serde(
rename = "usBankAccount",
default,
skip_serializing_if = "Option::is_none"
)]
pub us_bank_account: Option<USBankAccountDto>,
#[serde(
rename = "sepaDirectDebit",
default,
skip_serializing_if = "Option::is_none"
)]
pub sepa_direct_debit: Option<SepaDirectDebitDTO>,
#[serde(
rename = "bacsDirectDebit",
default,
skip_serializing_if = "Option::is_none"
)]
pub bacs_direct_debit: Option<BacsDirectDebitDTO>,
#[serde(
rename = "becsDirectDebit",
default,
skip_serializing_if = "Option::is_none"
)]
pub becs_direct_debit: Option<BecsDirectDebitDTO>,
#[serde(rename = "cardId", default, skip_serializing_if = "Option::is_none")]
pub card_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub provider: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AutoPaymentInvoiceScheduleResponseDto {
#[serde(rename = "_id")]
pub id: String,
pub status: serde_json::Value,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub schedule: Option<ScheduleOptionsDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub invoices: Vec<DefaultInvoiceResponseDto>,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(rename = "contactDetails")]
pub contact_details: ContactDetailsDto,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<DiscountDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<String>,
pub total: f64,
pub title: String,
#[serde(rename = "termsNotes")]
pub terms_notes: String,
#[serde(rename = "compiledTermsNotes")]
pub compiled_terms_notes: String,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AutoPaymentScheduleDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub id: String,
#[serde(rename = "autoPayment")]
pub auto_payment: AutoPaymentDetailsDto,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct BacsDirectDebitDTO {
pub sort_code: String,
pub last4: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct BecsDirectDebitDTO {
pub bsb_number: String,
pub last4: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct BusinessDetails {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct BusinessDetailsDto {
#[serde(rename = "logoUrl", default, skip_serializing_if = "Option::is_none")]
pub logo_url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "phoneNo", default, skip_serializing_if = "Option::is_none")]
pub phone_no: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub address: Option<AddressDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub website: Option<String>,
#[serde(
rename = "customValues",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub custom_values: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CancelInvoiceScheduleDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CancelInvoiceScheduleResponseDto {
#[serde(rename = "_id")]
pub id: String,
pub status: serde_json::Value,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub schedule: Option<ScheduleOptionsDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub invoices: Vec<DefaultInvoiceResponseDto>,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(rename = "contactDetails")]
pub contact_details: ContactDetailsDto,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<DiscountDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<String>,
pub total: f64,
pub title: String,
#[serde(rename = "termsNotes")]
pub terms_notes: String,
#[serde(rename = "compiledTermsNotes")]
pub compiled_terms_notes: String,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CardDto {
pub brand: String,
pub last4: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ChequeDto {
pub number: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ContactDetails {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ContactDetailsDto {
pub id: String,
pub name: String,
#[serde(rename = "phoneNo")]
pub phone_no: String,
pub email: String,
#[serde(
rename = "additionalEmails",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub additional_emails: Vec<AdditionalEmailsDto>,
#[serde(
rename = "companyName",
default,
skip_serializing_if = "Option::is_none"
)]
pub company_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub address: Option<AddressDto>,
#[serde(
rename = "customFields",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub custom_fields: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateEstimatesDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<EstimateLineItemDto>,
#[serde(rename = "liveMode", default, skip_serializing_if = "Option::is_none")]
pub live_mode: Option<bool>,
pub discount: DiscountDto,
#[serde(
rename = "termsNotes",
default,
skip_serializing_if = "Option::is_none"
)]
pub terms_notes: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(rename = "contactDetails")]
pub contact_details: ContactDetailsDto,
#[serde(
rename = "estimateNumber",
default,
skip_serializing_if = "Option::is_none"
)]
pub estimate_number: Option<f64>,
#[serde(rename = "issueDate", default, skip_serializing_if = "Option::is_none")]
pub issue_date: Option<String>,
#[serde(
rename = "expiryDate",
default,
skip_serializing_if = "Option::is_none"
)]
pub expiry_date: Option<String>,
#[serde(rename = "sentTo", default, skip_serializing_if = "Option::is_none")]
pub sent_to: Option<SentToDto>,
#[serde(
rename = "automaticTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub meta: Option<serde_json::Value>,
#[serde(
rename = "sendEstimateDetails",
default,
skip_serializing_if = "Option::is_none"
)]
pub send_estimate_details: Option<SendEstimateDto>,
#[serde(rename = "frequencySettings")]
pub frequency_settings: FrequencySettingsDto,
#[serde(
rename = "estimateNumberPrefix",
default,
skip_serializing_if = "Option::is_none"
)]
pub estimate_number_prefix: Option<String>,
#[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<AttachmentsDto>,
#[serde(
rename = "autoInvoice",
default,
skip_serializing_if = "Option::is_none"
)]
pub auto_invoice: Option<AutoInvoicingDto>,
#[serde(
rename = "miscellaneousCharges",
default,
skip_serializing_if = "Option::is_none"
)]
pub miscellaneous_charges: Option<ProcessingFeeDto>,
#[serde(
rename = "paymentScheduleConfig",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_schedule_config: Option<PaymentScheduleConfigDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateInvoiceDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<InvoiceItemDto>,
pub discount: DiscountDto,
#[serde(
rename = "termsNotes",
default,
skip_serializing_if = "Option::is_none"
)]
pub terms_notes: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(rename = "contactDetails")]
pub contact_details: ContactDetailsDto,
#[serde(
rename = "invoiceNumber",
default,
skip_serializing_if = "Option::is_none"
)]
pub invoice_number: Option<String>,
#[serde(rename = "issueDate")]
pub issue_date: String,
#[serde(rename = "dueDate", default, skip_serializing_if = "Option::is_none")]
pub due_date: Option<String>,
#[serde(rename = "sentTo")]
pub sent_to: SentToDto,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(
rename = "automaticTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_enabled: Option<bool>,
#[serde(
rename = "paymentSchedule",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_schedule: Option<PaymentScheduleDto>,
#[serde(
rename = "lateFeesConfiguration",
default,
skip_serializing_if = "Option::is_none"
)]
pub late_fees_configuration: Option<LateFeesConfigurationDto>,
#[serde(
rename = "tipsConfiguration",
default,
skip_serializing_if = "Option::is_none"
)]
pub tips_configuration: Option<TipsConfigurationDto>,
#[serde(
rename = "invoiceNumberPrefix",
default,
skip_serializing_if = "Option::is_none"
)]
pub invoice_number_prefix: Option<String>,
#[serde(
rename = "paymentMethods",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_methods: Option<PaymentMethodDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<AttachmentsDto>,
#[serde(
rename = "miscellaneousCharges",
default,
skip_serializing_if = "Option::is_none"
)]
pub miscellaneous_charges: Option<ProcessingFeeDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateInvoiceFromEstimateDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(rename = "markAsInvoiced")]
pub mark_as_invoiced: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateInvoiceFromEstimateResponseDTO {
pub estimate: EstimateResponseDto,
pub invoice: DefaultInvoiceResponseDto,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateInvoiceResponseDto {
#[serde(rename = "_id")]
pub id: String,
pub status: String,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "amountPaid")]
pub amount_paid: f64,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(rename = "businessDetails")]
pub business_details: serde_json::Value,
#[serde(rename = "invoiceNumber")]
pub invoice_number: f64,
pub currency: String,
#[serde(rename = "contactDetails")]
pub contact_details: serde_json::Value,
#[serde(rename = "issueDate")]
pub issue_date: String,
#[serde(rename = "dueDate")]
pub due_date: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<serde_json::Value>,
#[serde(
rename = "invoiceItems",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub invoice_items: Vec<String>,
pub total: f64,
pub title: String,
#[serde(rename = "amountDue")]
pub amount_due: f64,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
#[serde(
rename = "automaticTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_enabled: Option<bool>,
#[serde(
rename = "automaticTaxesCalculated",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_calculated: Option<bool>,
#[serde(
rename = "paymentSchedule",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_schedule: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateInvoiceScheduleDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(rename = "contactDetails")]
pub contact_details: ContactDetailsDto,
pub schedule: ScheduleOptionsDto,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<InvoiceItemDto>,
#[serde(
rename = "automaticTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_enabled: Option<bool>,
pub discount: DiscountDto,
#[serde(
rename = "termsNotes",
default,
skip_serializing_if = "Option::is_none"
)]
pub terms_notes: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(
rename = "tipsConfiguration",
default,
skip_serializing_if = "Option::is_none"
)]
pub tips_configuration: Option<TipsConfigurationDto>,
#[serde(
rename = "lateFeesConfiguration",
default,
skip_serializing_if = "Option::is_none"
)]
pub late_fees_configuration: Option<LateFeesConfigurationDto>,
#[serde(
rename = "invoiceNumberPrefix",
default,
skip_serializing_if = "Option::is_none"
)]
pub invoice_number_prefix: Option<String>,
#[serde(
rename = "paymentMethods",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_methods: Option<PaymentMethodDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<AttachmentsDto>,
#[serde(
rename = "miscellaneousCharges",
default,
skip_serializing_if = "Option::is_none"
)]
pub miscellaneous_charges: Option<ProcessingFeeDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateInvoiceScheduleResponseDto {
#[serde(rename = "_id")]
pub id: String,
pub status: serde_json::Value,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub schedule: Option<ScheduleOptionsDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub invoices: Vec<DefaultInvoiceResponseDto>,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(rename = "contactDetails")]
pub contact_details: ContactDetailsDto,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<DiscountDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<String>,
pub total: f64,
pub title: String,
#[serde(rename = "termsNotes")]
pub terms_notes: String,
#[serde(rename = "compiledTermsNotes")]
pub compiled_terms_notes: String,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateInvoiceTemplateDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub internal: Option<bool>,
pub name: String,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<InvoiceItemDto>,
#[serde(
rename = "automaticTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<DiscountDto>,
#[serde(
rename = "termsNotes",
default,
skip_serializing_if = "Option::is_none"
)]
pub terms_notes: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(
rename = "tipsConfiguration",
default,
skip_serializing_if = "Option::is_none"
)]
pub tips_configuration: Option<TipsConfigurationDto>,
#[serde(
rename = "lateFeesConfiguration",
default,
skip_serializing_if = "Option::is_none"
)]
pub late_fees_configuration: Option<LateFeesConfigurationDto>,
#[serde(
rename = "invoiceNumberPrefix",
default,
skip_serializing_if = "Option::is_none"
)]
pub invoice_number_prefix: Option<String>,
#[serde(
rename = "paymentMethods",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_methods: Option<PaymentMethodDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<String>,
#[serde(
rename = "miscellaneousCharges",
default,
skip_serializing_if = "Option::is_none"
)]
pub miscellaneous_charges: Option<ProcessingFeeDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateInvoiceTemplateResponseDto {
#[serde(rename = "_id")]
pub id: String,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<DiscountDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<String>,
#[serde(
rename = "invoiceNumberPrefix",
default,
skip_serializing_if = "Option::is_none"
)]
pub invoice_number_prefix: Option<String>,
pub total: f64,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CustomNotificationDto {
#[serde(rename = "customerSendInvoice")]
pub customer_send_invoice: CustomNotificationItemDto,
#[serde(rename = "teamPaymentSuccess")]
pub team_payment_success: CustomNotificationItemDto,
#[serde(rename = "customerPaymentSuccess")]
pub customer_payment_success: CustomNotificationItemDto,
#[serde(rename = "teamAutoPaymentSuccess")]
pub team_auto_payment_success: CustomNotificationItemDto,
#[serde(rename = "customerAutoPaymentSuccess")]
pub customer_auto_payment_success: CustomNotificationItemDto,
#[serde(rename = "teamPaymentFailure")]
pub team_payment_failure: CustomNotificationItemDto,
#[serde(rename = "customerPaymentFailure")]
pub customer_payment_failure: CustomNotificationItemDto,
#[serde(rename = "teamAutoPaymentFailure")]
pub team_auto_payment_failure: CustomNotificationItemDto,
#[serde(rename = "customerAutoPaymentFailure")]
pub customer_auto_payment_failure: CustomNotificationItemDto,
#[serde(rename = "customerAutoPaymentInfo")]
pub customer_auto_payment_info: CustomNotificationItemDto,
#[serde(rename = "customerAutoPaymentAmountChanged")]
pub customer_auto_payment_amount_changed: CustomNotificationItemDto,
#[serde(rename = "teamAutoPaymentSkip")]
pub team_auto_payment_skip: CustomNotificationItemDto,
#[serde(rename = "teamRecurringSendInvoiceFailed")]
pub team_recurring_send_invoice_failed: CustomNotificationItemDto,
#[serde(rename = "customerSendEstimate")]
pub customer_send_estimate: CustomNotificationItemDto,
#[serde(rename = "teamEstimateAccepted")]
pub team_estimate_accepted: CustomNotificationItemDto,
#[serde(rename = "teamEstimateDeclined")]
pub team_estimate_declined: CustomNotificationItemDto,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CustomNotificationItemDto {
pub enabled: bool,
#[serde(rename = "emailTemplate")]
pub email_template: String,
#[serde(rename = "smsTemplate")]
pub sms_template: String,
#[serde(rename = "fromName", default, skip_serializing_if = "Option::is_none")]
pub from_name: Option<String>,
#[serde(rename = "fromEmail", default, skip_serializing_if = "Option::is_none")]
pub from_email: Option<String>,
#[serde(
rename = "emailSubject",
default,
skip_serializing_if = "Option::is_none"
)]
pub email_subject: Option<String>,
#[serde(
rename = "defaultEmailTemplateId",
default,
skip_serializing_if = "Option::is_none"
)]
pub default_email_template_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CustomRRuleOptionsDto {
#[serde(rename = "intervalType")]
pub interval_type: String,
pub interval: f64,
#[serde(rename = "startDate")]
pub start_date: String,
#[serde(rename = "startTime", default, skip_serializing_if = "Option::is_none")]
pub start_time: Option<String>,
#[serde(rename = "endDate", default, skip_serializing_if = "Option::is_none")]
pub end_date: Option<String>,
#[serde(rename = "endTime", default, skip_serializing_if = "Option::is_none")]
pub end_time: Option<String>,
#[serde(
rename = "dayOfMonth",
default,
skip_serializing_if = "Option::is_none"
)]
pub day_of_month: Option<f64>,
#[serde(rename = "dayOfWeek", default, skip_serializing_if = "Option::is_none")]
pub day_of_week: Option<String>,
#[serde(rename = "numOfWeek", default, skip_serializing_if = "Option::is_none")]
pub num_of_week: Option<f64>,
#[serde(
rename = "monthOfYear",
default,
skip_serializing_if = "Option::is_none"
)]
pub month_of_year: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub count: Option<f64>,
#[serde(
rename = "daysBefore",
default,
skip_serializing_if = "Option::is_none"
)]
pub days_before: Option<f64>,
#[serde(
rename = "useStartAsPrimaryUserAccepted",
default,
skip_serializing_if = "Option::is_none"
)]
pub use_start_as_primary_user_accepted: Option<bool>,
#[serde(rename = "endType", default, skip_serializing_if = "Option::is_none")]
pub end_type: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DefaultInvoiceResponseDto {
#[serde(rename = "_id")]
pub id: String,
pub status: String,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "amountPaid")]
pub amount_paid: f64,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(rename = "businessDetails")]
pub business_details: serde_json::Value,
#[serde(rename = "invoiceNumber")]
pub invoice_number: f64,
pub currency: String,
#[serde(rename = "contactDetails")]
pub contact_details: serde_json::Value,
#[serde(rename = "issueDate")]
pub issue_date: String,
#[serde(rename = "dueDate")]
pub due_date: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<serde_json::Value>,
#[serde(
rename = "invoiceItems",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub invoice_items: Vec<String>,
pub total: f64,
pub title: String,
#[serde(rename = "amountDue")]
pub amount_due: f64,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
#[serde(
rename = "automaticTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_enabled: Option<bool>,
#[serde(
rename = "automaticTaxesCalculated",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_calculated: Option<bool>,
#[serde(
rename = "paymentSchedule",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_schedule: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DeleteInvoiceResponseDto {
#[serde(rename = "_id")]
pub id: String,
pub status: String,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "amountPaid")]
pub amount_paid: f64,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(rename = "businessDetails")]
pub business_details: serde_json::Value,
#[serde(rename = "invoiceNumber")]
pub invoice_number: f64,
pub currency: String,
#[serde(rename = "contactDetails")]
pub contact_details: serde_json::Value,
#[serde(rename = "issueDate")]
pub issue_date: String,
#[serde(rename = "dueDate")]
pub due_date: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<serde_json::Value>,
#[serde(
rename = "invoiceItems",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub invoice_items: Vec<String>,
pub total: f64,
pub title: String,
#[serde(rename = "amountDue")]
pub amount_due: f64,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
#[serde(
rename = "automaticTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_enabled: Option<bool>,
#[serde(
rename = "automaticTaxesCalculated",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_calculated: Option<bool>,
#[serde(
rename = "paymentSchedule",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_schedule: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DeleteInvoiceScheduleResponseDto {
pub success: bool,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DeleteInvoiceTemplateResponseDto {
pub success: bool,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DiscountDto {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<f64>,
#[serde(rename = "type")]
pub type_: String,
#[serde(
rename = "validOnProductIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub valid_on_product_ids: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct EstimateIdParam {
#[serde(rename = "estimateId")]
pub estimate_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct EstimateLineItemDto {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "productId", default, skip_serializing_if = "Option::is_none")]
pub product_id: Option<String>,
#[serde(rename = "priceId", default, skip_serializing_if = "Option::is_none")]
pub price_id: Option<String>,
pub currency: String,
pub amount: f64,
pub qty: f64,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub taxes: Vec<ItemTaxDto>,
#[serde(
rename = "automaticTaxCategoryId",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_tax_category_id: Option<String>,
#[serde(
rename = "isSetupFeeItem",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_setup_fee_item: Option<bool>,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(
rename = "taxInclusive",
default,
skip_serializing_if = "Option::is_none"
)]
pub tax_inclusive: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct EstimateResponseDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(rename = "_id")]
pub id: String,
#[serde(rename = "liveMode")]
pub live_mode: bool,
pub deleted: bool,
pub name: String,
pub currency: String,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetails,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<Vec<serde_json::Value>>,
pub discount: DiscountDto,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(
rename = "estimateNumberPrefix",
default,
skip_serializing_if = "Option::is_none"
)]
pub estimate_number_prefix: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<AttachmentsDto>,
#[serde(rename = "updatedBy", default, skip_serializing_if = "Option::is_none")]
pub updated_by: Option<String>,
pub total: f64,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
#[serde(rename = "__v")]
pub v: f64,
#[serde(rename = "automaticTaxesEnabled")]
pub automatic_taxes_enabled: bool,
#[serde(
rename = "termsNotes",
default,
skip_serializing_if = "Option::is_none"
)]
pub terms_notes: Option<String>,
#[serde(rename = "companyId")]
pub company_id: String,
#[serde(rename = "contactDetails")]
pub contact_details: ContactDetails,
#[serde(rename = "issueDate")]
pub issue_date: String,
#[serde(rename = "expiryDate")]
pub expiry_date: String,
#[serde(rename = "sentBy", default, skip_serializing_if = "Option::is_none")]
pub sent_by: Option<String>,
#[serde(rename = "automaticTaxesCalculated")]
pub automatic_taxes_calculated: bool,
pub meta: serde_json::Value,
#[serde(
rename = "estimateActionHistory",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub estimate_action_history: Vec<String>,
#[serde(rename = "sentTo")]
pub sent_to: SentTo,
#[serde(rename = "frequencySettings")]
pub frequency_settings: FrequencySettingsDto,
#[serde(rename = "lastVisitedAt")]
pub last_visited_at: String,
#[serde(rename = "totalamountInUSD")]
pub totalamount_in_usd: f64,
#[serde(
rename = "autoInvoice",
default,
skip_serializing_if = "Option::is_none"
)]
pub auto_invoice: Option<AutoInvoice>,
#[serde(rename = "traceId")]
pub trace_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct EstimateTemplateResponseDTO {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(rename = "_id")]
pub id: String,
#[serde(rename = "liveMode")]
pub live_mode: bool,
pub deleted: bool,
pub name: String,
pub currency: String,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetails,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<Vec<serde_json::Value>>,
pub discount: DiscountDto,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(
rename = "estimateNumberPrefix",
default,
skip_serializing_if = "Option::is_none"
)]
pub estimate_number_prefix: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<AttachmentsDto>,
#[serde(rename = "updatedBy", default, skip_serializing_if = "Option::is_none")]
pub updated_by: Option<String>,
pub total: f64,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
#[serde(rename = "__v")]
pub v: f64,
#[serde(rename = "automaticTaxesEnabled")]
pub automatic_taxes_enabled: bool,
#[serde(
rename = "termsNotes",
default,
skip_serializing_if = "Option::is_none"
)]
pub terms_notes: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct EstimateTemplatesDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<Vec<serde_json::Value>>,
#[serde(rename = "liveMode", default, skip_serializing_if = "Option::is_none")]
pub live_mode: Option<bool>,
pub discount: DiscountDto,
#[serde(
rename = "termsNotes",
default,
skip_serializing_if = "Option::is_none"
)]
pub terms_notes: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(
rename = "automaticTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub meta: Option<serde_json::Value>,
#[serde(
rename = "sendEstimateDetails",
default,
skip_serializing_if = "Option::is_none"
)]
pub send_estimate_details: Option<SendEstimateDto>,
#[serde(
rename = "estimateNumberPrefix",
default,
skip_serializing_if = "Option::is_none"
)]
pub estimate_number_prefix: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<AttachmentsDto>,
#[serde(
rename = "miscellaneousCharges",
default,
skip_serializing_if = "Option::is_none"
)]
pub miscellaneous_charges: Option<ProcessingFeeDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct FrequencySettingsDto {
pub enabled: bool,
pub schedule: ScheduleOptionsDto,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GenerateEstimateNumberResponse {
#[serde(rename = "estimateNumber")]
pub estimate_number: f64,
#[serde(rename = "traceId")]
pub trace_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GenerateInvoiceNumberResponseDto {
#[serde(
rename = "invoiceNumber",
default,
skip_serializing_if = "Option::is_none"
)]
pub invoice_number: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetInvoiceResponseDto {
#[serde(rename = "_id")]
pub id: String,
pub status: String,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "amountPaid")]
pub amount_paid: f64,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(rename = "businessDetails")]
pub business_details: serde_json::Value,
#[serde(rename = "invoiceNumber")]
pub invoice_number: f64,
pub currency: String,
#[serde(rename = "contactDetails")]
pub contact_details: serde_json::Value,
#[serde(rename = "issueDate")]
pub issue_date: String,
#[serde(rename = "dueDate")]
pub due_date: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<serde_json::Value>,
#[serde(
rename = "invoiceItems",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub invoice_items: Vec<String>,
pub total: f64,
pub title: String,
#[serde(rename = "amountDue")]
pub amount_due: f64,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
#[serde(
rename = "automaticTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_enabled: Option<bool>,
#[serde(
rename = "automaticTaxesCalculated",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_calculated: Option<bool>,
#[serde(
rename = "paymentSchedule",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_schedule: Option<serde_json::Value>,
#[serde(rename = "totalSummary")]
pub total_summary: TotalSummaryDto,
#[serde(
rename = "remindersConfiguration",
default,
skip_serializing_if = "Option::is_none"
)]
pub reminders_configuration: Option<RemindersConfigurationDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetInvoiceSettingsResponseDto {
#[serde(rename = "altId", default, skip_serializing_if = "Option::is_none")]
pub alt_id: Option<String>,
#[serde(rename = "altType", default, skip_serializing_if = "Option::is_none")]
pub alt_type: Option<String>,
#[serde(rename = "termsNote", default, skip_serializing_if = "Option::is_none")]
pub terms_note: Option<String>,
#[serde(
rename = "estimatesTermsNote",
default,
skip_serializing_if = "Option::is_none"
)]
pub estimates_terms_note: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(
rename = "estimatesTitle",
default,
skip_serializing_if = "Option::is_none"
)]
pub estimates_title: Option<String>,
#[serde(
rename = "invoiceNumberPrefix",
default,
skip_serializing_if = "Option::is_none"
)]
pub invoice_number_prefix: Option<String>,
#[serde(
rename = "estimateNumberPrefix",
default,
skip_serializing_if = "Option::is_none"
)]
pub estimate_number_prefix: Option<String>,
#[serde(
rename = "dueAfterXDays",
default,
skip_serializing_if = "Option::is_none"
)]
pub due_after_x_days: Option<f64>,
#[serde(
rename = "estimatesExpireAfterXDays",
default,
skip_serializing_if = "Option::is_none"
)]
pub estimates_expire_after_x_days: Option<f64>,
#[serde(
rename = "minimumPercentagePartialPayment",
default,
skip_serializing_if = "Option::is_none"
)]
pub minimum_percentage_partial_payment: Option<f64>,
#[serde(
rename = "customFields",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub custom_fields: Vec<String>,
#[serde(
rename = "customNotification",
default,
skip_serializing_if = "Option::is_none"
)]
pub custom_notification: Option<CustomNotificationDto>,
#[serde(
rename = "businessDetails",
default,
skip_serializing_if = "Option::is_none"
)]
pub business_details: Option<InvoiceSettingsBusinessDetailsDto>,
#[serde(
rename = "senderConfiguration",
default,
skip_serializing_if = "Option::is_none"
)]
pub sender_configuration: Option<InvoiceSettingsSenderConfigurationDto>,
#[serde(
rename = "productSettings",
default,
skip_serializing_if = "Option::is_none"
)]
pub product_settings: Option<InvoiceProductSettingsDto>,
#[serde(
rename = "reminderSettings",
default,
skip_serializing_if = "Option::is_none"
)]
pub reminder_settings: Option<ReminderSettingsDto>,
#[serde(
rename = "lateFeesConfiguration",
default,
skip_serializing_if = "Option::is_none"
)]
pub late_fees_configuration: Option<LateFeesConfigurationDto>,
#[serde(
rename = "tipsConfiguration",
default,
skip_serializing_if = "Option::is_none"
)]
pub tips_configuration: Option<TipsConfigurationDto>,
#[serde(
rename = "paymentMethods",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_methods: Option<PaymentMethodDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetScheduleResponseDto {
#[serde(rename = "_id")]
pub id: String,
pub status: serde_json::Value,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub schedule: Option<ScheduleOptionsDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub invoices: Vec<DefaultInvoiceResponseDto>,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(rename = "contactDetails")]
pub contact_details: ContactDetailsDto,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<DiscountDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<String>,
pub total: f64,
pub title: String,
#[serde(rename = "termsNotes")]
pub terms_notes: String,
#[serde(rename = "compiledTermsNotes")]
pub compiled_terms_notes: String,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetTemplateResponseDto {
#[serde(rename = "_id")]
pub id: String,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<DiscountDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<String>,
#[serde(
rename = "invoiceNumberPrefix",
default,
skip_serializing_if = "Option::is_none"
)]
pub invoice_number_prefix: Option<String>,
pub total: f64,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct InvoiceItemDto {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "productId", default, skip_serializing_if = "Option::is_none")]
pub product_id: Option<String>,
#[serde(rename = "priceId", default, skip_serializing_if = "Option::is_none")]
pub price_id: Option<String>,
pub currency: String,
pub amount: f64,
pub qty: f64,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub taxes: Vec<ItemTaxDto>,
#[serde(
rename = "automaticTaxCategoryId",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_tax_category_id: Option<String>,
#[serde(
rename = "isSetupFeeItem",
default,
skip_serializing_if = "Option::is_none"
)]
pub is_setup_fee_item: Option<bool>,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(
rename = "taxInclusive",
default,
skip_serializing_if = "Option::is_none"
)]
pub tax_inclusive: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct InvoiceProductSettingsDto {
#[serde(
rename = "enableImportProductDescription",
default,
skip_serializing_if = "Option::is_none"
)]
pub enable_import_product_description: Option<bool>,
#[serde(
rename = "descriptionOptional",
default,
skip_serializing_if = "Option::is_none"
)]
pub description_optional: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct InvoiceSettingsBusinessDetailsDto {
#[serde(rename = "logoUrl", default, skip_serializing_if = "Option::is_none")]
pub logo_url: Option<String>,
pub name: String,
#[serde(rename = "phoneNo", default, skip_serializing_if = "Option::is_none")]
pub phone_no: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub address: Option<Address>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub website: Option<String>,
#[serde(
rename = "customValues",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub custom_values: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct InvoiceSettingsSenderConfigurationDto {
#[serde(rename = "fromName", default, skip_serializing_if = "Option::is_none")]
pub from_name: Option<String>,
#[serde(rename = "fromEmail", default, skip_serializing_if = "Option::is_none")]
pub from_email: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ItemTaxDto {
#[serde(rename = "_id")]
pub id: String,
pub name: String,
pub rate: f64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub calculation: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "taxId", default, skip_serializing_if = "Option::is_none")]
pub tax_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LateFeesConfigurationDto {
pub enable: bool,
pub value: f64,
#[serde(rename = "type")]
pub type_: String,
pub frequency: LateFeesFrequencyDto,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub grace: Option<LateFeesGraceDto>,
#[serde(
rename = "maxLateFees",
default,
skip_serializing_if = "Option::is_none"
)]
pub max_late_fees: Option<LateFeesMaxFeesDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LateFeesFrequencyDto {
#[serde(rename = "intervalCount")]
pub interval_count: f64,
pub interval: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LateFeesGraceDto {
#[serde(rename = "intervalCount")]
pub interval_count: f64,
pub interval: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LateFeesMaxFeesDto {
#[serde(rename = "type")]
pub type_: String,
pub value: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ListEstimateTemplateResponseDTO {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub data: Vec<String>,
#[serde(rename = "totalCount")]
pub total_count: f64,
#[serde(rename = "traceId")]
pub trace_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ListEstimatesResponseDTO {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub estimates: Vec<String>,
pub total: f64,
#[serde(rename = "traceId")]
pub trace_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ListInvoicesResponseDto {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub invoices: Vec<GetInvoiceResponseDto>,
pub total: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ListSchedulesResponseDto {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub schedules: Vec<GetScheduleResponseDto>,
pub total: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ListTemplatesResponseDto {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub data: Vec<GetTemplateResponseDto>,
#[serde(rename = "totalCount")]
pub total_count: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct OldCreateInvoiceDTO {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PatchInvoiceStatsLastViewedDto {
#[serde(rename = "invoiceId")]
pub invoice_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PaymentMethodDto {
pub stripe: StripePaymentMethodDto,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PaymentScheduleConfigDto {
#[serde(rename = "type")]
pub type_: String,
#[serde(rename = "dateConfig")]
pub date_config: PaymentScheduleDateConfigDto,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub schedules: Vec<Vec<serde_json::Value>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PaymentScheduleDateConfigDto {
#[serde(rename = "depositDateType")]
pub deposit_date_type: String,
#[serde(rename = "scheduleDateType")]
pub schedule_date_type: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PaymentScheduleDto {
#[serde(rename = "type")]
pub type_: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub schedules: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ProcessingFeeDto {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub charges: Vec<Vec<serde_json::Value>>,
#[serde(
rename = "collectedMiscellaneousCharges",
default,
skip_serializing_if = "Option::is_none"
)]
pub collected_miscellaneous_charges: Option<f64>,
#[serde(rename = "paidCharges", default, skip_serializing_if = "Vec::is_empty")]
pub paid_charges: Vec<ProcessingFeePaidChargeDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ProcessingFeePaidChargeDto {
pub name: String,
pub charge: f64,
pub amount: f64,
#[serde(rename = "_id")]
pub id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RecordPaymentDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub mode: String,
pub card: CardDto,
pub cheque: ChequeDto,
pub notes: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub amount: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub meta: Option<serde_json::Value>,
#[serde(
rename = "paymentScheduleIds",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub payment_schedule_ids: Vec<String>,
#[serde(
rename = "fulfilledAt",
default,
skip_serializing_if = "Option::is_none"
)]
pub fulfilled_at: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RecordPaymentResponseDto {
pub success: bool,
pub invoice: DefaultInvoiceResponseDto,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ReminderDto {
pub enabled: bool,
#[serde(rename = "emailTemplate")]
pub email_template: String,
#[serde(rename = "smsTemplate")]
pub sms_template: String,
#[serde(rename = "emailSubject")]
pub email_subject: String,
#[serde(rename = "reminderId")]
pub reminder_id: String,
#[serde(rename = "reminderName")]
pub reminder_name: String,
#[serde(rename = "reminderTime")]
pub reminder_time: String,
#[serde(rename = "intervalType")]
pub interval_type: String,
#[serde(rename = "maxReminders")]
pub max_reminders: f64,
#[serde(rename = "reminderInvoiceCondition")]
pub reminder_invoice_condition: String,
#[serde(rename = "reminderNumber")]
pub reminder_number: f64,
#[serde(rename = "startTime", default, skip_serializing_if = "Option::is_none")]
pub start_time: Option<String>,
#[serde(rename = "endTime", default, skip_serializing_if = "Option::is_none")]
pub end_time: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ReminderExecutionDetailsList {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ReminderSettingsDto {
#[serde(rename = "defaultEmailTemplateId")]
pub default_email_template_id: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub reminders: Vec<ReminderDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RemindersConfigurationDto {
#[serde(rename = "reminderExecutionDetailsList")]
pub reminder_execution_details_list: ReminderExecutionDetailsList,
#[serde(rename = "reminderSettings")]
pub reminder_settings: ReminderSettingsDto,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ScheduleInvoiceScheduleDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(
rename = "autoPayment",
default,
skip_serializing_if = "Option::is_none"
)]
pub auto_payment: Option<AutoPaymentDetailsDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ScheduleInvoiceScheduleResponseDto {
#[serde(rename = "_id")]
pub id: String,
pub status: serde_json::Value,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub schedule: Option<ScheduleOptionsDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub invoices: Vec<DefaultInvoiceResponseDto>,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(rename = "contactDetails")]
pub contact_details: ContactDetailsDto,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<DiscountDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<String>,
pub total: f64,
pub title: String,
#[serde(rename = "termsNotes")]
pub terms_notes: String,
#[serde(rename = "compiledTermsNotes")]
pub compiled_terms_notes: String,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ScheduleOptionsDto {
#[serde(rename = "executeAt", default, skip_serializing_if = "Option::is_none")]
pub execute_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rrule: Option<CustomRRuleOptionsDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SendEstimateDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub action: String,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "userId")]
pub user_id: String,
#[serde(rename = "sentFrom", default, skip_serializing_if = "Option::is_none")]
pub sent_from: Option<InvoiceSettingsSenderConfigurationDto>,
#[serde(
rename = "estimateName",
default,
skip_serializing_if = "Option::is_none"
)]
pub estimate_name: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SendInvoiceDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(rename = "userId")]
pub user_id: String,
pub action: String,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "sentFrom", default, skip_serializing_if = "Option::is_none")]
pub sent_from: Option<InvoiceSettingsSenderConfigurationDto>,
#[serde(
rename = "autoPayment",
default,
skip_serializing_if = "Option::is_none"
)]
pub auto_payment: Option<AutoPaymentDetailsDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SendInvoicesResponseDto {
pub invoice: DefaultInvoiceResponseDto,
#[serde(rename = "smsData")]
pub sms_data: serde_json::Value,
#[serde(rename = "emailData")]
pub email_data: serde_json::Value,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SentTo {
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SentToDto {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub email: Vec<String>,
#[serde(rename = "emailCc", default, skip_serializing_if = "Vec::is_empty")]
pub email_cc: Vec<String>,
#[serde(rename = "emailBcc", default, skip_serializing_if = "Vec::is_empty")]
pub email_bcc: Vec<String>,
#[serde(rename = "phoneNo", default, skip_serializing_if = "Vec::is_empty")]
pub phone_no: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SepaDirectDebitDTO {
pub bank_code: String,
pub last4: String,
pub branch_code: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct StripePaymentMethodDto {
#[serde(rename = "enableBankDebitOnly")]
pub enable_bank_debit_only: bool,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Text2PayDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
pub currency: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<InvoiceItemDto>,
#[serde(
rename = "termsNotes",
default,
skip_serializing_if = "Option::is_none"
)]
pub terms_notes: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(rename = "contactDetails")]
pub contact_details: ContactDetailsDto,
#[serde(
rename = "invoiceNumber",
default,
skip_serializing_if = "Option::is_none"
)]
pub invoice_number: Option<String>,
#[serde(rename = "issueDate")]
pub issue_date: String,
#[serde(rename = "dueDate", default, skip_serializing_if = "Option::is_none")]
pub due_date: Option<String>,
#[serde(rename = "sentTo")]
pub sent_to: SentToDto,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(
rename = "automaticTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_enabled: Option<bool>,
#[serde(
rename = "paymentSchedule",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_schedule: Option<PaymentScheduleDto>,
#[serde(
rename = "lateFeesConfiguration",
default,
skip_serializing_if = "Option::is_none"
)]
pub late_fees_configuration: Option<LateFeesConfigurationDto>,
#[serde(
rename = "tipsConfiguration",
default,
skip_serializing_if = "Option::is_none"
)]
pub tips_configuration: Option<TipsConfigurationDto>,
#[serde(
rename = "invoiceNumberPrefix",
default,
skip_serializing_if = "Option::is_none"
)]
pub invoice_number_prefix: Option<String>,
#[serde(
rename = "paymentMethods",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_methods: Option<PaymentMethodDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<AttachmentsDto>,
#[serde(
rename = "miscellaneousCharges",
default,
skip_serializing_if = "Option::is_none"
)]
pub miscellaneous_charges: Option<ProcessingFeeDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(
rename = "includeTermsNote",
default,
skip_serializing_if = "Option::is_none"
)]
pub include_terms_note: Option<bool>,
pub action: String,
#[serde(rename = "userId")]
pub user_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<DiscountDto>,
#[serde(
rename = "businessDetails",
default,
skip_serializing_if = "Option::is_none"
)]
pub business_details: Option<BusinessDetailsDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Text2PayInvoiceResponseDto {
pub invoice: DefaultInvoiceResponseDto,
#[serde(rename = "invoiceUrl")]
pub invoice_url: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TipsConfigurationDto {
#[serde(
rename = "tipsPercentage",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub tips_percentage: Vec<String>,
#[serde(rename = "tipsEnabled")]
pub tips_enabled: bool,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TotalSummaryDto {
#[serde(rename = "subTotal")]
pub sub_total: f64,
pub discount: f64,
pub tax: f64,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct USBankAccountDto {
pub bank_name: String,
pub last4: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateAndScheduleInvoiceScheduleResponseDto {
#[serde(rename = "_id")]
pub id: String,
pub status: serde_json::Value,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub schedule: Option<ScheduleOptionsDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub invoices: Vec<DefaultInvoiceResponseDto>,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(rename = "contactDetails")]
pub contact_details: ContactDetailsDto,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<DiscountDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<String>,
pub total: f64,
pub title: String,
#[serde(rename = "termsNotes")]
pub terms_notes: String,
#[serde(rename = "compiledTermsNotes")]
pub compiled_terms_notes: String,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateEstimateDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<EstimateLineItemDto>,
#[serde(rename = "liveMode", default, skip_serializing_if = "Option::is_none")]
pub live_mode: Option<bool>,
pub discount: DiscountDto,
#[serde(
rename = "termsNotes",
default,
skip_serializing_if = "Option::is_none"
)]
pub terms_notes: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(rename = "contactDetails")]
pub contact_details: ContactDetailsDto,
#[serde(
rename = "estimateNumber",
default,
skip_serializing_if = "Option::is_none"
)]
pub estimate_number: Option<f64>,
#[serde(rename = "issueDate", default, skip_serializing_if = "Option::is_none")]
pub issue_date: Option<String>,
#[serde(
rename = "expiryDate",
default,
skip_serializing_if = "Option::is_none"
)]
pub expiry_date: Option<String>,
#[serde(rename = "sentTo", default, skip_serializing_if = "Option::is_none")]
pub sent_to: Option<SentToDto>,
#[serde(
rename = "automaticTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub meta: Option<serde_json::Value>,
#[serde(
rename = "sendEstimateDetails",
default,
skip_serializing_if = "Option::is_none"
)]
pub send_estimate_details: Option<SendEstimateDto>,
#[serde(rename = "frequencySettings")]
pub frequency_settings: FrequencySettingsDto,
#[serde(
rename = "estimateNumberPrefix",
default,
skip_serializing_if = "Option::is_none"
)]
pub estimate_number_prefix: Option<String>,
#[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<AttachmentsDto>,
#[serde(
rename = "autoInvoice",
default,
skip_serializing_if = "Option::is_none"
)]
pub auto_invoice: Option<AutoInvoicingDto>,
#[serde(
rename = "miscellaneousCharges",
default,
skip_serializing_if = "Option::is_none"
)]
pub miscellaneous_charges: Option<ProcessingFeeDto>,
#[serde(
rename = "paymentScheduleConfig",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_schedule_config: Option<PaymentScheduleConfigDto>,
#[serde(
rename = "estimateStatus",
default,
skip_serializing_if = "Option::is_none"
)]
pub estimate_status: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateInvoiceDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub currency: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(
rename = "businessDetails",
default,
skip_serializing_if = "Option::is_none"
)]
pub business_details: Option<BusinessDetailsDto>,
#[serde(
rename = "invoiceNumber",
default,
skip_serializing_if = "Option::is_none"
)]
pub invoice_number: Option<String>,
#[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
pub contact_id: Option<String>,
#[serde(
rename = "contactDetails",
default,
skip_serializing_if = "Option::is_none"
)]
pub contact_details: Option<ContactDetailsDto>,
#[serde(
rename = "termsNotes",
default,
skip_serializing_if = "Option::is_none"
)]
pub terms_notes: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<DiscountDto>,
#[serde(
rename = "invoiceItems",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub invoice_items: Vec<InvoiceItemDto>,
#[serde(
rename = "automaticTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_enabled: Option<bool>,
#[serde(rename = "liveMode", default, skip_serializing_if = "Option::is_none")]
pub live_mode: Option<bool>,
#[serde(rename = "issueDate")]
pub issue_date: String,
#[serde(rename = "dueDate")]
pub due_date: String,
#[serde(
rename = "paymentSchedule",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_schedule: Option<PaymentScheduleDto>,
#[serde(
rename = "tipsConfiguration",
default,
skip_serializing_if = "Option::is_none"
)]
pub tips_configuration: Option<TipsConfigurationDto>,
#[serde(
rename = "xeroDetails",
default,
skip_serializing_if = "Option::is_none"
)]
pub xero_details: Option<serde_json::Value>,
#[serde(
rename = "invoiceNumberPrefix",
default,
skip_serializing_if = "Option::is_none"
)]
pub invoice_number_prefix: Option<String>,
#[serde(
rename = "paymentMethods",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_methods: Option<PaymentMethodDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<AttachmentsDto>,
#[serde(
rename = "miscellaneousCharges",
default,
skip_serializing_if = "Option::is_none"
)]
pub miscellaneous_charges: Option<ProcessingFeeDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateInvoiceLateFeesConfigurationDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(rename = "lateFeesConfiguration")]
pub late_fees_configuration: LateFeesConfigurationDto,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateInvoiceResponseDto {
#[serde(rename = "_id")]
pub id: String,
pub status: String,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "amountPaid")]
pub amount_paid: f64,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(rename = "businessDetails")]
pub business_details: serde_json::Value,
#[serde(rename = "invoiceNumber")]
pub invoice_number: f64,
pub currency: String,
#[serde(rename = "contactDetails")]
pub contact_details: serde_json::Value,
#[serde(rename = "issueDate")]
pub issue_date: String,
#[serde(rename = "dueDate")]
pub due_date: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<serde_json::Value>,
#[serde(
rename = "invoiceItems",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub invoice_items: Vec<String>,
pub total: f64,
pub title: String,
#[serde(rename = "amountDue")]
pub amount_due: f64,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
#[serde(
rename = "automaticTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_enabled: Option<bool>,
#[serde(
rename = "automaticTaxesCalculated",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_calculated: Option<bool>,
#[serde(
rename = "paymentSchedule",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_schedule: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateInvoiceScheduleDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(rename = "contactDetails")]
pub contact_details: ContactDetailsDto,
pub schedule: ScheduleOptionsDto,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<InvoiceItemDto>,
pub discount: DiscountDto,
#[serde(
rename = "termsNotes",
default,
skip_serializing_if = "Option::is_none"
)]
pub terms_notes: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<AttachmentsDto>,
#[serde(
rename = "miscellaneousCharges",
default,
skip_serializing_if = "Option::is_none"
)]
pub miscellaneous_charges: Option<ProcessingFeeDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateInvoiceScheduleResponseDto {
#[serde(rename = "_id")]
pub id: String,
pub status: serde_json::Value,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub schedule: Option<ScheduleOptionsDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub invoices: Vec<DefaultInvoiceResponseDto>,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(rename = "contactDetails")]
pub contact_details: ContactDetailsDto,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<DiscountDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<String>,
pub total: f64,
pub title: String,
#[serde(rename = "termsNotes")]
pub terms_notes: String,
#[serde(rename = "compiledTermsNotes")]
pub compiled_terms_notes: String,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateInvoiceTemplateDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub internal: Option<bool>,
pub name: String,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<InvoiceItemDto>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<DiscountDto>,
#[serde(
rename = "termsNotes",
default,
skip_serializing_if = "Option::is_none"
)]
pub terms_notes: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(
rename = "miscellaneousCharges",
default,
skip_serializing_if = "Option::is_none"
)]
pub miscellaneous_charges: Option<ProcessingFeeDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateInvoiceTemplateResponseDto {
#[serde(rename = "_id")]
pub id: String,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(rename = "businessDetails")]
pub business_details: BusinessDetailsDto,
pub currency: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<DiscountDto>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub items: Vec<String>,
#[serde(
rename = "invoiceNumberPrefix",
default,
skip_serializing_if = "Option::is_none"
)]
pub invoice_number_prefix: Option<String>,
pub total: f64,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdatePaymentMethodsConfigurationDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
#[serde(
rename = "paymentMethods",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_methods: Option<PaymentMethodDto>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct VoidInvoiceDto {
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct VoidInvoiceResponseDto {
#[serde(rename = "_id")]
pub id: String,
pub status: String,
#[serde(rename = "liveMode")]
pub live_mode: bool,
#[serde(rename = "amountPaid")]
pub amount_paid: f64,
#[serde(rename = "altId")]
pub alt_id: String,
#[serde(rename = "altType")]
pub alt_type: String,
pub name: String,
#[serde(rename = "businessDetails")]
pub business_details: serde_json::Value,
#[serde(rename = "invoiceNumber")]
pub invoice_number: f64,
pub currency: String,
#[serde(rename = "contactDetails")]
pub contact_details: serde_json::Value,
#[serde(rename = "issueDate")]
pub issue_date: String,
#[serde(rename = "dueDate")]
pub due_date: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount: Option<serde_json::Value>,
#[serde(
rename = "invoiceItems",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub invoice_items: Vec<String>,
pub total: f64,
pub title: String,
#[serde(rename = "amountDue")]
pub amount_due: f64,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
#[serde(
rename = "automaticTaxesEnabled",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_enabled: Option<bool>,
#[serde(
rename = "automaticTaxesCalculated",
default,
skip_serializing_if = "Option::is_none"
)]
pub automatic_taxes_calculated: Option<bool>,
#[serde(
rename = "paymentSchedule",
default,
skip_serializing_if = "Option::is_none"
)]
pub payment_schedule: Option<serde_json::Value>,
}