1use serde::{Deserialize, Serialize};
4
5use crate::{
6 EditableField, EditableFieldConcealedString, EditableFieldCountryCode, EditableFieldDate,
7 EditableFieldString, EditableFieldSubdivisionCode, EditableFieldYearMonth,
8};
9
10#[derive(Clone, Debug, Default, Serialize, Deserialize)]
12#[serde(rename_all = "camelCase", bound(deserialize = "E: Deserialize<'de>"))]
13pub struct AddressCredential<E = ()> {
14 #[serde(default, skip_serializing_if = "Option::is_none")]
18 pub street_address: Option<EditableField<EditableFieldString, E>>,
19 #[serde(default, skip_serializing_if = "Option::is_none")]
21 pub postal_code: Option<EditableField<EditableFieldString, E>>,
22 #[serde(default, skip_serializing_if = "Option::is_none")]
24 pub city: Option<EditableField<EditableFieldString, E>>,
25 #[serde(default, skip_serializing_if = "Option::is_none")]
27 pub territory: Option<EditableField<EditableFieldSubdivisionCode, E>>,
28 #[serde(default, skip_serializing_if = "Option::is_none")]
31 pub country: Option<EditableField<EditableFieldCountryCode, E>>,
32 #[serde(default, skip_serializing_if = "Option::is_none")]
34 pub tel: Option<EditableField<EditableFieldString, E>>,
35}
36
37#[derive(Clone, Debug, Default, Serialize, Deserialize)]
38#[serde(rename_all = "camelCase", bound(deserialize = "E: Deserialize<'de>"))]
39pub struct CreditCardCredential<E = ()> {
40 #[serde(default, skip_serializing_if = "Option::is_none")]
42 pub number: Option<EditableField<EditableFieldConcealedString, E>>,
43 #[serde(default, skip_serializing_if = "Option::is_none")]
45 pub full_name: Option<EditableField<EditableFieldString, E>>,
46 #[serde(default, skip_serializing_if = "Option::is_none")]
48 pub card_type: Option<EditableField<EditableFieldString, E>>,
49 #[serde(default, skip_serializing_if = "Option::is_none")]
51 pub verification_number: Option<EditableField<EditableFieldConcealedString, E>>,
52 #[serde(default, skip_serializing_if = "Option::is_none")]
54 pub pin: Option<EditableField<EditableFieldConcealedString, E>>,
55 #[serde(default, skip_serializing_if = "Option::is_none")]
57 pub expiry_date: Option<EditableField<EditableFieldYearMonth, E>>,
58 #[serde(default, skip_serializing_if = "Option::is_none")]
60 pub valid_from: Option<EditableField<EditableFieldYearMonth, E>>,
61}
62
63#[derive(Clone, Debug, Default, Serialize, Deserialize)]
67#[serde(rename_all = "camelCase", bound(deserialize = "E: Deserialize<'de>"))]
68pub struct DriversLicenseCredential<E = ()> {
69 #[serde(default, skip_serializing_if = "Option::is_none")]
71 pub full_name: Option<EditableField<EditableFieldString, E>>,
72 #[serde(default, skip_serializing_if = "Option::is_none")]
74 pub birth_date: Option<EditableField<EditableFieldDate, E>>,
75 #[serde(default, skip_serializing_if = "Option::is_none")]
77 pub issue_date: Option<EditableField<EditableFieldDate, E>>,
78 #[serde(default, skip_serializing_if = "Option::is_none")]
80 pub expiry_date: Option<EditableField<EditableFieldDate, E>>,
81 #[serde(default, skip_serializing_if = "Option::is_none")]
83 pub issuing_authority: Option<EditableField<EditableFieldString, E>>,
84 #[serde(default, skip_serializing_if = "Option::is_none")]
88 pub territory: Option<EditableField<EditableFieldSubdivisionCode, E>>,
89 #[serde(default, skip_serializing_if = "Option::is_none")]
91 pub country: Option<EditableField<EditableFieldCountryCode, E>>,
92 #[serde(default, skip_serializing_if = "Option::is_none")]
94 pub license_number: Option<EditableField<EditableFieldString, E>>,
95 #[serde(default, skip_serializing_if = "Option::is_none")]
97 pub license_class: Option<EditableField<EditableFieldString, E>>,
98}
99
100#[derive(Clone, Debug, Default, Serialize, Deserialize)]
112#[serde(rename_all = "camelCase", bound(deserialize = "E: Deserialize<'de>"))]
113pub struct IdentityDocumentCredential<E = ()> {
114 #[serde(default, skip_serializing_if = "Option::is_none")]
116 pub issuing_country: Option<EditableField<EditableFieldCountryCode, E>>,
117 #[serde(default, skip_serializing_if = "Option::is_none")]
121 pub document_number: Option<EditableField<EditableFieldString, E>>,
122 #[serde(default, skip_serializing_if = "Option::is_none")]
127 pub identification_number: Option<EditableField<EditableFieldString, E>>,
128 #[serde(default, skip_serializing_if = "Option::is_none")]
130 pub nationality: Option<EditableField<EditableFieldString, E>>,
131 #[serde(default, skip_serializing_if = "Option::is_none")]
133 pub full_name: Option<EditableField<EditableFieldString, E>>,
134 #[serde(default, skip_serializing_if = "Option::is_none")]
136 pub birth_date: Option<EditableField<EditableFieldDate, E>>,
137 #[serde(default, skip_serializing_if = "Option::is_none")]
139 pub birth_place: Option<EditableField<EditableFieldString, E>>,
140 #[serde(default, skip_serializing_if = "Option::is_none")]
142 pub sex: Option<EditableField<EditableFieldString, E>>,
143 #[serde(default, skip_serializing_if = "Option::is_none")]
145 pub issue_date: Option<EditableField<EditableFieldDate, E>>,
146 #[serde(default, skip_serializing_if = "Option::is_none")]
148 pub expiry_date: Option<EditableField<EditableFieldDate, E>>,
149 #[serde(default, skip_serializing_if = "Option::is_none")]
151 pub issuing_authority: Option<EditableField<EditableFieldString, E>>,
152}
153
154#[derive(Clone, Debug, Default, Serialize, Deserialize)]
157#[serde(rename_all = "camelCase", bound(deserialize = "E: Deserialize<'de>"))]
158pub struct PassportCredential<E = ()> {
159 #[serde(default, skip_serializing_if = "Option::is_none")]
161 pub issuing_country: Option<EditableField<EditableFieldCountryCode, E>>,
162 #[serde(default, skip_serializing_if = "Option::is_none")]
165 pub passport_type: Option<EditableField<EditableFieldString, E>>,
166 #[serde(default, skip_serializing_if = "Option::is_none")]
168 pub passport_number: Option<EditableField<EditableFieldString, E>>,
169 #[serde(default, skip_serializing_if = "Option::is_none")]
171 pub national_identification_number: Option<EditableField<EditableFieldString, E>>,
172 #[serde(default, skip_serializing_if = "Option::is_none")]
174 pub nationality: Option<EditableField<EditableFieldString, E>>,
175 #[serde(default, skip_serializing_if = "Option::is_none")]
177 pub full_name: Option<EditableField<EditableFieldString, E>>,
178 #[serde(default, skip_serializing_if = "Option::is_none")]
180 pub birth_date: Option<EditableField<EditableFieldDate, E>>,
181 #[serde(default, skip_serializing_if = "Option::is_none")]
183 pub birth_place: Option<EditableField<EditableFieldString, E>>,
184 #[serde(default, skip_serializing_if = "Option::is_none")]
185 pub sex: Option<EditableField<EditableFieldString, E>>,
187 #[serde(default, skip_serializing_if = "Option::is_none")]
188 pub issue_date: Option<EditableField<EditableFieldDate, E>>,
190 #[serde(default, skip_serializing_if = "Option::is_none")]
192 pub expiry_date: Option<EditableField<EditableFieldDate, E>>,
193 #[serde(default, skip_serializing_if = "Option::is_none")]
195 pub issuing_authority: Option<EditableField<EditableFieldString, E>>,
196}
197
198#[derive(Clone, Debug, Default, Serialize, Deserialize)]
205#[serde(rename_all = "camelCase", bound(deserialize = "E: Deserialize<'de>"))]
206pub struct PersonNameCredential<E = ()> {
207 #[serde(default, skip_serializing_if = "Option::is_none")]
209 pub title: Option<EditableField<EditableFieldString, E>>,
210 #[serde(default, skip_serializing_if = "Option::is_none")]
212 pub given: Option<EditableField<EditableFieldString, E>>,
213 #[serde(default, skip_serializing_if = "Option::is_none")]
215 pub given_informal: Option<EditableField<EditableFieldString, E>>,
216 #[serde(default, skip_serializing_if = "Option::is_none")]
218 pub given2: Option<EditableField<EditableFieldString, E>>,
219 #[serde(default, skip_serializing_if = "Option::is_none")]
222 pub surname_prefix: Option<EditableField<EditableFieldString, E>>,
223 #[serde(default, skip_serializing_if = "Option::is_none")]
225 pub surname: Option<EditableField<EditableFieldString, E>>,
226 #[serde(default, skip_serializing_if = "Option::is_none")]
228 pub surname2: Option<EditableField<EditableFieldString, E>>,
229 #[serde(default, skip_serializing_if = "Option::is_none")]
231 pub credentials: Option<EditableField<EditableFieldString, E>>,
232 #[serde(default, skip_serializing_if = "Option::is_none")]
234 pub generation: Option<EditableField<EditableFieldString, E>>,
235}