use serde::{Deserialize, Serialize};
#[derive(Deserialize, Debug, Clone)]
pub struct TransactionResponse {
pub status: bool,
pub message: String,
pub data: TransactionResponseData,
}
#[derive(Deserialize, Debug, Clone)]
pub struct TransactionResponseData {
pub authorization_url: String,
pub access_code: String,
pub reference: String,
}
#[derive(Deserialize, Debug, Clone)]
pub struct TransactionStatus {
pub status: bool,
pub message: String,
pub data: TransactionStatusData,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct TransactionStatusList {
pub status: bool,
pub message: String,
pub data: Vec<TransactionStatusData>,
pub meta: MetaData,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct TransactionTimeline {
pub status: bool,
pub message: String,
pub data: TransactionTimelineData,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct TransactionTimelineData {
pub time_spent: Option<u32>,
pub attempts: Option<u32>,
pub authentication: Option<String>,
pub errors: Option<u32>,
pub success: Option<bool>,
pub mobile: Option<bool>,
pub input: Option<String>,
pub channel: Option<String>,
pub history: Option<Vec<TransactionHistory>>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct TransactionHistory {
#[serde(rename = "type")]
pub action_type: String,
pub message: String,
pub time: u32,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct TransactionStatusData {
pub id: Option<u32>,
pub status: Option<String>,
pub reference: Option<String>,
pub amount: Option<u32>,
pub message: Option<String>,
pub gateway_response: Option<String>,
pub paid_at: Option<String>,
pub created_at: Option<String>,
pub channel: Option<String>,
pub currency: Option<String>,
pub ip_address: Option<String>,
pub metadata: Option<String>,
pub fees: Option<i32>,
pub customer: Option<Customer>,
pub authorization: Option<Authorization>,
}
#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct Authorization {
pub authorization_code: Option<String>,
pub bin: Option<String>,
pub last4: Option<String>,
pub exp_month: Option<String>,
pub exp_year: Option<String>,
pub channel: Option<String>,
pub card_type: Option<String>,
pub bank: Option<String>,
pub country_code: Option<String>,
pub brand: Option<String>,
pub reusable: Option<bool>,
pub signature: Option<String>,
pub account_name: Option<String>,
}
#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct Customer {
pub id: Option<u32>,
pub first_name: Option<String>,
pub last_name: Option<String>,
pub email: Option<String>,
pub customer_code: String,
pub phone: Option<String>,
pub metadata: Option<String>,
pub risk_action: Option<String>,
pub international_format_phone: Option<String>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct TransactionTotalsResponse {
pub status: bool,
pub message: String,
pub data: TransactionTotalData,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct TransactionTotalData {
pub total_transactions: Option<u32>,
pub unique_customers: Option<u32>,
pub total_volume: Option<u32>,
pub total_volume_by_currency: Option<Vec<VolumeByCurrency>>,
pub pending_transfers: Option<u32>,
pub pending_transfers_by_currency: Option<Vec<VolumeByCurrency>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct VolumeByCurrency {
pub currency: String,
pub amount: u32,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ExportTransactionResponse {
pub status: bool,
pub message: String,
pub data: ExportTransactionData,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ExportTransactionData {
pub path: String,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct PartialDebitTransactionResponse {
pub status: bool,
pub message: String,
pub data: TransactionStatusData,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct TransactionSplitResponse {
pub status: bool,
pub message: String,
pub data: SplitData,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct SplitData {
pub id: u32,
pub name: String,
#[serde(rename = "type")]
pub split_type: String,
pub currency: String,
pub integration: u32,
pub domain: String,
pub split_code: String,
pub active: Option<bool>,
pub bearer_type: String,
pub bearer_subaccount: u32,
pub created_at: String,
pub updated_at: String,
pub subaccounts: Vec<SubaccountData>,
pub total_subaccounts: u32,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct SubaccountData {
pub subaccount: SubaccountsResponseData,
pub share: u32,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ListSubaccountsResponse {
pub status: bool,
pub message: String,
pub data: Vec<SubaccountsResponseData>,
pub meta: MetaData,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct SubaccountsResponseData {
pub integration: Option<u32>,
pub domain: Option<String>,
pub subaccount_code: String,
pub business_name: String,
pub description: Option<String>,
pub primary_contact_name: Option<String>,
pub primary_contact_email: Option<String>,
pub primary_contact_phone: Option<String>,
pub metadata: Option<String>,
pub percentage_charge: f32,
pub is_verified: Option<bool>,
pub settlement_bank: String,
pub account_number: String,
pub settlement_schedule: Option<String>,
pub id: u32,
#[serde(rename = "createdAt")]
pub created_at: Option<String>,
#[serde(rename = "updatedAt")]
pub updated_at: Option<String>,
}
#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct MetaData {
pub total: u32,
pub skipped: u32,
#[serde(rename = "perPage")]
pub per_page: String,
pub page: u32,
#[serde(rename = "pageCount")]
pub page_count: u32,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct TransactionSplitListResponse {
pub status: bool,
pub message: String,
pub data: Vec<SplitData>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ResponseWithoutData {
pub status: bool,
pub message: String,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct CreateSubaccountResponse {
pub status: bool,
pub message: String,
pub data: SubaccountsResponseData,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct FetchSubaccountResponse {
pub status: bool,
pub message: String,
pub data: SubaccountsResponseData,
}