sumup_rs/models/
customer.rs1use super::common::Card;
2use chrono::{DateTime, Utc};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct Customer {
7 pub customer_id: String,
8 #[serde(default)]
9 pub personal_details: Option<PersonalDetails>,
10}
11
12#[derive(Debug, Clone, Serialize, Deserialize, Default)]
13pub struct PersonalDetails {
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub first_name: Option<String>,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub last_name: Option<String>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub email: Option<String>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub phone: Option<String>,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub birth_date: Option<String>, #[serde(skip_serializing_if = "Option::is_none")]
25 pub tax_id: Option<String>,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub address: Option<Address>,
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize, Default)]
31pub struct Address {
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub city: Option<String>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub country: Option<String>,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub line_1: Option<String>,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub line_2: Option<String>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub postal_code: Option<String>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub state: Option<String>,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
48pub struct CreateCustomerRequest {
49 pub customer_id: String,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub personal_details: Option<PersonalDetails>,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
55pub struct UpdateCustomerRequest {
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub personal_details: Option<PersonalDetails>,
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
61pub struct PaymentInstrument {
62 pub token: String,
63 pub active: bool,
64 #[serde(rename = "type")]
65 pub instrument_type: String,
66 #[serde(default)]
67 pub card: Option<Card>,
68 pub created_at: DateTime<Utc>,
69}