1use crate::models::common::*;
4use serde::{Deserialize, Serialize};
5use uuid::Uuid;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
13#[serde(rename_all = "camelCase")]
14pub struct CreateCompanyApplicationRequest {
15 pub initial_user: InitialUser,
16 pub name: String,
17 pub address: Address,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub chain_id: Option<String>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub contract_address: Option<String>,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub source_key: Option<String>,
24 pub entity: EntityInfo,
25 pub representatives: Vec<Representative>,
26 pub ultimate_beneficial_owners: Vec<UltimateBeneficialOwner>,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
31#[serde(rename_all = "camelCase")]
32pub struct InitialUser {
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub id: Option<Uuid>,
35 pub first_name: String,
36 pub last_name: String,
37 pub birth_date: String,
38 pub national_id: String,
39 pub country_of_issue: String,
40 pub email: String,
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub phone_country_code: Option<String>,
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub phone_number: Option<String>,
45 pub address: Address,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub role: Option<String>,
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub wallet_address: Option<String>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub solana_address: Option<String>,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub tron_address: Option<String>,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub stellar_address: Option<String>,
56 pub ip_address: String,
57 pub is_terms_of_service_accepted: bool,
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(rename_all = "camelCase")]
63pub struct EntityInfo {
64 pub name: String,
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub r#type: Option<String>,
67 pub description: String,
68 pub industry: String,
69 pub registration_number: String,
70 pub tax_id: String,
71 pub website: String,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub expected_spend: Option<String>,
74}
75
76#[derive(Debug, Clone, Serialize, Deserialize)]
78#[serde(rename_all = "camelCase")]
79pub struct EntityUpdateInfo {
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub r#type: Option<String>,
82 #[serde(skip_serializing_if = "Option::is_none")]
83 pub description: Option<String>,
84 #[serde(skip_serializing_if = "Option::is_none")]
85 pub industry: Option<String>,
86 #[serde(skip_serializing_if = "Option::is_none")]
87 pub registration_number: Option<String>,
88 #[serde(skip_serializing_if = "Option::is_none")]
89 pub tax_id: Option<String>,
90 #[serde(skip_serializing_if = "Option::is_none")]
91 pub website: Option<String>,
92 #[serde(skip_serializing_if = "Option::is_none")]
93 pub expected_spend: Option<String>,
94}
95
96#[derive(Debug, Clone, Serialize, Deserialize)]
98#[serde(rename_all = "camelCase")]
99pub struct Representative {
100 #[serde(skip_serializing_if = "Option::is_none")]
101 pub id: Option<Uuid>,
102 pub first_name: String,
103 pub last_name: String,
104 pub birth_date: String,
105 pub national_id: String,
106 pub country_of_issue: String,
107 pub email: String,
108 #[serde(skip_serializing_if = "Option::is_none")]
109 pub phone_country_code: Option<String>,
110 #[serde(skip_serializing_if = "Option::is_none")]
111 pub phone_number: Option<String>,
112 pub address: Address,
113}
114
115#[derive(Debug, Clone, Serialize, Deserialize)]
117#[serde(rename_all = "camelCase")]
118pub struct UltimateBeneficialOwner {
119 #[serde(skip_serializing_if = "Option::is_none")]
120 pub id: Option<Uuid>,
121 pub first_name: String,
122 pub last_name: String,
123 pub birth_date: String,
124 pub national_id: String,
125 pub country_of_issue: String,
126 pub email: String,
127 #[serde(skip_serializing_if = "Option::is_none")]
128 pub phone_country_code: Option<String>,
129 #[serde(skip_serializing_if = "Option::is_none")]
130 pub phone_number: Option<String>,
131 pub address: Address,
132}
133
134#[derive(Debug, Clone, Serialize, Deserialize)]
136#[serde(rename_all = "camelCase")]
137pub struct CompanyApplicationResponse {
138 pub id: Uuid,
139 pub name: String,
140 pub address: Address,
141 #[serde(skip_serializing_if = "Option::is_none")]
142 pub ultimate_beneficial_owners: Option<Vec<UltimateBeneficialOwnerResponse>>,
143 #[serde(skip_serializing_if = "Option::is_none")]
144 pub application_status: Option<ApplicationStatus>,
145 #[serde(skip_serializing_if = "Option::is_none")]
146 pub application_external_verification_link: Option<ApplicationLink>,
147 #[serde(skip_serializing_if = "Option::is_none")]
148 pub application_completion_link: Option<ApplicationLink>,
149 #[serde(skip_serializing_if = "Option::is_none")]
150 pub application_reason: Option<String>,
151}
152
153#[derive(Debug, Clone, Serialize, Deserialize)]
155#[serde(rename_all = "camelCase")]
156pub struct UltimateBeneficialOwnerResponse {
157 pub id: Uuid,
158 #[serde(skip_serializing_if = "Option::is_none")]
159 pub first_name: Option<String>,
160 #[serde(skip_serializing_if = "Option::is_none")]
161 pub last_name: Option<String>,
162 #[serde(skip_serializing_if = "Option::is_none")]
163 pub email: Option<String>,
164 #[serde(skip_serializing_if = "Option::is_none")]
165 pub application_status: Option<ApplicationStatus>,
166 #[serde(skip_serializing_if = "Option::is_none")]
167 pub application_external_verification_link: Option<ApplicationLink>,
168 #[serde(skip_serializing_if = "Option::is_none")]
169 pub application_completion_link: Option<ApplicationLink>,
170 #[serde(skip_serializing_if = "Option::is_none")]
171 pub application_reason: Option<String>,
172}
173
174#[derive(Debug, Clone, Serialize, Deserialize)]
176#[serde(rename_all = "camelCase")]
177pub struct UpdateCompanyApplicationRequest {
178 #[serde(skip_serializing_if = "Option::is_none")]
179 pub name: Option<String>,
180 #[serde(skip_serializing_if = "Option::is_none")]
181 pub address: Option<Address>,
182 #[serde(skip_serializing_if = "Option::is_none")]
183 pub entity: Option<EntityUpdateInfo>,
184}
185
186#[derive(Debug, Clone, Serialize, Deserialize)]
188#[serde(rename_all = "camelCase")]
189pub struct UpdateUltimateBeneficialOwnerRequest {
190 #[serde(skip_serializing_if = "Option::is_none")]
191 pub first_name: Option<String>,
192 #[serde(skip_serializing_if = "Option::is_none")]
193 pub last_name: Option<String>,
194 #[serde(skip_serializing_if = "Option::is_none")]
195 pub birth_date: Option<String>,
196 #[serde(skip_serializing_if = "Option::is_none")]
197 pub national_id: Option<String>,
198 #[serde(skip_serializing_if = "Option::is_none")]
199 pub country_of_issue: Option<String>,
200 #[serde(skip_serializing_if = "Option::is_none")]
201 pub email: Option<String>,
202 #[serde(skip_serializing_if = "Option::is_none")]
203 pub address: Option<Address>,
204}
205
206#[derive(Debug, Clone, Serialize, Deserialize)]
332#[serde(rename_all = "camelCase")]
333pub struct CreateUserApplicationRequest {
334 #[serde(skip_serializing_if = "Option::is_none")]
337 pub sumsub_share_token: Option<String>,
338 #[serde(skip_serializing_if = "Option::is_none")]
340 pub persona_share_token: Option<String>,
341
342 #[serde(skip_serializing_if = "Option::is_none")]
345 pub id: Option<Uuid>,
346 #[serde(skip_serializing_if = "Option::is_none")]
348 pub first_name: Option<String>,
349 #[serde(skip_serializing_if = "Option::is_none")]
351 pub last_name: Option<String>,
352 #[serde(skip_serializing_if = "Option::is_none")]
354 pub birth_date: Option<String>,
355 #[serde(skip_serializing_if = "Option::is_none")]
357 pub national_id: Option<String>,
358 #[serde(skip_serializing_if = "Option::is_none")]
360 pub country_of_issue: Option<String>,
361 #[serde(skip_serializing_if = "Option::is_none")]
363 pub email: Option<String>,
364 #[serde(skip_serializing_if = "Option::is_none")]
366 pub phone_country_code: Option<String>,
367 #[serde(skip_serializing_if = "Option::is_none")]
369 pub phone_number: Option<String>,
370 #[serde(skip_serializing_if = "Option::is_none")]
372 pub address: Option<crate::models::common::Address>,
373
374 pub ip_address: String,
377 pub occupation: String,
379 pub annual_salary: String,
381 pub account_purpose: String,
383 pub expected_monthly_volume: String,
385 pub is_terms_of_service_accepted: bool,
387
388 #[serde(skip_serializing_if = "Option::is_none")]
391 pub wallet_address: Option<String>,
392 #[serde(skip_serializing_if = "Option::is_none")]
394 pub solana_address: Option<String>,
395 #[serde(skip_serializing_if = "Option::is_none")]
397 pub tron_address: Option<String>,
398 #[serde(skip_serializing_if = "Option::is_none")]
400 pub stellar_address: Option<String>,
401 #[serde(skip_serializing_if = "Option::is_none")]
403 pub chain_id: Option<String>,
404 #[serde(skip_serializing_if = "Option::is_none")]
406 pub contract_address: Option<String>,
407 #[serde(skip_serializing_if = "Option::is_none")]
409 pub source_key: Option<String>,
410 #[serde(skip_serializing_if = "Option::is_none")]
412 pub has_existing_documents: Option<bool>,
413}
414
415#[derive(Debug, Clone, Serialize, Deserialize)]
417#[serde(rename_all = "camelCase")]
418pub struct InitiateUserApplicationRequest {
419 #[serde(skip_serializing_if = "Option::is_none")]
420 pub first_name: Option<String>,
421 #[serde(skip_serializing_if = "Option::is_none")]
422 pub last_name: Option<String>,
423 #[serde(skip_serializing_if = "Option::is_none")]
424 pub email: Option<String>,
425 #[serde(skip_serializing_if = "Option::is_none")]
426 pub wallet_address: Option<String>,
427}
428
429#[derive(Debug, Clone, Serialize, Deserialize)]
431#[serde(rename_all = "camelCase")]
432pub struct UserApplicationResponse {
433 pub id: Uuid,
434 #[serde(skip_serializing_if = "Option::is_none")]
435 pub company_id: Option<Uuid>,
436 #[serde(skip_serializing_if = "Option::is_none")]
437 pub first_name: Option<String>,
438 #[serde(skip_serializing_if = "Option::is_none")]
439 pub last_name: Option<String>,
440 #[serde(skip_serializing_if = "Option::is_none")]
441 pub email: Option<String>,
442 #[serde(skip_serializing_if = "Option::is_none")]
443 pub is_active: Option<bool>,
444 #[serde(skip_serializing_if = "Option::is_none")]
445 pub is_terms_of_service_accepted: Option<bool>,
446 #[serde(skip_serializing_if = "Option::is_none")]
447 pub address: Option<Address>,
448 #[serde(skip_serializing_if = "Option::is_none")]
449 pub phone_country_code: Option<String>,
450 #[serde(skip_serializing_if = "Option::is_none")]
451 pub phone_number: Option<String>,
452 #[serde(skip_serializing_if = "Option::is_none")]
453 pub wallet_address: Option<String>,
454 #[serde(skip_serializing_if = "Option::is_none")]
455 pub solana_address: Option<String>,
456 #[serde(skip_serializing_if = "Option::is_none")]
457 pub application_status: Option<ApplicationStatus>,
458 #[serde(skip_serializing_if = "Option::is_none")]
459 pub application_external_verification_link: Option<ApplicationLink>,
460 #[serde(skip_serializing_if = "Option::is_none")]
461 pub application_completion_link: Option<ApplicationLink>,
462 #[serde(skip_serializing_if = "Option::is_none")]
463 pub application_reason: Option<String>,
464}
465
466#[derive(Debug, Clone, Serialize, Deserialize)]
468#[serde(rename_all = "camelCase")]
469pub struct UpdateUserApplicationRequest {
470 #[serde(skip_serializing_if = "Option::is_none")]
471 pub first_name: Option<String>,
472 #[serde(skip_serializing_if = "Option::is_none")]
473 pub last_name: Option<String>,
474 #[serde(skip_serializing_if = "Option::is_none")]
475 pub birth_date: Option<String>,
476 #[serde(skip_serializing_if = "Option::is_none")]
477 pub national_id: Option<String>,
478 #[serde(skip_serializing_if = "Option::is_none")]
479 pub country_of_issue: Option<String>,
480 #[serde(skip_serializing_if = "Option::is_none")]
481 pub address: Option<Address>,
482 #[serde(skip_serializing_if = "Option::is_none")]
483 pub ip_address: Option<String>,
484 #[serde(skip_serializing_if = "Option::is_none")]
485 pub occupation: Option<String>,
486 #[serde(skip_serializing_if = "Option::is_none")]
487 pub annual_salary: Option<String>,
488 #[serde(skip_serializing_if = "Option::is_none")]
489 pub account_purpose: Option<String>,
490 #[serde(skip_serializing_if = "Option::is_none")]
491 pub expected_monthly_volume: Option<String>,
492 #[serde(skip_serializing_if = "Option::is_none")]
493 pub is_terms_of_service_accepted: Option<bool>,
494 #[serde(skip_serializing_if = "Option::is_none")]
495 pub has_existing_documents: Option<bool>,
496}
497
498#[derive(Debug, Clone)]
504pub struct DocumentUploadParams {
505 pub document_type: String,
506 pub side: String,
507 pub country: Option<String>,
508 pub country_code: Option<String>,
509 pub name: Option<String>, pub file_path: String,
511}