#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct AddressLegacy {
#[serde(skip_serializing_if = "Option::is_none")]
pub city: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub country: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub line_1: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub line_2: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub postal_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub state: Option<String>,
}
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct Attributes {
#[serde(
flatten,
default,
skip_serializing_if = "std::collections::HashMap::is_empty"
)]
pub additional_properties: std::collections::HashMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub enum CardType {
#[serde(rename = "ALELO")]
Alelo,
#[serde(rename = "AMEX")]
Amex,
#[serde(rename = "CONECS")]
Conecs,
#[serde(rename = "CUP")]
Cup,
#[serde(rename = "DINERS")]
Diners,
#[serde(rename = "DISCOVER")]
Discover,
#[serde(rename = "EFTPOS")]
Eftpos,
#[serde(rename = "ELO")]
Elo,
#[serde(rename = "ELV")]
Elv,
#[serde(rename = "GIROCARD")]
Girocard,
#[serde(rename = "HIPERCARD")]
Hipercard,
#[serde(rename = "INTERAC")]
Interac,
#[serde(rename = "JCB")]
Jcb,
#[serde(rename = "MAESTRO")]
Maestro,
#[serde(rename = "MASTERCARD")]
Mastercard,
#[serde(rename = "PLUXEE")]
Pluxee,
#[serde(rename = "SWILE")]
Swile,
#[serde(rename = "TICKET")]
Ticket,
#[serde(rename = "VISA")]
Visa,
#[serde(rename = "VISA_ELECTRON")]
VisaElectron,
#[serde(rename = "VISA_VPAY")]
VisaVpay,
#[serde(rename = "VPAY")]
Vpay,
#[serde(rename = "VR")]
Vr,
#[serde(rename = "UNKNOWN")]
Unknown,
#[serde(untagged)]
Other(String),
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub enum Currency {
BGN,
BRL,
CHF,
CLP,
COP,
CZK,
DKK,
EUR,
GBP,
HRK,
HUF,
NOK,
PLN,
RON,
SEK,
USD,
#[serde(untagged)]
Other(String),
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub enum EntryMode {
#[serde(rename = "BOLETO")]
Boleto,
#[serde(rename = "SOFORT")]
Sofort,
#[serde(rename = "IDEAL")]
Ideal,
#[serde(rename = "BANCONTACT")]
Bancontact,
#[serde(rename = "EPS")]
Eps,
#[serde(rename = "MYBANK")]
Mybank,
#[serde(rename = "SATISPAY")]
Satispay,
#[serde(rename = "BLIK")]
Blik,
P24,
#[serde(rename = "GIROPAY")]
Giropay,
#[serde(rename = "PIX")]
Pix,
#[serde(rename = "QR_CODE_PIX")]
QrCodePix,
#[serde(rename = "APPLE_PAY")]
ApplePay,
#[serde(rename = "GOOGLE_PAY")]
GooglePay,
#[serde(rename = "PAYPAL")]
Paypal,
#[serde(rename = "TWINT")]
Twint,
#[serde(rename = "NONE")]
None,
#[serde(rename = "CHIP")]
Chip,
#[serde(rename = "MANUAL_ENTRY")]
ManualEntry,
#[serde(rename = "CUSTOMER_ENTRY")]
CustomerEntry,
#[serde(rename = "MAGSTRIPE_FALLBACK")]
MagstripeFallback,
#[serde(rename = "MAGSTRIPE")]
Magstripe,
#[serde(rename = "DIRECT_DEBIT")]
DirectDebit,
#[serde(rename = "CONTACTLESS")]
Contactless,
#[serde(rename = "MOTO")]
Moto,
#[serde(rename = "CONTACTLESS_MAGSTRIPE")]
ContactlessMagstripe,
#[serde(rename = "N/A")]
NA,
#[serde(untagged)]
Other(String),
}
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct Error {
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error_code: Option<String>,
}
impl std::fmt::Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
if let Some(message) = &self.message {
write!(f, "{}", message)
} else {
write!(f, "{:?}", self)
}
}
}
impl std::error::Error for Error {}
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct ErrorExtended {
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub param: Option<String>,
}
impl std::fmt::Display for ErrorExtended {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
if let Some(message) = &self.message {
write!(f, "{}", message)
} else {
write!(f, "{:?}", self)
}
}
}
impl std::error::Error for ErrorExtended {}
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct ErrorForbidden {
#[serde(skip_serializing_if = "Option::is_none")]
pub error_message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status_code: Option<String>,
}
impl std::fmt::Display for ErrorForbidden {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
if let Some(error_message) = &self.error_message {
write!(f, "{}", error_message)
} else {
write!(f, "{:?}", self)
}
}
}
impl std::error::Error for ErrorForbidden {}
pub type EventId = i64;
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub enum EventStatus {
#[serde(rename = "FAILED")]
Failed,
#[serde(rename = "PAID_OUT")]
PaidOut,
#[serde(rename = "PENDING")]
Pending,
#[serde(rename = "RECONCILED")]
Reconciled,
#[serde(rename = "REFUNDED")]
Refunded,
#[serde(rename = "SCHEDULED")]
Scheduled,
#[serde(rename = "SUCCESSFUL")]
Successful,
#[serde(untagged)]
Other(String),
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub enum EventType {
#[serde(rename = "PAYOUT")]
Payout,
#[serde(rename = "CHARGE_BACK")]
ChargeBack,
#[serde(rename = "REFUND")]
Refund,
#[serde(rename = "PAYOUT_DEDUCTION")]
PayoutDeduction,
#[serde(untagged)]
Other(String),
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct Invite {
pub email: String,
pub expires_at: crate::datetime::DateTime,
}
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct MandateResponse {
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub merchant_code: Option<String>,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub enum MembershipStatus {
#[serde(rename = "accepted")]
Accepted,
#[serde(rename = "pending")]
Pending,
#[serde(rename = "expired")]
Expired,
#[serde(rename = "disabled")]
Disabled,
#[serde(rename = "unknown")]
Unknown,
#[serde(untagged)]
Other(String),
}
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct Metadata {
#[serde(
flatten,
default,
skip_serializing_if = "std::collections::HashMap::is_empty"
)]
pub additional_properties: std::collections::HashMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub enum PaymentType {
#[serde(rename = "CASH")]
Cash,
#[serde(rename = "POS")]
Pos,
#[serde(rename = "ECOM")]
Ecom,
#[serde(rename = "RECURRING")]
Recurring,
#[serde(rename = "BITCOIN")]
Bitcoin,
#[serde(rename = "BALANCE")]
Balance,
#[serde(rename = "MOTO")]
Moto,
#[serde(rename = "BOLETO")]
Boleto,
#[serde(rename = "DIRECT_DEBIT")]
DirectDebit,
#[serde(rename = "APM")]
Apm,
#[serde(rename = "UNKNOWN")]
Unknown,
#[serde(untagged)]
Other(String),
}
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct PersonalDetails {
#[serde(skip_serializing_if = "Option::is_none")]
pub first_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub birth_date: Option<crate::datetime::Date>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tax_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address: Option<AddressLegacy>,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct Problem {
#[serde(rename = "type")]
pub r#type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub detail: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub instance: Option<String>,
#[serde(
flatten,
default,
skip_serializing_if = "std::collections::HashMap::is_empty"
)]
pub additional_properties: std::collections::HashMap<String, serde_json::Value>,
}
impl std::fmt::Display for Problem {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match (&self.title, &self.detail) {
(Some(title), Some(detail)) => write!(f, "{}: {}", title, detail),
(Some(title), None) => write!(f, "{}", title),
(None, Some(detail)) => write!(f, "{}", detail),
(None, None) => write!(f, "{:?}", self),
}
}
}
impl std::error::Error for Problem {}
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct TransactionBase {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transaction_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub amount: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub currency: Option<Currency>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp: Option<crate::datetime::DateTime>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_type: Option<PaymentType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub installments_count: Option<i64>,
}
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct TransactionCheckoutInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub merchant_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vat_amount: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tip_amount: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub entry_mode: Option<EntryMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub auth_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub internal_id: Option<i64>,
}
pub type TransactionId = String;