@devizovaburza/mdm-sdk 1.1.3 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/v1/index.d.mts +1496 -1459
- package/dist/v1/index.d.ts +1496 -1459
- package/dist/v1/index.mjs +1028 -2327
- package/package.json +3 -1
package/dist/v1/index.mjs
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { hc } from 'hono/client';
|
|
2
|
-
import { z
|
|
3
|
-
import { COUNTRY_CODES_2, LANGUAGE_CODES,
|
|
4
|
-
import {
|
|
5
|
-
import { base, bankAccount as bankAccount$1, bankAccountMetadataSchema } from '@develit-io/backend-sdk';
|
|
6
|
-
import { sqliteTable, text, integer, real, foreignKey, uniqueIndex } from 'drizzle-orm/sqlite-core';
|
|
7
|
-
import { createInsertSchema, createUpdateSchema, createSelectSchema } from 'drizzle-zod';
|
|
8
|
-
import 'drizzle-orm';
|
|
2
|
+
import { z, createRoute, OpenAPIHono } from '@hono/zod-openapi';
|
|
3
|
+
import { COUNTRY_CODES_2, LANGUAGE_CODES, CZ_NACE_CODES, CURRENCY_CODES, BANK_CODES, CZ_TRADE_LICENSE_CODES } from '@develit-io/general-codes';
|
|
4
|
+
import { bankAccountMetadataSchema } from '@develit-io/backend-sdk';
|
|
9
5
|
import { jwt, signature, idempotency } from '@develit-io/backend-sdk/middlewares';
|
|
10
6
|
|
|
11
7
|
const createMdmClient = (baseUrl, options) => {
|
|
@@ -17,7 +13,7 @@ const ADDRESS_TYPE$1 = [
|
|
|
17
13
|
"REGISTERED_OFFICE",
|
|
18
14
|
"CONTACT_ADDRESS"
|
|
19
15
|
];
|
|
20
|
-
const CONTACT_TYPE
|
|
16
|
+
const CONTACT_TYPE = [
|
|
21
17
|
"EMAIL",
|
|
22
18
|
"PHONE_AUTH",
|
|
23
19
|
"PHONE_CONTACT",
|
|
@@ -30,7 +26,7 @@ const ID_DOC_STATUS$1 = [
|
|
|
30
26
|
"EXPIRE_SOON",
|
|
31
27
|
"REVOKED"
|
|
32
28
|
];
|
|
33
|
-
const PARTY_RELATIONSHIP_TYPE
|
|
29
|
+
const PARTY_RELATIONSHIP_TYPE = [
|
|
34
30
|
"AUTHORIZED_SIGNATORY",
|
|
35
31
|
"POA_HOLDER",
|
|
36
32
|
"BOARD_MEMBER",
|
|
@@ -77,8 +73,8 @@ const KYC_STATUS$1 = [
|
|
|
77
73
|
"UNVERIFIED",
|
|
78
74
|
"REJECTED"
|
|
79
75
|
];
|
|
80
|
-
const TRADER_TYPE
|
|
81
|
-
const PRODUCT_TYPE
|
|
76
|
+
const TRADER_TYPE = ["PERSON", "COMPANY", "OSVC"];
|
|
77
|
+
const PRODUCT_TYPE = ["TXS", "CBS"];
|
|
82
78
|
const TXS_CLIENT_TYPE$1 = ["CLIENT", "PROVIDER"];
|
|
83
79
|
const TRADING_SIDE$1 = ["SELL", "BUY", "BOTH"];
|
|
84
80
|
const EST_TXS_VOLUME_MONTH$1 = ["UP_TO_1M", "1M_TO_5M", "OVER_5M"];
|
|
@@ -119,1485 +115,199 @@ const FINANCIAL_FUNDS_SOURCE$1 = [
|
|
|
119
115
|
"INVESTMENTS",
|
|
120
116
|
"LOAN",
|
|
121
117
|
"OTHER"
|
|
122
|
-
];
|
|
123
|
-
const SERVICE_PURPOSE_FO
|
|
124
|
-
"PURCHASE_OF_GOODS_AND_SERVICES",
|
|
125
|
-
"INVESTMENTS",
|
|
126
|
-
"OTHER"
|
|
127
|
-
];
|
|
128
|
-
const SERVICE_PURPOSE_COMPANY
|
|
129
|
-
"PAYMENTS_TO_CUSTOMERS",
|
|
130
|
-
"PAYMENTS_TO_SUPPLIERS",
|
|
131
|
-
"FOREIGN_INVESTMENTS",
|
|
132
|
-
"OTHER"
|
|
133
|
-
];
|
|
134
|
-
const SERVICE_PURPOSE$1 = [
|
|
135
|
-
...SERVICE_PURPOSE_FO
|
|
136
|
-
...SERVICE_PURPOSE_COMPANY
|
|
137
|
-
];
|
|
138
|
-
const OPERATING_COUNTRY$1 = ["CZ", "EU", "OUTSIDE_EU"];
|
|
139
|
-
const YES_NO_UNKNOWN$1 = ["YES", "NO", "UNKNOWN"];
|
|
140
|
-
const SIGNATURE_METHOD$1 = [
|
|
141
|
-
"IN_PERSON",
|
|
142
|
-
"REMOTE",
|
|
143
|
-
"COURIER",
|
|
144
|
-
"POWER_OF_ATTORNEY"
|
|
145
|
-
];
|
|
146
|
-
const EXISTENCE_PERIOD$1 = [
|
|
147
|
-
"OVER_24_MONTHS",
|
|
148
|
-
"OVER_16_MONTHS",
|
|
149
|
-
"LESS_THAN_12_MONTHS",
|
|
150
|
-
"LESS_THAN_6_MONTHS"
|
|
151
|
-
];
|
|
152
|
-
const REPUTATION$1 = [
|
|
153
|
-
"NO_NEGATIVE_RECORDS",
|
|
154
|
-
"BUSINESS_INCREASES_RISK",
|
|
155
|
-
"NEGATIVE_RECORDS",
|
|
156
|
-
"SANCTIONS_LIST_HIT"
|
|
157
|
-
];
|
|
158
|
-
const RISK_BUSINESS_AREA$1 = [
|
|
159
|
-
"PAWN_SHOPS",
|
|
160
|
-
"USED_CAR_DEALERS",
|
|
161
|
-
"CASINOS",
|
|
162
|
-
"REAL_ESTATE_AGENCIES",
|
|
163
|
-
"PRECIOUS_METALS_AND_GEMS",
|
|
164
|
-
"WEAPONS_AND_AMMUNITION",
|
|
165
|
-
"NON_BANK_CREDIT_INSTITUTIONS",
|
|
166
|
-
"CURRENCY_EXCHANGE",
|
|
167
|
-
"VIRTUAL_ASSET_SERVICES"
|
|
168
|
-
];
|
|
169
|
-
|
|
170
|
-
const ADDRESS_TYPE = [
|
|
171
|
-
"PERMANENT_ADDRESS",
|
|
172
|
-
"REGISTERED_OFFICE",
|
|
173
|
-
"CONTACT_ADDRESS"
|
|
174
|
-
];
|
|
175
|
-
const CONTACT_TYPE = [
|
|
176
|
-
"EMAIL",
|
|
177
|
-
"PHONE_AUTH",
|
|
178
|
-
"PHONE_CONTACT",
|
|
179
|
-
"PHONE_WORK"
|
|
180
|
-
];
|
|
181
|
-
const ID_DOC_TYPE = ["PASSPORT", "ID", "DRIVING_LICENSE"];
|
|
182
|
-
const ID_DOC_STATUS = [
|
|
183
|
-
"ACTIVE",
|
|
184
|
-
"EXPIRED",
|
|
185
|
-
"EXPIRE_SOON",
|
|
186
|
-
"REVOKED"
|
|
187
|
-
];
|
|
188
|
-
const PARTY_RELATIONSHIP_TYPE = [
|
|
189
|
-
"AUTHORIZED_SIGNATORY",
|
|
190
|
-
"POA_HOLDER",
|
|
191
|
-
"BOARD_MEMBER",
|
|
192
|
-
"UBO"
|
|
193
|
-
];
|
|
194
|
-
const CUSTOMER_STATUS = [
|
|
195
|
-
// 'LEAD',
|
|
196
|
-
"NEW",
|
|
197
|
-
"ACTIVE",
|
|
198
|
-
"CLOSED",
|
|
199
|
-
"BLOCKED"
|
|
200
|
-
// 'FORMER',
|
|
201
|
-
// 'DECEASED',
|
|
202
|
-
];
|
|
203
|
-
const PARTY_TYPE = [
|
|
204
|
-
"INDIVIDUAL",
|
|
205
|
-
"SELF_EMPLOYED",
|
|
206
|
-
"ORGANIZATION"
|
|
207
|
-
];
|
|
208
|
-
const AML_SCORE_TYPE = [
|
|
209
|
-
"LOW",
|
|
210
|
-
"MEDIUM",
|
|
211
|
-
"HIGH",
|
|
212
|
-
"UNACCEPTABLE",
|
|
213
|
-
"UNVERIFIED",
|
|
214
|
-
"UNCLASSIFIED"
|
|
215
|
-
];
|
|
216
|
-
const GENDER = ["M", "F", "OTHER"];
|
|
217
|
-
const KYC_STATUS = [
|
|
218
|
-
"NOT_APPROVED",
|
|
219
|
-
"VERIFIED",
|
|
220
|
-
"UNVERIFIED",
|
|
221
|
-
"REJECTED"
|
|
222
|
-
];
|
|
223
|
-
const TRADER_TYPE = ["PERSON", "COMPANY", "OSVC"];
|
|
224
|
-
const PRODUCT_TYPE = ["TXS", "CBS"];
|
|
225
|
-
const TRADING_SIDE = ["SELL", "BUY", "BOTH"];
|
|
226
|
-
const EST_TXS_VOLUME_MONTH = ["UP_TO_1M", "1M_TO_5M", "OVER_5M"];
|
|
227
|
-
const EST_TXS_VOLUME_YEAR = [
|
|
228
|
-
"LESS_THAN_12M",
|
|
229
|
-
"12M_TO_50M",
|
|
230
|
-
"OVER_50M"
|
|
231
|
-
];
|
|
232
|
-
const TARGET_COUNTRY = ["CZ", "EU", "OUTSIDE_EU"];
|
|
233
|
-
const TAX_DOMICILE = ["CZ", "EU", "US", "OTHER"];
|
|
234
|
-
const MONTHLY_INCOME_RANGE = [
|
|
235
|
-
"UP_TO_40K",
|
|
236
|
-
"40K_TO_80K",
|
|
237
|
-
"OVER_80K"
|
|
238
|
-
];
|
|
239
|
-
const COMPANY_TURNOVER_RANGE = [
|
|
240
|
-
"LESS_THAN_50M",
|
|
241
|
-
"50M_TO_100M",
|
|
242
|
-
"OVER_100M"
|
|
243
|
-
];
|
|
244
|
-
const YEARLY_INCOME = [
|
|
245
|
-
...MONTHLY_INCOME_RANGE,
|
|
246
|
-
...COMPANY_TURNOVER_RANGE
|
|
247
|
-
];
|
|
248
|
-
const INCOME_SOURCE = [
|
|
249
|
-
"EMPLOYMENT",
|
|
250
|
-
"PENSION",
|
|
251
|
-
"SAVINGS",
|
|
252
|
-
"INHERITANCE",
|
|
253
|
-
"INVESTMENTS",
|
|
254
|
-
"HOUSE_SALE",
|
|
255
|
-
"CAR_SALE",
|
|
256
|
-
"AUCTION_SALE",
|
|
257
|
-
"OTHER"
|
|
258
|
-
];
|
|
259
|
-
const FINANCIAL_FUNDS_SOURCE = [
|
|
260
|
-
"BUSINESS_REVENUE",
|
|
261
|
-
"INVESTMENTS",
|
|
262
|
-
"LOAN",
|
|
263
|
-
"OTHER"
|
|
264
|
-
];
|
|
265
|
-
const SERVICE_PURPOSE_FO = [
|
|
266
|
-
"PURCHASE_OF_GOODS_AND_SERVICES",
|
|
267
|
-
"INVESTMENTS",
|
|
268
|
-
"OTHER"
|
|
269
|
-
];
|
|
270
|
-
const SERVICE_PURPOSE_COMPANY = [
|
|
271
|
-
"PAYMENTS_TO_CUSTOMERS",
|
|
272
|
-
"PAYMENTS_TO_SUPPLIERS",
|
|
273
|
-
"FOREIGN_INVESTMENTS",
|
|
274
|
-
"OTHER"
|
|
275
|
-
];
|
|
276
|
-
const SERVICE_PURPOSE = [
|
|
277
|
-
...SERVICE_PURPOSE_FO,
|
|
278
|
-
...SERVICE_PURPOSE_COMPANY
|
|
279
|
-
];
|
|
280
|
-
const OPERATING_COUNTRY = ["CZ", "EU", "OUTSIDE_EU"];
|
|
281
|
-
const YES_NO_UNKNOWN = ["YES", "NO", "UNKNOWN"];
|
|
282
|
-
const PERSON_ROLE = [
|
|
283
|
-
"PERMANENT_RESIDENT",
|
|
284
|
-
"STATUTORY_BODY",
|
|
285
|
-
"BENEFICIAL_OWNER"
|
|
286
|
-
];
|
|
287
|
-
const SIGNATURE_METHOD = [
|
|
288
|
-
"IN_PERSON",
|
|
289
|
-
"REMOTE",
|
|
290
|
-
"COURIER",
|
|
291
|
-
"POWER_OF_ATTORNEY"
|
|
292
|
-
];
|
|
293
|
-
const EXISTENCE_PERIOD = [
|
|
294
|
-
"OVER_24_MONTHS",
|
|
295
|
-
"OVER_16_MONTHS",
|
|
296
|
-
"LESS_THAN_12_MONTHS",
|
|
297
|
-
"LESS_THAN_6_MONTHS"
|
|
298
|
-
];
|
|
299
|
-
const REPUTATION = [
|
|
300
|
-
"NO_NEGATIVE_RECORDS",
|
|
301
|
-
"BUSINESS_INCREASES_RISK",
|
|
302
|
-
"NEGATIVE_RECORDS",
|
|
303
|
-
"SANCTIONS_LIST_HIT"
|
|
304
|
-
];
|
|
305
|
-
const COURT = [
|
|
306
|
-
"MUNICIPAL_COURT_PRAGUE",
|
|
307
|
-
"REGIONAL_COURT_PRAGUE",
|
|
308
|
-
"REGIONAL_COURT_CESKE_BUDEJOVICE",
|
|
309
|
-
"REGIONAL_COURT_PLZEN",
|
|
310
|
-
"REGIONAL_COURT_USTI_NAD_LABEM",
|
|
311
|
-
"REGIONAL_COURT_HRADEC_KRALOVE",
|
|
312
|
-
"REGIONAL_COURT_BRNO",
|
|
313
|
-
"REGIONAL_COURT_OSTRAVA"
|
|
314
|
-
];
|
|
315
|
-
const RISK_BUSINESS_AREA = [
|
|
316
|
-
"PAWN_SHOPS",
|
|
317
|
-
"USED_CAR_DEALERS",
|
|
318
|
-
"CASINOS",
|
|
319
|
-
"REAL_ESTATE_AGENCIES",
|
|
320
|
-
"PRECIOUS_METALS_AND_GEMS",
|
|
321
|
-
"WEAPONS_AND_AMMUNITION",
|
|
322
|
-
"NON_BANK_CREDIT_INSTITUTIONS",
|
|
323
|
-
"CURRENCY_EXCHANGE",
|
|
324
|
-
"VIRTUAL_ASSET_SERVICES"
|
|
325
|
-
];
|
|
326
|
-
|
|
327
|
-
const baseMdmSqlite = {
|
|
328
|
-
...base
|
|
329
|
-
};
|
|
330
|
-
|
|
331
|
-
const party = sqliteTable("party", {
|
|
332
|
-
...base,
|
|
333
|
-
internalId: text("internal_id"),
|
|
334
|
-
note: text("note"),
|
|
335
|
-
customerStatus: text("customer_status", {
|
|
336
|
-
enum: CUSTOMER_STATUS
|
|
337
|
-
}).notNull(),
|
|
338
|
-
partyType: text("party_type", { enum: PARTY_TYPE }).notNull(),
|
|
339
|
-
language: text("language", { enum: LANGUAGE_CODES }).notNull(),
|
|
340
|
-
countryCode: text("country_code", { enum: COUNTRY_CODES_2 }),
|
|
341
|
-
isRoot: integer("is_root", { mode: "boolean" }).notNull().default(false),
|
|
342
|
-
legacyId: text("legacy_id")
|
|
343
|
-
});
|
|
344
|
-
|
|
345
|
-
const address = sqliteTable("address", {
|
|
346
|
-
...base,
|
|
347
|
-
internalId: text("internal_id"),
|
|
348
|
-
partyId: text("party_id").notNull().references(() => party.id),
|
|
349
|
-
ruianCode: text("ruian_code"),
|
|
350
|
-
addressType: text("address_type", { enum: ADDRESS_TYPE }).notNull(),
|
|
351
|
-
street: text("street"),
|
|
352
|
-
orientationNumber: text("orientation_number"),
|
|
353
|
-
descriptiveNumber: text("descriptive_number"),
|
|
354
|
-
municipality: text("municipality").notNull(),
|
|
355
|
-
municipalityPart: text("municipality_part"),
|
|
356
|
-
zipCode: text("zip_code").notNull(),
|
|
357
|
-
district: text("district"),
|
|
358
|
-
region: text("region"),
|
|
359
|
-
countryCode: text("state", { enum: COUNTRY_CODES_2 }).notNull()
|
|
360
|
-
});
|
|
361
|
-
|
|
362
|
-
const contact = sqliteTable("contact", {
|
|
363
|
-
...base,
|
|
364
|
-
internalId: text("internal_id"),
|
|
365
|
-
partyId: text("party_id").notNull().references(() => party.id),
|
|
366
|
-
contactType: text("contact_type", { enum: CONTACT_TYPE }),
|
|
367
|
-
email: text("email").notNull(),
|
|
368
|
-
phoneNumber: text("phone_number").notNull()
|
|
369
|
-
});
|
|
370
|
-
|
|
371
|
-
const idDocument = sqliteTable("id_document", {
|
|
372
|
-
...base,
|
|
373
|
-
internalId: text("internal_id"),
|
|
374
|
-
partyId: text("party_id").notNull().references(() => party.id),
|
|
375
|
-
idDocType: text("id_doc_type", { enum: ID_DOC_TYPE }).notNull(),
|
|
376
|
-
idDocNumber: text("id_doc_number").notNull(),
|
|
377
|
-
idDocHolderName: text("id_doc_holder_name").notNull(),
|
|
378
|
-
issueDate: integer("issue_date", { mode: "timestamp_ms" }),
|
|
379
|
-
expirationDate: integer("expiration_date", { mode: "timestamp_ms" }),
|
|
380
|
-
issuer: text("issuer"),
|
|
381
|
-
countryOfIssue: text("country_of_issue", { enum: COUNTRY_CODES_2 }),
|
|
382
|
-
frontImageUri: text("front_image_uri"),
|
|
383
|
-
backImageUri: text("back_image_uri"),
|
|
384
|
-
idDocStatus: text("id_doc_status", { enum: ID_DOC_STATUS })
|
|
385
|
-
});
|
|
386
|
-
|
|
387
|
-
const individual = sqliteTable("individual", {
|
|
388
|
-
...base,
|
|
389
|
-
internalId: text("internal_id"),
|
|
390
|
-
partyId: text("party_id").notNull().unique().references(() => party.id),
|
|
391
|
-
name: text("name").notNull(),
|
|
392
|
-
email: text("email").notNull(),
|
|
393
|
-
phone: text("phone"),
|
|
394
|
-
surname: text("surname").notNull(),
|
|
395
|
-
birthDate: text("birth_date").notNull(),
|
|
396
|
-
birthPlace: text("birth_place"),
|
|
397
|
-
countryOfBirth: text("country_of_birth", { enum: COUNTRY_CODES_2 }),
|
|
398
|
-
personalId: text("personal_id").notNull(),
|
|
399
|
-
gender: text("gender", { enum: GENDER }).notNull(),
|
|
400
|
-
citizenship: text("citizenship", { enum: COUNTRY_CODES_2 }).notNull(),
|
|
401
|
-
citizenshipOther: text("citizenship_other", { enum: COUNTRY_CODES_2 }),
|
|
402
|
-
employer: text("employer"),
|
|
403
|
-
employerCountry: text("employer_country", { enum: COUNTRY_CODES_2 }),
|
|
404
|
-
registeredNumber: text("registered_number"),
|
|
405
|
-
isPep: integer("is_pep", { mode: "boolean" }).notNull(),
|
|
406
|
-
titleBefore: text("title_before"),
|
|
407
|
-
titleAfter: text("title_after"),
|
|
408
|
-
birthSurname: text("birth_surname"),
|
|
409
|
-
vocativeTitle: text("vocative_title"),
|
|
410
|
-
deathDate: integer("death_date", { mode: "timestamp_ms" }),
|
|
411
|
-
deathNotification: integer("death_notification", { mode: "timestamp_ms" }),
|
|
412
|
-
pin: text("pin"),
|
|
413
|
-
stayAbroad: integer("stay_abroad", { mode: "boolean" }),
|
|
414
|
-
stayAbroadCountries: text("stay_abroad_countries", {
|
|
415
|
-
enum: COUNTRY_CODES_2
|
|
416
|
-
})
|
|
417
|
-
});
|
|
418
|
-
|
|
419
|
-
const organization = sqliteTable("organization", {
|
|
420
|
-
...base,
|
|
421
|
-
internalId: text("internal_id"),
|
|
422
|
-
partyId: text("party_id").notNull().unique().references(() => party.id),
|
|
423
|
-
businessName: text("business_name").notNull(),
|
|
424
|
-
email: text("email"),
|
|
425
|
-
phone: text("phone"),
|
|
426
|
-
registeredNumber: text("registered_number").notNull(),
|
|
427
|
-
registeredIn: text("registered_in", { enum: COUNTRY_CODES_2 }).notNull(),
|
|
428
|
-
operatesIn: text("operates_in", { enum: COUNTRY_CODES_2 }).notNull(),
|
|
429
|
-
presentIn: text("present_in", { enum: COUNTRY_CODES_2 }).notNull(),
|
|
430
|
-
monthlyVolumeIn: integer("monthly_volume_in").notNull(),
|
|
431
|
-
monthlyVolumeOut: integer("monthly_volume_out").notNull(),
|
|
432
|
-
ownedBy: text("owned_by").notNull(),
|
|
433
|
-
// UBO, skutecny majitel, podle Marianovy tabulky by toto mela byt mozna relace na party
|
|
434
|
-
companyObjects: text("company_objects", { mode: "json" }).$type().notNull(),
|
|
435
|
-
companyObjectsDescription: text("company_objects_description").notNull(),
|
|
436
|
-
turnover3years: integer("turnover_3_years").notNull(),
|
|
437
|
-
operationCountries: text("operation_countries").notNull(),
|
|
438
|
-
annualTurnover: integer("annual_turnover").notNull(),
|
|
439
|
-
riskyBusinessType: text("risky_business_type"),
|
|
440
|
-
numberOfEmployees: integer("number_of_employees"),
|
|
441
|
-
prosecuted: text("prosecuted"),
|
|
442
|
-
// vedeno u soudu
|
|
443
|
-
location: text("location"),
|
|
444
|
-
// v lokalite
|
|
445
|
-
fileNumber: text("file_number"),
|
|
446
|
-
// spisova znacka
|
|
447
|
-
websiteUrl: text("website_url"),
|
|
448
|
-
vatPayer: integer("vat_payer", { mode: "boolean" }).notNull(),
|
|
449
|
-
stayAbroad: integer("stay_abroad", { mode: "boolean" }),
|
|
450
|
-
stayAbroadCountries: text("stay_abroad_countries", {
|
|
451
|
-
enum: COUNTRY_CODES_2
|
|
452
|
-
}),
|
|
453
|
-
vatId: text("vat_id"),
|
|
454
|
-
court: text("court", { enum: COURT }),
|
|
455
|
-
registerUri: text("register_uri")
|
|
456
|
-
});
|
|
457
|
-
|
|
458
|
-
const partyRelationship = sqliteTable("party_relationship", {
|
|
459
|
-
...base,
|
|
460
|
-
internalId: text("internal_id"),
|
|
461
|
-
relationshipType: text("relationship_type", {
|
|
462
|
-
enum: PARTY_RELATIONSHIP_TYPE
|
|
463
|
-
}).notNull(),
|
|
464
|
-
fromPartyId: text("from_party_id").references(() => party.id),
|
|
465
|
-
toPartyId: text("to_party_id").references(() => party.id),
|
|
466
|
-
fromDate: integer("from_date", { mode: "timestamp_ms" }),
|
|
467
|
-
// FIXME: Treba se doptat https://develitio.slack.com/archives/C09VAF0G70E/p1769766644943189
|
|
468
|
-
// viz
|
|
469
|
-
// - Celé pole `owner[]`
|
|
470
|
-
// - `titleBefore`, `firstName`, `lastName`, `titleAfter`
|
|
471
|
-
// - `dateOfBirth`, `idNumber`, `address`
|
|
472
|
-
// - `sharePercentage`
|
|
473
|
-
// - `dateOfEstablishmentOfShare`
|
|
474
|
-
// - `pep`
|
|
475
|
-
sharePercentage: integer("share_percentage")
|
|
476
|
-
});
|
|
477
|
-
|
|
478
|
-
const taxResidence = sqliteTable("tax_residence", {
|
|
479
|
-
...base,
|
|
480
|
-
internalId: text("internal_id"),
|
|
481
|
-
partyId: text("party_id").notNull().unique().references(() => party.id),
|
|
482
|
-
country: text("country", { enum: COUNTRY_CODES_2 }).notNull(),
|
|
483
|
-
taxIdentificationNumber: text("tax_identification_number").notNull()
|
|
484
|
-
});
|
|
485
|
-
|
|
486
|
-
const partyChange = sqliteTable("party_change", {
|
|
487
|
-
...base,
|
|
488
|
-
internalId: text("internal_id"),
|
|
489
|
-
partyId: text("party_id").notNull().references(() => party.id),
|
|
490
|
-
operation: text("operation").notNull(),
|
|
491
|
-
diff: text("diff", { mode: "json" }).notNull(),
|
|
492
|
-
snapshotBefore: text("snapshot_before", { mode: "json" }).notNull(),
|
|
493
|
-
snapshotAfter: text("snapshot_after", { mode: "json" }).notNull()
|
|
494
|
-
});
|
|
495
|
-
|
|
496
|
-
const bankAccount = sqliteTable("bank_account", {
|
|
497
|
-
...base,
|
|
498
|
-
internalId: text("internal_id"),
|
|
499
|
-
...bankAccount$1,
|
|
500
|
-
partyId: text("party_id").notNull().references(() => party.id),
|
|
501
|
-
statementUri: text("statement_uri")
|
|
502
|
-
});
|
|
503
|
-
|
|
504
|
-
const aml = sqliteTable("aml", {
|
|
505
|
-
...base,
|
|
506
|
-
internalId: text("internal_id"),
|
|
507
|
-
partyId: text("party_id").notNull().unique().references(() => party.id),
|
|
508
|
-
sourceOfWealth: text("source_of_wealth", { mode: "json" }).$type().notNull(),
|
|
509
|
-
yearlyIncome: text("yearly_income", { enum: YEARLY_INCOME }).notNull(),
|
|
510
|
-
sourceOfIncome: text("source_of_income", { mode: "json" }).$type().notNull(),
|
|
511
|
-
incomeSourceOther: text("income_source_other"),
|
|
512
|
-
servicePurposes: text("service_purposes", { mode: "json" }).$type(),
|
|
513
|
-
servicePurposesOther: text("service_purposes_other"),
|
|
514
|
-
taxDomicile: text("tax_domicile", { enum: TAX_DOMICILE }),
|
|
515
|
-
taxDomicileCountry: text("tax_domicile_country", { enum: COUNTRY_CODES_2 }),
|
|
516
|
-
transactionType: text("transaction_type"),
|
|
517
|
-
transactionTypeExpiry: integer("transaction_type_expiry", {
|
|
518
|
-
mode: "timestamp_ms"
|
|
519
|
-
}),
|
|
520
|
-
estTxsVolumeMonth: text("est_txs_volume_month", {
|
|
521
|
-
enum: EST_TXS_VOLUME_MONTH
|
|
522
|
-
}).notNull(),
|
|
523
|
-
estTxsVolumeYear: text("est_txs_volume_year", {
|
|
524
|
-
enum: EST_TXS_VOLUME_YEAR
|
|
525
|
-
}).notNull(),
|
|
526
|
-
estTxsCountMonth: integer("est_txs_count_month"),
|
|
527
|
-
tradingCountries: text("trading_countries", { mode: "json" }).$type().notNull(),
|
|
528
|
-
tradingCountriesOther: text("trading_countries_other", {
|
|
529
|
-
mode: "json"
|
|
530
|
-
}).$type(),
|
|
531
|
-
tradingSide: text("trading_side", { enum: TRADING_SIDE }).notNull(),
|
|
532
|
-
acceptedAMLTermsAndConditions: integer("accepted_aml_terms_and_conditions", {
|
|
533
|
-
mode: "boolean"
|
|
534
|
-
}).notNull(),
|
|
535
|
-
signatureMethod: text("signature_method", { enum: SIGNATURE_METHOD }),
|
|
536
|
-
existencePeriod: text("existence_period", { enum: EXISTENCE_PERIOD }),
|
|
537
|
-
reputation: text("reputation", { enum: REPUTATION }),
|
|
538
|
-
riskBusinessAreas: text("risk_business_areas", { mode: "json" }).$type(),
|
|
539
|
-
isDistraint: integer("is_distraint", { mode: "boolean" }).notNull().default(false),
|
|
540
|
-
riskLevel: text("risk_level", { enum: AML_SCORE_TYPE }).notNull(),
|
|
541
|
-
kycStatus: text("kyc_status", { enum: KYC_STATUS }),
|
|
542
|
-
residencyAnswers: text("residency_answers", { mode: "json" }).$type()
|
|
543
|
-
});
|
|
544
|
-
|
|
545
|
-
const recipient = sqliteTable("recipient", {
|
|
546
|
-
...base,
|
|
547
|
-
internalId: text("internal_id"),
|
|
548
|
-
...bankAccount$1,
|
|
549
|
-
partyId: text("party_id").notNull().references(() => party.id)
|
|
550
|
-
});
|
|
551
|
-
|
|
552
|
-
const trader = sqliteTable(
|
|
553
|
-
"trader",
|
|
554
|
-
{
|
|
555
|
-
...base,
|
|
556
|
-
internalId: text("internal_id"),
|
|
557
|
-
type: text("trader", { length: 50, enum: TRADER_TYPE }).$type().notNull(),
|
|
558
|
-
firstName: text("first_name", { length: 255 }),
|
|
559
|
-
lastName: text("last_name", { length: 255 }),
|
|
560
|
-
companyName: text("company_name", { length: 255 }),
|
|
561
|
-
ico: text("ico", { length: 255 }),
|
|
562
|
-
dic: text("dic", { length: 255 }),
|
|
563
|
-
commission: real("commission").notNull(),
|
|
564
|
-
legacyId: text("legacy_id"),
|
|
565
|
-
parentTraderId: text("parent_trader_id")
|
|
566
|
-
},
|
|
567
|
-
(table) => [
|
|
568
|
-
foreignKey({ columns: [table.parentTraderId], foreignColumns: [table.id] })
|
|
569
|
-
]
|
|
570
|
-
);
|
|
571
|
-
|
|
572
|
-
sqliteTable("trader_client", {
|
|
573
|
-
...base,
|
|
574
|
-
clientId: text("client_id").references(() => party.id),
|
|
575
|
-
traderId: text("trader_id").references(() => trader.id),
|
|
576
|
-
internalId: text("internal_id"),
|
|
577
|
-
legacyId: text("legacy_id")
|
|
578
|
-
});
|
|
579
|
-
|
|
580
|
-
const partyProduct = sqliteTable(
|
|
581
|
-
"party_product",
|
|
582
|
-
{
|
|
583
|
-
...base,
|
|
584
|
-
partyId: text("party_id").notNull().references(() => party.id),
|
|
585
|
-
product: text("product", { enum: PRODUCT_TYPE }).notNull(),
|
|
586
|
-
config: text("config", { mode: "json" }).$type()
|
|
587
|
-
},
|
|
588
|
-
(table) => [
|
|
589
|
-
uniqueIndex("party_product_party_id_product_unique").on(
|
|
590
|
-
table.partyId,
|
|
591
|
-
table.product
|
|
592
|
-
)
|
|
593
|
-
]
|
|
594
|
-
);
|
|
595
|
-
|
|
596
|
-
sqliteTable("base", baseMdmSqlite);
|
|
597
|
-
|
|
598
|
-
const TXS_CLIENT_TYPE = ["CLIENT", "PROVIDER"];
|
|
599
|
-
|
|
600
|
-
createInsertSchema(address);
|
|
601
|
-
createUpdateSchema(address);
|
|
602
|
-
createSelectSchema(address);
|
|
603
|
-
const addressInsertSchema = z.object({
|
|
604
|
-
id: z.uuid().optional(),
|
|
605
|
-
partyId: z.uuid(),
|
|
606
|
-
internalId: z.string().optional().nullable(),
|
|
607
|
-
ruianCode: z.string().optional().nullable(),
|
|
608
|
-
addressType: z.enum(ADDRESS_TYPE),
|
|
609
|
-
street: z.string().optional().nullable(),
|
|
610
|
-
orientationNumber: z.string().optional().nullable(),
|
|
611
|
-
descriptiveNumber: z.string().optional().nullable(),
|
|
612
|
-
municipality: z.string(),
|
|
613
|
-
municipalityPart: z.string().optional().nullable(),
|
|
614
|
-
zipCode: z.string(),
|
|
615
|
-
district: z.string().optional().nullable(),
|
|
616
|
-
region: z.string().optional().nullable(),
|
|
617
|
-
countryCode: z.enum(COUNTRY_CODES_2)
|
|
618
|
-
});
|
|
619
|
-
const addressUpdateSchema = z.object({
|
|
620
|
-
id: z.uuid(),
|
|
621
|
-
partyId: z.uuid().optional(),
|
|
622
|
-
internalId: z.string().optional().nullable(),
|
|
623
|
-
ruianCode: z.string().optional().nullable(),
|
|
624
|
-
addressType: z.enum(ADDRESS_TYPE).optional(),
|
|
625
|
-
street: z.string().optional().nullable(),
|
|
626
|
-
orientationNumber: z.string().optional().nullable(),
|
|
627
|
-
descriptiveNumber: z.string().optional().nullable(),
|
|
628
|
-
municipality: z.string().optional(),
|
|
629
|
-
municipalityPart: z.string().optional().nullable(),
|
|
630
|
-
zipCode: z.string().optional(),
|
|
631
|
-
district: z.string().optional().nullable(),
|
|
632
|
-
region: z.string().optional().nullable(),
|
|
633
|
-
countryCode: z.enum(COUNTRY_CODES_2).optional(),
|
|
634
|
-
createdAt: z.coerce.date().nullable().optional()
|
|
635
|
-
});
|
|
636
|
-
const addressSelectSchema = z.object({
|
|
637
|
-
id: z.uuid(),
|
|
638
|
-
partyId: z.uuid(),
|
|
639
|
-
internalId: z.string().nullable(),
|
|
640
|
-
ruianCode: z.string().nullable(),
|
|
641
|
-
addressType: z.enum(ADDRESS_TYPE),
|
|
642
|
-
street: z.string().nullable(),
|
|
643
|
-
orientationNumber: z.string().nullable(),
|
|
644
|
-
descriptiveNumber: z.string().nullable(),
|
|
645
|
-
municipality: z.string(),
|
|
646
|
-
municipalityPart: z.string().nullable(),
|
|
647
|
-
zipCode: z.string(),
|
|
648
|
-
district: z.string().nullable(),
|
|
649
|
-
region: z.string().nullable(),
|
|
650
|
-
countryCode: z.enum(COUNTRY_CODES_2),
|
|
651
|
-
createdAt: z.coerce.date().nullable(),
|
|
652
|
-
updatedAt: z.coerce.date().nullable()
|
|
653
|
-
});
|
|
654
|
-
|
|
655
|
-
createInsertSchema(aml);
|
|
656
|
-
createUpdateSchema(aml);
|
|
657
|
-
createSelectSchema(aml);
|
|
658
|
-
const residencyAnswerSchema = z.object({
|
|
659
|
-
personName: z.string(),
|
|
660
|
-
personRole: z.enum(PERSON_ROLE),
|
|
661
|
-
answer: z.enum(YES_NO_UNKNOWN),
|
|
662
|
-
country: z.enum(COUNTRY_CODES_2).nullable()
|
|
663
|
-
});
|
|
664
|
-
const businessPartnerSchema = z.object({
|
|
665
|
-
name: z.string(),
|
|
666
|
-
country: z.string(),
|
|
667
|
-
cooperationReason: z.string().nullable()
|
|
668
|
-
});
|
|
669
|
-
const foSourceOfWealthSchema = z.object({
|
|
670
|
-
incomeSources: z.array(z.enum(INCOME_SOURCE)).min(1),
|
|
671
|
-
incomeSourceOther: z.string().nullable(),
|
|
672
|
-
monthlyIncome: z.enum(MONTHLY_INCOME_RANGE),
|
|
673
|
-
employer: z.string().nullable(),
|
|
674
|
-
employerCountry: z.string().nullable()
|
|
675
|
-
});
|
|
676
|
-
const businessSourceOfWealthSchema = z.object({
|
|
677
|
-
financialFundsSources: z.array(z.enum(FINANCIAL_FUNDS_SOURCE)).min(1),
|
|
678
|
-
financialFundsSourceOther: z.string().nullable(),
|
|
679
|
-
mainBusinessSubjects: z.array(z.enum(CZ_TRADE_LICENSE_CODES)).min(1),
|
|
680
|
-
companyTurnover: z.enum(COMPANY_TURNOVER_RANGE),
|
|
681
|
-
operatingCountries: z.array(z.enum(OPERATING_COUNTRY)).min(1),
|
|
682
|
-
operatingCountriesOther: z.array(z.enum(COUNTRY_CODES_2)).nullable(),
|
|
683
|
-
businessPartners: z.array(businessPartnerSchema).nullable(),
|
|
684
|
-
businessActivitiesNote: z.string().nullable()
|
|
685
|
-
});
|
|
686
|
-
const sourceOfWealthSchema = z.union([
|
|
687
|
-
foSourceOfWealthSchema,
|
|
688
|
-
businessSourceOfWealthSchema
|
|
689
|
-
]);
|
|
690
|
-
const businessPartnerOutputSchema$1 = z.object({
|
|
691
|
-
name: z.string(),
|
|
692
|
-
country: z.string(),
|
|
693
|
-
cooperationReason: z.string().nullable()
|
|
694
|
-
});
|
|
695
|
-
const foSourceOfWealthOutputSchema$1 = z.object({
|
|
696
|
-
incomeSources: z.array(z.enum(INCOME_SOURCE)),
|
|
697
|
-
incomeSourceOther: z.string().nullable(),
|
|
698
|
-
monthlyIncome: z.enum(MONTHLY_INCOME_RANGE),
|
|
699
|
-
employer: z.string().nullable(),
|
|
700
|
-
employerCountry: z.string().nullable()
|
|
701
|
-
});
|
|
702
|
-
const businessSourceOfWealthOutputSchema$1 = z.object({
|
|
703
|
-
financialFundsSources: z.array(z.enum(FINANCIAL_FUNDS_SOURCE)),
|
|
704
|
-
financialFundsSourceOther: z.string().nullable(),
|
|
705
|
-
mainBusinessSubjects: z.array(z.enum(CZ_TRADE_LICENSE_CODES)),
|
|
706
|
-
companyTurnover: z.enum(COMPANY_TURNOVER_RANGE),
|
|
707
|
-
operatingCountries: z.array(z.enum(OPERATING_COUNTRY)),
|
|
708
|
-
operatingCountriesOther: z.array(z.enum(COUNTRY_CODES_2)).nullable(),
|
|
709
|
-
businessPartners: z.array(businessPartnerOutputSchema$1).nullable(),
|
|
710
|
-
businessActivitiesNote: z.string().nullable()
|
|
711
|
-
});
|
|
712
|
-
const sourceOfWealthOutputSchema = z.union([
|
|
713
|
-
foSourceOfWealthOutputSchema$1,
|
|
714
|
-
businessSourceOfWealthOutputSchema$1
|
|
715
|
-
]);
|
|
716
|
-
const amlInsertSchema = z.object({
|
|
717
|
-
partyId: z.uuid(),
|
|
718
|
-
internalId: z.string().optional(),
|
|
719
|
-
sourceOfWealth: sourceOfWealthSchema,
|
|
720
|
-
yearlyIncome: z.enum(YEARLY_INCOME),
|
|
721
|
-
sourceOfIncome: z.array(z.enum(INCOME_SOURCE)).min(1),
|
|
722
|
-
incomeSourceOther: z.string().optional(),
|
|
723
|
-
servicePurposes: z.array(z.enum(SERVICE_PURPOSE)).optional(),
|
|
724
|
-
servicePurposesOther: z.string().optional(),
|
|
725
|
-
taxDomicile: z.enum(TAX_DOMICILE).optional(),
|
|
726
|
-
taxDomicileCountry: z.enum(COUNTRY_CODES_2).optional(),
|
|
727
|
-
transactionType: z.string().optional(),
|
|
728
|
-
transactionTypeExpiry: z.date().optional(),
|
|
729
|
-
isDistraint: z.boolean().default(false),
|
|
730
|
-
estTxsVolumeMonth: z.enum(EST_TXS_VOLUME_MONTH),
|
|
731
|
-
estTxsVolumeYear: z.enum(EST_TXS_VOLUME_YEAR),
|
|
732
|
-
estTxsCountMonth: z.number().int().optional(),
|
|
733
|
-
tradingCountries: z.array(z.enum(TARGET_COUNTRY)).min(1),
|
|
734
|
-
tradingCountriesOther: z.array(z.enum(COUNTRY_CODES_2)).optional(),
|
|
735
|
-
tradingSide: z.enum(TRADING_SIDE),
|
|
736
|
-
acceptedAMLTermsAndConditions: z.boolean(),
|
|
737
|
-
signatureMethod: z.enum(SIGNATURE_METHOD).optional(),
|
|
738
|
-
existencePeriod: z.enum(EXISTENCE_PERIOD).optional(),
|
|
739
|
-
reputation: z.enum(REPUTATION).optional(),
|
|
740
|
-
riskBusinessAreas: z.array(z.enum(RISK_BUSINESS_AREA)).optional(),
|
|
741
|
-
riskLevel: z.enum(AML_SCORE_TYPE).optional(),
|
|
742
|
-
kycStatus: z.enum(KYC_STATUS).optional(),
|
|
743
|
-
residencyAnswers: z.array(residencyAnswerSchema).optional().nullable()
|
|
744
|
-
});
|
|
745
|
-
const amlUpdateSchema = z.object({
|
|
746
|
-
id: z.uuid(),
|
|
747
|
-
partyId: z.uuid().optional(),
|
|
748
|
-
internalId: z.string().optional(),
|
|
749
|
-
sourceOfWealth: sourceOfWealthSchema.optional(),
|
|
750
|
-
yearlyIncome: z.enum(YEARLY_INCOME).optional(),
|
|
751
|
-
sourceOfIncome: z.array(z.enum(INCOME_SOURCE)).min(1).optional(),
|
|
752
|
-
incomeSourceOther: z.string().optional(),
|
|
753
|
-
servicePurposes: z.array(z.enum(SERVICE_PURPOSE)).optional(),
|
|
754
|
-
servicePurposesOther: z.string().optional(),
|
|
755
|
-
taxDomicile: z.enum(TAX_DOMICILE).optional(),
|
|
756
|
-
taxDomicileCountry: z.enum(COUNTRY_CODES_2).optional(),
|
|
757
|
-
transactionType: z.string().optional(),
|
|
758
|
-
transactionTypeExpiry: z.date().optional(),
|
|
759
|
-
isDistraint: z.boolean().optional(),
|
|
760
|
-
estTxsVolumeMonth: z.enum(EST_TXS_VOLUME_MONTH).optional(),
|
|
761
|
-
estTxsVolumeYear: z.enum(EST_TXS_VOLUME_YEAR).optional(),
|
|
762
|
-
estTxsCountMonth: z.number().int().optional(),
|
|
763
|
-
tradingCountries: z.array(z.enum(TARGET_COUNTRY)).min(1).optional(),
|
|
764
|
-
tradingCountriesOther: z.array(z.enum(COUNTRY_CODES_2)).optional(),
|
|
765
|
-
tradingSide: z.enum(TRADING_SIDE).optional(),
|
|
766
|
-
acceptedAMLTermsAndConditions: z.boolean().optional(),
|
|
767
|
-
signatureMethod: z.enum(SIGNATURE_METHOD).optional(),
|
|
768
|
-
existencePeriod: z.enum(EXISTENCE_PERIOD).optional(),
|
|
769
|
-
reputation: z.enum(REPUTATION).optional(),
|
|
770
|
-
riskBusinessAreas: z.array(z.enum(RISK_BUSINESS_AREA)).optional(),
|
|
771
|
-
riskLevel: z.enum(AML_SCORE_TYPE).optional(),
|
|
772
|
-
kycStatus: z.enum(KYC_STATUS).optional(),
|
|
773
|
-
residencyAnswers: z.array(residencyAnswerSchema).optional().nullable()
|
|
774
|
-
});
|
|
775
|
-
const amlSelectSchema = z.object({
|
|
776
|
-
id: z.string(),
|
|
777
|
-
partyId: z.string(),
|
|
778
|
-
internalId: z.string().nullable(),
|
|
779
|
-
sourceOfWealth: sourceOfWealthOutputSchema,
|
|
780
|
-
yearlyIncome: z.enum(YEARLY_INCOME),
|
|
781
|
-
sourceOfIncome: z.array(z.enum(INCOME_SOURCE)),
|
|
782
|
-
incomeSourceOther: z.string().nullable(),
|
|
783
|
-
servicePurposes: z.array(z.enum(SERVICE_PURPOSE)).nullable(),
|
|
784
|
-
servicePurposesOther: z.string().nullable(),
|
|
785
|
-
taxDomicile: z.enum(TAX_DOMICILE).nullable(),
|
|
786
|
-
taxDomicileCountry: z.enum(COUNTRY_CODES_2).nullable(),
|
|
787
|
-
transactionType: z.string().nullable(),
|
|
788
|
-
transactionTypeExpiry: z.date().nullable(),
|
|
789
|
-
isDistraint: z.boolean(),
|
|
790
|
-
estTxsVolumeMonth: z.enum(EST_TXS_VOLUME_MONTH),
|
|
791
|
-
estTxsVolumeYear: z.enum(EST_TXS_VOLUME_YEAR),
|
|
792
|
-
estTxsCountMonth: z.number().int().nullable(),
|
|
793
|
-
tradingCountries: z.array(z.enum(TARGET_COUNTRY)),
|
|
794
|
-
tradingCountriesOther: z.array(z.enum(COUNTRY_CODES_2)).nullable(),
|
|
795
|
-
tradingSide: z.enum(TRADING_SIDE),
|
|
796
|
-
acceptedAMLTermsAndConditions: z.boolean(),
|
|
797
|
-
signatureMethod: z.enum(SIGNATURE_METHOD).nullable(),
|
|
798
|
-
existencePeriod: z.enum(EXISTENCE_PERIOD).nullable(),
|
|
799
|
-
reputation: z.enum(REPUTATION).nullable(),
|
|
800
|
-
riskBusinessAreas: z.array(z.enum(RISK_BUSINESS_AREA)).nullable(),
|
|
801
|
-
riskLevel: z.enum(AML_SCORE_TYPE),
|
|
802
|
-
kycStatus: z.enum(KYC_STATUS).nullable(),
|
|
803
|
-
residencyAnswers: z.array(residencyAnswerSchema).nullable(),
|
|
804
|
-
createdAt: z.date().nullable(),
|
|
805
|
-
updatedAt: z.date().nullable(),
|
|
806
|
-
deletedAt: z.date().nullable()
|
|
807
|
-
});
|
|
808
|
-
|
|
809
|
-
const bankAccountBaseInsertSchema = createInsertSchema(bankAccount);
|
|
810
|
-
createUpdateSchema(bankAccount);
|
|
811
|
-
createSelectSchema(bankAccount);
|
|
812
|
-
const bankAccountUpdateSchema = bankAccountBaseInsertSchema.extend({ partyId: z.uuid(), bankCode: z.string().nullable().optional() }).omit({});
|
|
813
|
-
const bankAccountInsertSchema = bankAccountUpdateSchema.omit({
|
|
814
|
-
id: true
|
|
815
|
-
});
|
|
816
|
-
const bankAccountUpsertSchema = bankAccountBaseInsertSchema.required({
|
|
817
|
-
id: true
|
|
818
|
-
});
|
|
819
|
-
const bankAccountSelectSchema = bankAccountUpdateSchema.required().extend({
|
|
820
|
-
bankCode: z.string().nullable(),
|
|
821
|
-
statementUri: z.string().nullable()
|
|
822
|
-
});
|
|
823
|
-
z.array(bankAccountSelectSchema);
|
|
824
|
-
|
|
825
|
-
createInsertSchema(contact);
|
|
826
|
-
createUpdateSchema(contact);
|
|
827
|
-
createSelectSchema(contact);
|
|
828
|
-
const contactInsertSchema = z.object({
|
|
829
|
-
partyId: z.uuid(),
|
|
830
|
-
internalId: z.string().optional().nullable(),
|
|
831
|
-
contactType: z.enum(CONTACT_TYPE).optional(),
|
|
832
|
-
email: z.email("Invalid email format"),
|
|
833
|
-
phoneNumber: z.string()
|
|
834
|
-
});
|
|
835
|
-
const contactUpdateSchema = z.object({
|
|
836
|
-
id: z.uuid(),
|
|
837
|
-
partyId: z.uuid().optional(),
|
|
838
|
-
internalId: z.string().optional().nullable(),
|
|
839
|
-
contactType: z.enum(CONTACT_TYPE).optional(),
|
|
840
|
-
email: z.email("Invalid email format").optional(),
|
|
841
|
-
phoneNumber: z.string().optional()
|
|
842
|
-
});
|
|
843
|
-
|
|
844
|
-
const insertOverrides = {
|
|
845
|
-
id: z.uuid(),
|
|
846
|
-
partyId: z.uuid(),
|
|
847
|
-
email: z.email("Invalid email format")
|
|
848
|
-
};
|
|
849
|
-
const selectOverrides = {
|
|
850
|
-
id: z.uuid(),
|
|
851
|
-
partyId: z.uuid(),
|
|
852
|
-
deathDate: z.coerce.date().nullable(),
|
|
853
|
-
deathNotification: z.coerce.date().nullable(),
|
|
854
|
-
createdAt: z.coerce.date().nullable(),
|
|
855
|
-
updatedAt: z.coerce.date().nullable()
|
|
856
|
-
};
|
|
857
|
-
const individualBaseInsertSchema = createInsertSchema(
|
|
858
|
-
individual,
|
|
859
|
-
insertOverrides
|
|
860
|
-
);
|
|
861
|
-
createUpdateSchema(individual, {
|
|
862
|
-
id: z.uuid(),
|
|
863
|
-
partyId: z.uuid(),
|
|
864
|
-
email: z.email("Invalid email format").optional()
|
|
865
|
-
});
|
|
866
|
-
const individualBaseSelectSchema = createSelectSchema(
|
|
867
|
-
individual,
|
|
868
|
-
selectOverrides
|
|
869
|
-
);
|
|
870
|
-
const individualInsertSchema$1 = individualBaseInsertSchema.omit({
|
|
871
|
-
id: true,
|
|
872
|
-
internalId: true,
|
|
873
|
-
createdAt: true,
|
|
874
|
-
updatedAt: true
|
|
875
|
-
});
|
|
876
|
-
const individualUpdateSchema$1 = individualInsertSchema$1.partial().extend({
|
|
877
|
-
partyId: z.uuid(),
|
|
878
|
-
id: z.uuid()
|
|
879
|
-
});
|
|
880
|
-
const individualSelectSchema = individualBaseSelectSchema;
|
|
881
|
-
|
|
882
|
-
createInsertSchema(organization);
|
|
883
|
-
createUpdateSchema(organization);
|
|
884
|
-
createSelectSchema(organization);
|
|
885
|
-
const organizationInsertSchema = z.object({
|
|
886
|
-
partyId: z.uuid(),
|
|
887
|
-
businessName: z.string(),
|
|
888
|
-
email: z.email("Invalid email format").optional().nullable(),
|
|
889
|
-
phone: z.string().optional().nullable(),
|
|
890
|
-
registeredNumber: z.string(),
|
|
891
|
-
registeredIn: z.enum(COUNTRY_CODES_2),
|
|
892
|
-
operatesIn: z.enum(COUNTRY_CODES_2),
|
|
893
|
-
presentIn: z.enum(COUNTRY_CODES_2),
|
|
894
|
-
monthlyVolumeIn: z.number(),
|
|
895
|
-
monthlyVolumeOut: z.number(),
|
|
896
|
-
ownedBy: z.string(),
|
|
897
|
-
companyObjects: z.array(z.enum(CZ_NACE_CODES)).min(1),
|
|
898
|
-
annualTurnover: z.number(),
|
|
899
|
-
numberOfEmployees: z.number().optional().nullable(),
|
|
900
|
-
prosecuted: z.string().optional().nullable(),
|
|
901
|
-
location: z.string().optional().nullable(),
|
|
902
|
-
fileNumber: z.string().optional().nullable(),
|
|
903
|
-
websiteUrl: z.url("Invalid website URL").optional().nullable(),
|
|
904
|
-
vatPayer: z.boolean(),
|
|
905
|
-
companyObjectsDescription: z.string(),
|
|
906
|
-
turnover3years: z.number(),
|
|
907
|
-
operationCountries: z.string(),
|
|
908
|
-
riskyBusinessType: z.string().optional().nullable(),
|
|
909
|
-
vatId: z.string().optional().nullable(),
|
|
910
|
-
court: z.enum(COURT).optional().nullable(),
|
|
911
|
-
registerUri: z.string().optional().nullable()
|
|
912
|
-
});
|
|
913
|
-
const organizationUpdateSchema$1 = z.object({
|
|
914
|
-
partyId: z.uuid().optional(),
|
|
915
|
-
id: z.uuid(),
|
|
916
|
-
businessName: z.string().optional(),
|
|
917
|
-
email: z.email("Invalid email format").optional().nullable(),
|
|
918
|
-
phone: z.string().optional().nullable(),
|
|
919
|
-
registeredNumber: z.string().optional(),
|
|
920
|
-
registeredIn: z.enum(COUNTRY_CODES_2).optional(),
|
|
921
|
-
operatesIn: z.enum(COUNTRY_CODES_2).optional(),
|
|
922
|
-
presentIn: z.enum(COUNTRY_CODES_2).optional(),
|
|
923
|
-
monthlyVolumeIn: z.number().optional(),
|
|
924
|
-
monthlyVolumeOut: z.number().optional(),
|
|
925
|
-
ownedBy: z.string().optional(),
|
|
926
|
-
companyObjects: z.array(z.enum(CZ_NACE_CODES)).min(1).optional(),
|
|
927
|
-
annualTurnover: z.number().optional(),
|
|
928
|
-
numberOfEmployees: z.number().optional().nullable(),
|
|
929
|
-
prosecuted: z.string().optional().nullable(),
|
|
930
|
-
location: z.string().optional().nullable(),
|
|
931
|
-
fileNumber: z.string().optional().nullable(),
|
|
932
|
-
websiteUrl: z.url("Invalid website URL").optional().nullable(),
|
|
933
|
-
vatPayer: z.boolean().optional(),
|
|
934
|
-
companyObjectsDescription: z.string(),
|
|
935
|
-
turnover3years: z.number(),
|
|
936
|
-
operationCountries: z.string(),
|
|
937
|
-
riskyBusinessType: z.string().optional().nullable(),
|
|
938
|
-
vatId: z.string().optional().nullable(),
|
|
939
|
-
court: z.enum(COURT).optional().nullable(),
|
|
940
|
-
registerUri: z.string().optional().nullable()
|
|
941
|
-
});
|
|
942
|
-
const organizationOutputSchema = z.object({
|
|
943
|
-
id: z.uuid(),
|
|
944
|
-
partyId: z.uuid(),
|
|
945
|
-
internalId: z.string().nullable(),
|
|
946
|
-
businessName: z.string(),
|
|
947
|
-
email: z.string().nullable(),
|
|
948
|
-
phone: z.string().nullable(),
|
|
949
|
-
registeredNumber: z.string(),
|
|
950
|
-
registeredIn: z.enum(COUNTRY_CODES_2),
|
|
951
|
-
operatesIn: z.enum(COUNTRY_CODES_2),
|
|
952
|
-
presentIn: z.enum(COUNTRY_CODES_2),
|
|
953
|
-
monthlyVolumeIn: z.number(),
|
|
954
|
-
monthlyVolumeOut: z.number(),
|
|
955
|
-
ownedBy: z.string(),
|
|
956
|
-
companyObjects: z.array(z.enum(CZ_NACE_CODES)),
|
|
957
|
-
annualTurnover: z.number(),
|
|
958
|
-
numberOfEmployees: z.number().nullable(),
|
|
959
|
-
prosecuted: z.string().nullable(),
|
|
960
|
-
location: z.string().nullable(),
|
|
961
|
-
fileNumber: z.string().nullable(),
|
|
962
|
-
websiteUrl: z.string().nullable(),
|
|
963
|
-
vatPayer: z.boolean(),
|
|
964
|
-
companyObjectsDescription: z.string(),
|
|
965
|
-
turnover3years: z.number(),
|
|
966
|
-
operationCountries: z.string(),
|
|
967
|
-
riskyBusinessType: z.string().nullable(),
|
|
968
|
-
stayAbroad: z.boolean().nullable(),
|
|
969
|
-
stayAbroadCountries: z.enum(COUNTRY_CODES_2).nullable(),
|
|
970
|
-
vatId: z.string().nullable(),
|
|
971
|
-
court: z.enum(COURT).nullable(),
|
|
972
|
-
registerUri: z.string().nullable(),
|
|
973
|
-
createdAt: z.coerce.date().nullable(),
|
|
974
|
-
updatedAt: z.coerce.date().nullable()
|
|
975
|
-
});
|
|
976
|
-
const organizationSelectSchema = organizationOutputSchema;
|
|
977
|
-
z.array(organizationOutputSchema);
|
|
978
|
-
|
|
979
|
-
createInsertSchema(idDocument);
|
|
980
|
-
createUpdateSchema(idDocument);
|
|
981
|
-
const idDocumentBaseSelectSchema = createSelectSchema(idDocument);
|
|
982
|
-
const idDocumentInsertSchema = z.object({
|
|
983
|
-
partyId: z.uuid(),
|
|
984
|
-
internalId: z.string().optional().nullable(),
|
|
985
|
-
idDocType: z.enum(ID_DOC_TYPE),
|
|
986
|
-
idDocNumber: z.string(),
|
|
987
|
-
idDocHolderName: z.string(),
|
|
988
|
-
issueDate: z.date().optional().nullable(),
|
|
989
|
-
expirationDate: z.date().optional().nullable(),
|
|
990
|
-
issuer: z.string().optional().nullable(),
|
|
991
|
-
countryOfIssue: z.enum(COUNTRY_CODES_2).optional().nullable(),
|
|
992
|
-
frontImageUri: z.url().optional().nullable(),
|
|
993
|
-
backImageUri: z.url().optional().nullable(),
|
|
994
|
-
idDocStatus: z.enum(ID_DOC_STATUS).optional().nullable()
|
|
995
|
-
});
|
|
996
|
-
const idDocumentUpdateSchema = z.object({
|
|
997
|
-
id: z.uuid(),
|
|
998
|
-
partyId: z.uuid().optional(),
|
|
999
|
-
internalId: z.string().optional().nullable(),
|
|
1000
|
-
idDocType: z.enum(ID_DOC_TYPE).optional(),
|
|
1001
|
-
idDocNumber: z.string().optional(),
|
|
1002
|
-
idDocHolderName: z.string().optional(),
|
|
1003
|
-
issueDate: z.date().optional().nullable(),
|
|
1004
|
-
expirationDate: z.date().optional().nullable(),
|
|
1005
|
-
issuer: z.string().optional().nullable(),
|
|
1006
|
-
countryOfIssue: z.enum(COUNTRY_CODES_2).optional().nullable(),
|
|
1007
|
-
frontImageUri: z.url("Invalid URL format").optional().nullable(),
|
|
1008
|
-
backImageUri: z.url("Invalid URL format").optional().nullable(),
|
|
1009
|
-
idDocStatus: z.enum(ID_DOC_STATUS).optional().nullable()
|
|
1010
|
-
});
|
|
1011
|
-
const idDocumentSelectSchema = idDocumentBaseSelectSchema;
|
|
1012
|
-
const idDocumentSyncSchema = idDocumentInsertSchema.omit({ partyId: true }).extend({ id: z.uuid().optional(), idDocHolderName: z.string().optional() });
|
|
1013
|
-
|
|
1014
|
-
z.discriminatedUnion("partyType", [
|
|
1015
|
-
z.object({
|
|
1016
|
-
partyType: z.literal("INDIVIDUAL"),
|
|
1017
|
-
data: individualInsertSchema$1
|
|
1018
|
-
}),
|
|
1019
|
-
z.object({
|
|
1020
|
-
partyType: z.literal("ORGANIZATION"),
|
|
1021
|
-
data: organizationInsertSchema
|
|
1022
|
-
})
|
|
1023
|
-
]);
|
|
1024
|
-
const disponentCreateSchema = z.discriminatedUnion("partyType", [
|
|
1025
|
-
z.object({
|
|
1026
|
-
partyType: z.literal("INDIVIDUAL"),
|
|
1027
|
-
relationshipType: z.enum(PARTY_RELATIONSHIP_TYPE).optional(),
|
|
1028
|
-
data: individualInsertSchema$1.omit({ partyId: true }).extend({
|
|
1029
|
-
identityDocuments: z.array(idDocumentSyncSchema).nullable().optional()
|
|
1030
|
-
})
|
|
1031
|
-
}),
|
|
1032
|
-
z.object({
|
|
1033
|
-
partyType: z.literal("ORGANIZATION"),
|
|
1034
|
-
relationshipType: z.enum(PARTY_RELATIONSHIP_TYPE).optional(),
|
|
1035
|
-
data: organizationInsertSchema.omit({ partyId: true })
|
|
1036
|
-
})
|
|
1037
|
-
]);
|
|
1038
|
-
const disponentUpdateSchema = z.discriminatedUnion("partyType", [
|
|
1039
|
-
z.object({
|
|
1040
|
-
partyType: z.literal("INDIVIDUAL"),
|
|
1041
|
-
data: individualUpdateSchema$1
|
|
1042
|
-
}),
|
|
1043
|
-
z.object({
|
|
1044
|
-
partyType: z.literal("ORGANIZATION"),
|
|
1045
|
-
data: organizationUpdateSchema$1
|
|
1046
|
-
})
|
|
1047
|
-
]);
|
|
1048
|
-
const disponentSyncSchema$1 = z.discriminatedUnion("partyType", [
|
|
1049
|
-
z.object({
|
|
1050
|
-
partyType: z.literal("INDIVIDUAL"),
|
|
1051
|
-
relationshipType: z.enum(PARTY_RELATIONSHIP_TYPE).optional(),
|
|
1052
|
-
data: individualInsertSchema$1.omit({ partyId: true }).extend({
|
|
1053
|
-
id: z.uuid().optional(),
|
|
1054
|
-
identityDocuments: z.array(idDocumentSyncSchema).nullable().optional()
|
|
1055
|
-
})
|
|
1056
|
-
}),
|
|
1057
|
-
z.object({
|
|
1058
|
-
partyType: z.literal("ORGANIZATION"),
|
|
1059
|
-
relationshipType: z.enum(PARTY_RELATIONSHIP_TYPE).optional(),
|
|
1060
|
-
data: organizationInsertSchema.omit({ partyId: true }).extend({ id: z.uuid().optional() })
|
|
1061
|
-
})
|
|
1062
|
-
]);
|
|
1063
|
-
const disponentSelectSchema = z.discriminatedUnion("partyType", [
|
|
1064
|
-
z.object({
|
|
1065
|
-
partyType: z.literal("INDIVIDUAL"),
|
|
1066
|
-
data: individualSelectSchema.extend({
|
|
1067
|
-
identityDocuments: z.array(idDocumentSelectSchema).nullable()
|
|
1068
|
-
})
|
|
1069
|
-
}),
|
|
1070
|
-
z.object({
|
|
1071
|
-
partyType: z.literal("ORGANIZATION"),
|
|
1072
|
-
data: organizationSelectSchema
|
|
1073
|
-
})
|
|
1074
|
-
]);
|
|
1075
|
-
const disponentsSelectSchema = z.array(disponentSelectSchema).optional();
|
|
1076
|
-
z.array(disponentUpdateSchema).optional();
|
|
1077
|
-
|
|
1078
|
-
const recipientBaseInsertSchema = createInsertSchema(recipient);
|
|
1079
|
-
const recipientBaseUpdateSchema = createUpdateSchema(recipient);
|
|
1080
|
-
createSelectSchema(recipient);
|
|
1081
|
-
const recipientUpsertSchema = recipientBaseInsertSchema.required({
|
|
1082
|
-
id: true
|
|
1083
|
-
});
|
|
1084
|
-
const recipientInsertSchema = bankAccountInsertSchema;
|
|
1085
|
-
const recipientUpdateSchema = recipientBaseUpdateSchema.required({
|
|
1086
|
-
id: true
|
|
1087
|
-
});
|
|
1088
|
-
const recipientSelectSchema = bankAccountSelectSchema.omit({
|
|
1089
|
-
statementUri: true
|
|
1090
|
-
});
|
|
1091
|
-
|
|
1092
|
-
const productTxsConfigSchema = z.object({
|
|
1093
|
-
fee: z.number(),
|
|
1094
|
-
margin: z.number(),
|
|
1095
|
-
reportingEmail: z.string().optional(),
|
|
1096
|
-
clientType: z.enum(TXS_CLIENT_TYPE).optional()
|
|
1097
|
-
});
|
|
1098
|
-
const productCbsConfigSchema = z.object({});
|
|
1099
|
-
const productConfigSchema = z.union([
|
|
1100
|
-
productTxsConfigSchema,
|
|
1101
|
-
productCbsConfigSchema
|
|
1102
|
-
]);
|
|
1103
|
-
const partyProductBaseInsertSchema = createInsertSchema(partyProduct, {
|
|
1104
|
-
config: () => productConfigSchema.nullable()
|
|
1105
|
-
});
|
|
1106
|
-
createUpdateSchema(partyProduct, {
|
|
1107
|
-
config: () => productConfigSchema.nullable()
|
|
1108
|
-
});
|
|
1109
|
-
createSelectSchema(partyProduct, {
|
|
1110
|
-
config: () => productConfigSchema.nullable()
|
|
1111
|
-
});
|
|
1112
|
-
const partyProductUpdateSchema = partyProductBaseInsertSchema.extend({
|
|
1113
|
-
partyId: z.uuid()
|
|
1114
|
-
});
|
|
1115
|
-
partyProductUpdateSchema.omit({
|
|
1116
|
-
id: true
|
|
1117
|
-
});
|
|
1118
|
-
const partyProductSelectSchema = partyProductUpdateSchema.required();
|
|
1119
|
-
z.array(partyProductSelectSchema);
|
|
1120
|
-
const productsInputSchema$2 = z.object({
|
|
1121
|
-
txs: productTxsConfigSchema.optional(),
|
|
1122
|
-
cbs: productCbsConfigSchema.optional()
|
|
1123
|
-
});
|
|
1124
|
-
const productTxsConfigOutputSchema = z.object({
|
|
1125
|
-
fee: z.number(),
|
|
1126
|
-
margin: z.number(),
|
|
1127
|
-
reportingEmail: z.string().nullable(),
|
|
1128
|
-
clientType: z.enum(TXS_CLIENT_TYPE).nullable()
|
|
1129
|
-
});
|
|
1130
|
-
const productsOutputSchema$1 = z.object({
|
|
1131
|
-
txs: productTxsConfigOutputSchema.nullable(),
|
|
1132
|
-
cbs: productCbsConfigSchema.nullable()
|
|
1133
|
-
});
|
|
1134
|
-
|
|
1135
|
-
const legalRepresentativeSyncSchema$1 = individualInsertSchema$1.omit({ partyId: true }).extend({
|
|
1136
|
-
id: z.uuid().optional(),
|
|
1137
|
-
dateOfEstablishment: z.string(),
|
|
1138
|
-
address: addressInsertSchema.omit({ partyId: true }).nullable().optional(),
|
|
1139
|
-
identityDocuments: z.array(idDocumentSyncSchema).nullable().optional()
|
|
1140
|
-
});
|
|
1141
|
-
const ownerSyncSchema$1 = individualInsertSchema$1.omit({ partyId: true }).extend({
|
|
1142
|
-
id: z.uuid().optional(),
|
|
1143
|
-
sharePercentage: z.number().min(0).max(100),
|
|
1144
|
-
shareEstablishedAt: z.string(),
|
|
1145
|
-
address: addressInsertSchema.omit({ partyId: true }).nullable().optional()
|
|
1146
|
-
});
|
|
1147
|
-
const legalRepresentativeSelectSchema = individualSelectSchema.extend({
|
|
1148
|
-
dateOfEstablishment: z.string().nullable(),
|
|
1149
|
-
address: addressSelectSchema.nullable(),
|
|
1150
|
-
identityDocuments: z.array(idDocumentSelectSchema).nullable()
|
|
1151
|
-
});
|
|
1152
|
-
const ownerSelectSchema = individualSelectSchema.extend({
|
|
1153
|
-
sharePercentage: z.number().nullable(),
|
|
1154
|
-
shareEstablishedAt: z.string().nullable(),
|
|
1155
|
-
address: addressSelectSchema.nullable()
|
|
1156
|
-
});
|
|
1157
|
-
const partyInsertSchema = createInsertSchema(party);
|
|
1158
|
-
createUpdateSchema(party);
|
|
1159
|
-
const partySchema$2 = z.object({
|
|
1160
|
-
partyType: z.enum(PARTY_TYPE),
|
|
1161
|
-
language: z.enum(LANGUAGE_CODES),
|
|
1162
|
-
id: z.uuid().nullable(),
|
|
1163
|
-
note: z.string().optional(),
|
|
1164
|
-
countryCode: z.enum(COUNTRY_CODES_2).optional(),
|
|
1165
|
-
customerStatus: z.enum(CUSTOMER_STATUS).optional(),
|
|
1166
|
-
isRoot: z.boolean().optional(),
|
|
1167
|
-
legacyId: z.string().optional()
|
|
1168
|
-
});
|
|
1169
|
-
const partyOutputSchema$1 = z.object({
|
|
1170
|
-
internalId: z.string().nullable(),
|
|
1171
|
-
customerStatus: z.enum(CUSTOMER_STATUS),
|
|
1172
|
-
partyType: z.enum(PARTY_TYPE),
|
|
1173
|
-
language: z.enum(LANGUAGE_CODES),
|
|
1174
|
-
id: z.uuid(),
|
|
1175
|
-
note: z.string().nullable(),
|
|
1176
|
-
countryCode: z.enum(COUNTRY_CODES_2).nullable(),
|
|
1177
|
-
isRoot: z.boolean(),
|
|
1178
|
-
createdAt: z.date().nullable(),
|
|
1179
|
-
updatedAt: z.date().nullable()
|
|
1180
|
-
});
|
|
1181
|
-
const createPartySchema = partySchema$2.omit({ id: true });
|
|
1182
|
-
z.object({
|
|
1183
|
-
party: createPartySchema,
|
|
1184
|
-
personalData: individualInsertSchema$1.omit({ partyId: true }).extend({
|
|
1185
|
-
identityDocuments: z.array(idDocumentSyncSchema).nullable().optional()
|
|
1186
|
-
}).nullable(),
|
|
1187
|
-
organizationData: organizationInsertSchema.omit({ partyId: true }).nullable(),
|
|
1188
|
-
bankAccounts: z.array(bankAccountInsertSchema.omit({ partyId: true })).nullable(),
|
|
1189
|
-
recipients: z.array(recipientInsertSchema.omit({ partyId: true })).nullable(),
|
|
1190
|
-
disponents: z.array(disponentCreateSchema).nullable(),
|
|
1191
|
-
addresses: z.array(addressInsertSchema.omit({ partyId: true })),
|
|
1192
|
-
aml: amlInsertSchema.omit({ partyId: true }).optional().nullable(),
|
|
1193
|
-
products: productsInputSchema$2.optional(),
|
|
1194
|
-
traderIds: z.array(z.uuid()).optional()
|
|
1195
|
-
});
|
|
1196
|
-
z.object({
|
|
1197
|
-
partyId: z.uuid(),
|
|
1198
|
-
party: partySchema$2,
|
|
1199
|
-
personalData: individualUpdateSchema$1.extend({
|
|
1200
|
-
identityDocuments: z.array(idDocumentSyncSchema).nullable().optional()
|
|
1201
|
-
}).optional(),
|
|
1202
|
-
organizationData: organizationUpdateSchema$1.optional(),
|
|
1203
|
-
bankAccounts: z.array(bankAccountUpsertSchema.partial({ id: true })).optional(),
|
|
1204
|
-
recipients: z.array(recipientUpsertSchema.partial({ id: true })).optional(),
|
|
1205
|
-
disponents: z.array(disponentSyncSchema$1).optional(),
|
|
1206
|
-
addresses: z.array(addressInsertSchema).optional(),
|
|
1207
|
-
aml: amlUpdateSchema.optional(),
|
|
1208
|
-
products: productsInputSchema$2.optional(),
|
|
1209
|
-
traderIds: z.array(z.uuid()).optional(),
|
|
1210
|
-
legalRepresentatives: z.array(legalRepresentativeSyncSchema$1).optional(),
|
|
1211
|
-
owners: z.array(ownerSyncSchema$1).optional()
|
|
1212
|
-
});
|
|
1213
|
-
const partySelectOutputSchema = z.object({
|
|
1214
|
-
party: partyOutputSchema$1.nullable(),
|
|
1215
|
-
personalData: individualSelectSchema.extend({
|
|
1216
|
-
identityDocuments: z.array(idDocumentSelectSchema).nullable()
|
|
1217
|
-
}).nullable(),
|
|
1218
|
-
organizationData: organizationSelectSchema.nullable(),
|
|
1219
|
-
aml: amlSelectSchema.nullable(),
|
|
1220
|
-
bankAccounts: z.array(bankAccountSelectSchema).nullable(),
|
|
1221
|
-
disponents: z.array(disponentSelectSchema).nullable(),
|
|
1222
|
-
addresses: z.array(addressSelectSchema).nullable(),
|
|
1223
|
-
recipients: z.array(recipientSelectSchema).nullable(),
|
|
1224
|
-
products: productsOutputSchema$1.nullable(),
|
|
1225
|
-
traderIds: z.array(z.uuid()).nullable(),
|
|
1226
|
-
legalRepresentatives: z.array(legalRepresentativeSelectSchema).nullable(),
|
|
1227
|
-
owners: z.array(ownerSelectSchema).nullable()
|
|
1228
|
-
});
|
|
1229
|
-
z.array(partySelectOutputSchema);
|
|
1230
|
-
const partySelectDataSchema = z.object({
|
|
1231
|
-
party: partyOutputSchema$1.nullable(),
|
|
1232
|
-
personalData: individualSelectSchema.extend({
|
|
1233
|
-
identityDocuments: z.array(idDocumentSelectSchema).nullable()
|
|
1234
|
-
}).nullable(),
|
|
1235
|
-
organizationData: organizationSelectSchema.nullable(),
|
|
1236
|
-
aml: amlSelectSchema.nullable()
|
|
1237
|
-
});
|
|
1238
|
-
const partySelectArrayDataSchema = z.object({
|
|
1239
|
-
bankAccounts: z.array(bankAccountSelectSchema).nullable(),
|
|
1240
|
-
addresses: z.array(addressSelectSchema).nullable(),
|
|
1241
|
-
disponents: z.array(disponentSelectSchema).nullable(),
|
|
1242
|
-
recipients: z.array(recipientSelectSchema).nullable(),
|
|
1243
|
-
legalRepresentatives: z.array(legalRepresentativeSelectSchema).nullable(),
|
|
1244
|
-
owners: z.array(ownerSelectSchema).nullable()
|
|
1245
|
-
});
|
|
1246
|
-
z.object({
|
|
1247
|
-
...partySelectDataSchema.shape,
|
|
1248
|
-
...partySelectArrayDataSchema.shape,
|
|
1249
|
-
products: productsOutputSchema$1.nullable(),
|
|
1250
|
-
traderIds: z.array(z.uuid()).nullable()
|
|
1251
|
-
});
|
|
1252
|
-
|
|
1253
|
-
createInsertSchema(partyChange);
|
|
1254
|
-
createUpdateSchema(partyChange);
|
|
1255
|
-
createSelectSchema(partyChange);
|
|
1256
|
-
z.object({
|
|
1257
|
-
partyId: z.uuid().optional().nullable(),
|
|
1258
|
-
internalId: z.string().optional().nullable(),
|
|
1259
|
-
operation: z.string(),
|
|
1260
|
-
diff: z.json(),
|
|
1261
|
-
snapshotBefore: z.json(),
|
|
1262
|
-
snapshotAfter: z.json()
|
|
1263
|
-
});
|
|
1264
|
-
z.object({
|
|
1265
|
-
id: z.uuid(),
|
|
1266
|
-
partyId: z.uuid().optional().nullable(),
|
|
1267
|
-
internalId: z.string().optional().nullable(),
|
|
1268
|
-
operation: z.string().optional(),
|
|
1269
|
-
diff: z.json().optional(),
|
|
1270
|
-
snapshotBefore: z.json().optional(),
|
|
1271
|
-
snapshotAfter: z.json().optional()
|
|
1272
|
-
});
|
|
1273
|
-
|
|
1274
|
-
createInsertSchema(partyRelationship);
|
|
1275
|
-
createUpdateSchema(partyRelationship);
|
|
1276
|
-
createSelectSchema(partyRelationship);
|
|
1277
|
-
z.object({
|
|
1278
|
-
relationshipType: z.enum(PARTY_RELATIONSHIP_TYPE).optional(),
|
|
1279
|
-
frompartyId: z.uuid().optional().nullable(),
|
|
1280
|
-
internalId: z.string().optional().nullable(),
|
|
1281
|
-
topartyId: z.uuid().optional().nullable(),
|
|
1282
|
-
fromDate: z.date().optional().nullable(),
|
|
1283
|
-
sharePercentage: z.number().max(100).optional().nullable()
|
|
1284
|
-
});
|
|
1285
|
-
z.object({
|
|
1286
|
-
id: z.uuid(),
|
|
1287
|
-
relationshipType: z.enum(PARTY_RELATIONSHIP_TYPE).optional(),
|
|
1288
|
-
frompartyId: z.uuid().optional().nullable(),
|
|
1289
|
-
internalId: z.string().optional().nullable(),
|
|
1290
|
-
topartyId: z.uuid().optional().nullable(),
|
|
1291
|
-
fromDate: z.date().optional().nullable(),
|
|
1292
|
-
sharePercentage: z.number().max(100).optional().nullable()
|
|
1293
|
-
});
|
|
1294
|
-
|
|
1295
|
-
createInsertSchema(taxResidence);
|
|
1296
|
-
createUpdateSchema(taxResidence);
|
|
1297
|
-
createSelectSchema(taxResidence);
|
|
1298
|
-
z.object({
|
|
1299
|
-
partyId: z.uuid(),
|
|
1300
|
-
country: z.enum(COUNTRY_CODES_2),
|
|
1301
|
-
taxIdentificationNumber: z.string()
|
|
1302
|
-
});
|
|
1303
|
-
z.object({
|
|
1304
|
-
id: z.uuid(),
|
|
1305
|
-
partyId: z.uuid().optional(),
|
|
1306
|
-
country: z.enum(COUNTRY_CODES_2).optional(),
|
|
1307
|
-
taxIdentificationNumber: z.string().optional()
|
|
1308
|
-
});
|
|
1309
|
-
|
|
1310
|
-
createInsertSchema(trader);
|
|
1311
|
-
createUpdateSchema(trader);
|
|
1312
|
-
createSelectSchema(trader);
|
|
1313
|
-
const traderInsertSchema = z.object({
|
|
1314
|
-
type: z.enum(TRADER_TYPE),
|
|
1315
|
-
commission: z.number(),
|
|
1316
|
-
firstName: z.string().optional(),
|
|
1317
|
-
lastName: z.string().optional(),
|
|
1318
|
-
companyName: z.string().optional(),
|
|
1319
|
-
ico: z.string().optional(),
|
|
1320
|
-
dic: z.string().optional(),
|
|
1321
|
-
legacyId: z.string().optional(),
|
|
1322
|
-
parentTraderId: z.uuid().optional()
|
|
1323
|
-
});
|
|
1324
|
-
const traderUpdateSchema = z.object({
|
|
1325
|
-
id: z.uuid(),
|
|
1326
|
-
type: z.enum(TRADER_TYPE).optional(),
|
|
1327
|
-
commission: z.number().optional(),
|
|
1328
|
-
internalId: z.string().optional(),
|
|
1329
|
-
firstName: z.string().optional(),
|
|
1330
|
-
lastName: z.string().optional(),
|
|
1331
|
-
companyName: z.string().optional(),
|
|
1332
|
-
ico: z.string().optional(),
|
|
1333
|
-
dic: z.string().optional(),
|
|
1334
|
-
legacyId: z.string().optional(),
|
|
1335
|
-
parentTraderId: z.uuid().optional()
|
|
1336
|
-
});
|
|
1337
|
-
z.object({
|
|
1338
|
-
id: z.uuid(),
|
|
1339
|
-
createdAt: z.coerce.date().nullable(),
|
|
1340
|
-
updatedAt: z.coerce.date().nullable(),
|
|
1341
|
-
deletedAt: z.coerce.date().nullable(),
|
|
1342
|
-
type: z.enum(TRADER_TYPE),
|
|
1343
|
-
commission: z.number(),
|
|
1344
|
-
internalId: z.string().nullable(),
|
|
1345
|
-
firstName: z.string().nullable(),
|
|
1346
|
-
lastName: z.string().nullable(),
|
|
1347
|
-
companyName: z.string().nullable(),
|
|
1348
|
-
ico: z.string().nullable(),
|
|
1349
|
-
dic: z.string().nullable(),
|
|
1350
|
-
legacyId: z.string().nullable(),
|
|
1351
|
-
parentTraderId: z.uuid().nullable()
|
|
1352
|
-
});
|
|
1353
|
-
|
|
1354
|
-
const paginationSchema = z.object({
|
|
1355
|
-
offset: z.number().default(1),
|
|
1356
|
-
limit: z.number().default(10)
|
|
1357
|
-
});
|
|
1358
|
-
const paginationAndSearchSchema = z.object({
|
|
1359
|
-
page: z.coerce.number().positive().default(1),
|
|
1360
|
-
limit: z.coerce.number().positive().default(20),
|
|
1361
|
-
column: z.string(),
|
|
1362
|
-
direction: z.enum(["asc", "desc"]),
|
|
1363
|
-
search: z.string().optional(),
|
|
1364
|
-
ids: z.string().array().optional()
|
|
1365
|
-
});
|
|
1366
|
-
paginationSchema.extend({
|
|
1367
|
-
partyId: z.uuid()
|
|
1368
|
-
});
|
|
1369
|
-
paginationSchema.extend({
|
|
1370
|
-
id: z.uuid()
|
|
1371
|
-
});
|
|
1372
|
-
z.object({ partyId: z.uuid() });
|
|
1373
|
-
|
|
1374
|
-
z.object({
|
|
1375
|
-
trader: traderInsertSchema
|
|
1376
|
-
});
|
|
1377
|
-
|
|
1378
|
-
z.object({
|
|
1379
|
-
trader: traderUpdateSchema
|
|
1380
|
-
});
|
|
1381
|
-
|
|
1382
|
-
z.object({
|
|
1383
|
-
id: z.uuid()
|
|
1384
|
-
});
|
|
1385
|
-
|
|
1386
|
-
z.object({
|
|
1387
|
-
page: z.number().positive(),
|
|
1388
|
-
limit: z.number().positive(),
|
|
1389
|
-
sort: z.object({
|
|
1390
|
-
column: z.string(),
|
|
1391
|
-
direction: z.enum(["asc", "desc"])
|
|
1392
|
-
}),
|
|
1393
|
-
search: z.string().optional(),
|
|
1394
|
-
ids: z.array(z.uuid()).optional()
|
|
1395
|
-
});
|
|
1396
|
-
|
|
1397
|
-
z.object({
|
|
1398
|
-
id: z.uuid()
|
|
1399
|
-
});
|
|
1400
|
-
|
|
1401
|
-
z.object({
|
|
1402
|
-
traderId: z.uuid(),
|
|
1403
|
-
clientId: z.uuid()
|
|
1404
|
-
});
|
|
1405
|
-
z.object({
|
|
1406
|
-
id: z.uuid()
|
|
1407
|
-
});
|
|
1408
|
-
|
|
1409
|
-
z.object({
|
|
1410
|
-
recipient: recipientInsertSchema,
|
|
1411
|
-
partyId: z.string().uuid()
|
|
1412
|
-
});
|
|
1413
|
-
|
|
1414
|
-
z.object({
|
|
1415
|
-
recipient: recipientUpdateSchema
|
|
1416
|
-
});
|
|
1417
|
-
|
|
1418
|
-
z.object({
|
|
1419
|
-
id: z.uuid()
|
|
1420
|
-
});
|
|
1421
|
-
|
|
1422
|
-
const ALLOWED_RECIPIENTS_FILTERS = {
|
|
1423
|
-
NAME: "filterRecipientName",
|
|
1424
|
-
BANK_CODE: "filterRecipientBankCode",
|
|
1425
|
-
CURRENCY: "filterRecipientCurrency"
|
|
1426
|
-
};
|
|
1427
|
-
z.object({
|
|
1428
|
-
page: z.number().positive(),
|
|
1429
|
-
limit: z.number().positive(),
|
|
1430
|
-
sort: z.object({
|
|
1431
|
-
column: z.string(),
|
|
1432
|
-
direction: z.enum(["asc", "desc"])
|
|
1433
|
-
}),
|
|
1434
|
-
[ALLOWED_RECIPIENTS_FILTERS.NAME]: z.union([z.string(), z.string().array()]).optional(),
|
|
1435
|
-
[ALLOWED_RECIPIENTS_FILTERS.BANK_CODE]: z.union([z.enum(BANK_CODES), z.enum(BANK_CODES).array()]).optional(),
|
|
1436
|
-
[ALLOWED_RECIPIENTS_FILTERS.CURRENCY]: z.union([z.enum(CURRENCY_CODES), z.enum(CURRENCY_CODES).array()]).optional(),
|
|
1437
|
-
search: z.string().optional()
|
|
1438
|
-
});
|
|
1439
|
-
|
|
1440
|
-
z.object({
|
|
1441
|
-
id: z.uuid()
|
|
1442
|
-
});
|
|
1443
|
-
|
|
1444
|
-
z.object({
|
|
1445
|
-
bankAccount: bankAccountInsertSchema,
|
|
1446
|
-
partyId: z.string().uuid()
|
|
1447
|
-
});
|
|
1448
|
-
|
|
1449
|
-
z.object({
|
|
1450
|
-
bankAccount: bankAccountUpsertSchema
|
|
1451
|
-
});
|
|
1452
|
-
|
|
1453
|
-
z.object({
|
|
1454
|
-
id: z.uuid()
|
|
1455
|
-
});
|
|
1456
|
-
|
|
1457
|
-
z.object({
|
|
1458
|
-
id: z.uuid()
|
|
1459
|
-
});
|
|
1460
|
-
|
|
1461
|
-
z.object({
|
|
1462
|
-
address: addressInsertSchema,
|
|
1463
|
-
partyId: z.uuid()
|
|
1464
|
-
});
|
|
1465
|
-
|
|
1466
|
-
z.object({
|
|
1467
|
-
address: addressUpdateSchema
|
|
1468
|
-
});
|
|
1469
|
-
|
|
1470
|
-
z.object({
|
|
1471
|
-
id: z.uuid()
|
|
1472
|
-
});
|
|
1473
|
-
|
|
1474
|
-
z.object({
|
|
1475
|
-
id: z.uuid()
|
|
1476
|
-
});
|
|
1477
|
-
|
|
1478
|
-
z.object({
|
|
1479
|
-
contact: contactInsertSchema,
|
|
1480
|
-
partyId: z.string().uuid()
|
|
1481
|
-
});
|
|
1482
|
-
|
|
1483
|
-
z.object({
|
|
1484
|
-
contact: contactUpdateSchema
|
|
1485
|
-
});
|
|
1486
|
-
|
|
1487
|
-
z.object({
|
|
1488
|
-
idDocument: idDocumentInsertSchema,
|
|
1489
|
-
partyId: z.string()
|
|
1490
|
-
});
|
|
1491
|
-
|
|
1492
|
-
z.object({
|
|
1493
|
-
idDocument: idDocumentUpdateSchema
|
|
1494
|
-
});
|
|
1495
|
-
|
|
1496
|
-
z.object({
|
|
1497
|
-
id: z.uuid()
|
|
1498
|
-
});
|
|
1499
|
-
|
|
1500
|
-
const ALLOWED_ID_DOCUMENTS_FILTERS$1 = {
|
|
1501
|
-
PARTY_ID: "filterIdDocumentPartyId",
|
|
1502
|
-
ISSUER: "filterIdDocumentIssuer"
|
|
1503
|
-
};
|
|
1504
|
-
z.object({
|
|
1505
|
-
pagination: z.object({
|
|
1506
|
-
page: z.number().positive(),
|
|
1507
|
-
limit: z.number().positive(),
|
|
1508
|
-
sort: z.object({
|
|
1509
|
-
column: z.string(),
|
|
1510
|
-
direction: z.enum(["asc", "desc"])
|
|
1511
|
-
}),
|
|
1512
|
-
[ALLOWED_ID_DOCUMENTS_FILTERS$1.PARTY_ID]: z.union([z.uuid(), z.uuid().array()]).optional(),
|
|
1513
|
-
[ALLOWED_ID_DOCUMENTS_FILTERS$1.ISSUER]: z.union([z.string(), z.string().array()]).optional(),
|
|
1514
|
-
search: z.string().optional()
|
|
1515
|
-
})
|
|
1516
|
-
});
|
|
1517
|
-
|
|
1518
|
-
z.object({
|
|
1519
|
-
id: z.uuid()
|
|
1520
|
-
});
|
|
1521
|
-
|
|
1522
|
-
z.object({
|
|
1523
|
-
individual: individualInsertSchema$1
|
|
1524
|
-
});
|
|
1525
|
-
|
|
1526
|
-
z.object({
|
|
1527
|
-
individual: individualInsertSchema$1
|
|
1528
|
-
});
|
|
1529
|
-
|
|
1530
|
-
z.object({
|
|
1531
|
-
id: z.uuid()
|
|
1532
|
-
});
|
|
1533
|
-
|
|
1534
|
-
z.object({
|
|
1535
|
-
id: z.uuid()
|
|
1536
|
-
});
|
|
1537
|
-
|
|
1538
|
-
z.object({
|
|
1539
|
-
id: z.uuid()
|
|
1540
|
-
});
|
|
1541
|
-
|
|
1542
|
-
z.object({
|
|
1543
|
-
id: z.uuid()
|
|
1544
|
-
});
|
|
1545
|
-
|
|
1546
|
-
z.object({
|
|
1547
|
-
id: z.uuid()
|
|
1548
|
-
});
|
|
1549
|
-
|
|
1550
|
-
z.object({
|
|
1551
|
-
id: z.uuid()
|
|
1552
|
-
});
|
|
1553
|
-
|
|
1554
|
-
z.object({
|
|
1555
|
-
id: z.uuid()
|
|
1556
|
-
});
|
|
1557
|
-
z.object({
|
|
1558
|
-
disponents: disponentsSelectSchema
|
|
1559
|
-
});
|
|
1560
|
-
|
|
1561
|
-
z.object({
|
|
1562
|
-
party: partyInsertSchema
|
|
1563
|
-
});
|
|
1564
|
-
|
|
1565
|
-
z.object({
|
|
1566
|
-
party: partyInsertSchema
|
|
1567
|
-
});
|
|
1568
|
-
|
|
1569
|
-
z.object({
|
|
1570
|
-
id: z.uuid()
|
|
1571
|
-
});
|
|
118
|
+
];
|
|
119
|
+
const SERVICE_PURPOSE_FO = [
|
|
120
|
+
"PURCHASE_OF_GOODS_AND_SERVICES",
|
|
121
|
+
"INVESTMENTS",
|
|
122
|
+
"OTHER"
|
|
123
|
+
];
|
|
124
|
+
const SERVICE_PURPOSE_COMPANY = [
|
|
125
|
+
"PAYMENTS_TO_CUSTOMERS",
|
|
126
|
+
"PAYMENTS_TO_SUPPLIERS",
|
|
127
|
+
"FOREIGN_INVESTMENTS",
|
|
128
|
+
"OTHER"
|
|
129
|
+
];
|
|
130
|
+
const SERVICE_PURPOSE$1 = [
|
|
131
|
+
...SERVICE_PURPOSE_FO,
|
|
132
|
+
...SERVICE_PURPOSE_COMPANY
|
|
133
|
+
];
|
|
134
|
+
const OPERATING_COUNTRY$1 = ["CZ", "EU", "OUTSIDE_EU"];
|
|
135
|
+
const YES_NO_UNKNOWN$1 = ["YES", "NO", "UNKNOWN"];
|
|
136
|
+
const SIGNATURE_METHOD$1 = [
|
|
137
|
+
"IN_PERSON",
|
|
138
|
+
"REMOTE",
|
|
139
|
+
"COURIER",
|
|
140
|
+
"POWER_OF_ATTORNEY"
|
|
141
|
+
];
|
|
142
|
+
const EXISTENCE_PERIOD$1 = [
|
|
143
|
+
"OVER_24_MONTHS",
|
|
144
|
+
"OVER_16_MONTHS",
|
|
145
|
+
"LESS_THAN_12_MONTHS",
|
|
146
|
+
"LESS_THAN_6_MONTHS"
|
|
147
|
+
];
|
|
148
|
+
const REPUTATION$1 = [
|
|
149
|
+
"NO_NEGATIVE_RECORDS",
|
|
150
|
+
"BUSINESS_INCREASES_RISK",
|
|
151
|
+
"NEGATIVE_RECORDS",
|
|
152
|
+
"SANCTIONS_LIST_HIT"
|
|
153
|
+
];
|
|
154
|
+
const RISK_BUSINESS_AREA$1 = [
|
|
155
|
+
"PAWN_SHOPS",
|
|
156
|
+
"USED_CAR_DEALERS",
|
|
157
|
+
"CASINOS",
|
|
158
|
+
"REAL_ESTATE_AGENCIES",
|
|
159
|
+
"PRECIOUS_METALS_AND_GEMS",
|
|
160
|
+
"WEAPONS_AND_AMMUNITION",
|
|
161
|
+
"NON_BANK_CREDIT_INSTITUTIONS",
|
|
162
|
+
"CURRENCY_EXCHANGE",
|
|
163
|
+
"VIRTUAL_ASSET_SERVICES"
|
|
164
|
+
];
|
|
1572
165
|
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
166
|
+
const ADDRESS_TYPE = [
|
|
167
|
+
"PERMANENT_ADDRESS",
|
|
168
|
+
"REGISTERED_OFFICE",
|
|
169
|
+
"CONTACT_ADDRESS"
|
|
170
|
+
];
|
|
171
|
+
const ID_DOC_TYPE = ["PASSPORT", "ID", "DRIVING_LICENSE"];
|
|
172
|
+
const ID_DOC_STATUS = [
|
|
173
|
+
"ACTIVE",
|
|
174
|
+
"EXPIRED",
|
|
175
|
+
"EXPIRE_SOON",
|
|
176
|
+
"REVOKED"
|
|
177
|
+
];
|
|
178
|
+
const CUSTOMER_STATUS = ["NEW", "ACTIVE", "CLOSED", "BLOCKED"];
|
|
179
|
+
const PARTY_TYPE = [
|
|
180
|
+
"INDIVIDUAL",
|
|
181
|
+
"SELF_EMPLOYED",
|
|
182
|
+
"ORGANIZATION"
|
|
183
|
+
];
|
|
184
|
+
const AML_SCORE_TYPE = [
|
|
185
|
+
"LOW",
|
|
186
|
+
"MEDIUM",
|
|
187
|
+
"HIGH",
|
|
188
|
+
"UNACCEPTABLE",
|
|
189
|
+
"UNVERIFIED",
|
|
190
|
+
"UNCLASSIFIED"
|
|
191
|
+
];
|
|
192
|
+
const GENDER = ["M", "F", "OTHER"];
|
|
193
|
+
const KYC_STATUS = [
|
|
194
|
+
"NOT_APPROVED",
|
|
195
|
+
"VERIFIED",
|
|
196
|
+
"UNVERIFIED",
|
|
197
|
+
"REJECTED"
|
|
198
|
+
];
|
|
199
|
+
const TXS_CLIENT_TYPE = ["CLIENT", "PROVIDER"];
|
|
200
|
+
const TRADING_SIDE = ["SELL", "BUY", "BOTH"];
|
|
201
|
+
const EST_TXS_VOLUME_MONTH = ["UP_TO_1M", "1M_TO_5M", "OVER_5M"];
|
|
202
|
+
const EST_TXS_VOLUME_YEAR = [
|
|
203
|
+
"LESS_THAN_12M",
|
|
204
|
+
"12M_TO_50M",
|
|
205
|
+
"OVER_50M"
|
|
206
|
+
];
|
|
207
|
+
const TARGET_COUNTRY = ["CZ", "EU", "OUTSIDE_EU"];
|
|
208
|
+
const TAX_DOMICILE = ["CZ", "EU", "US", "OTHER"];
|
|
209
|
+
const MONTHLY_INCOME_RANGE = [
|
|
210
|
+
"UP_TO_40K",
|
|
211
|
+
"40K_TO_80K",
|
|
212
|
+
"OVER_80K"
|
|
213
|
+
];
|
|
214
|
+
const COMPANY_TURNOVER_RANGE = [
|
|
215
|
+
"LESS_THAN_50M",
|
|
216
|
+
"50M_TO_100M",
|
|
217
|
+
"OVER_100M"
|
|
218
|
+
];
|
|
219
|
+
const YEARLY_INCOME = [
|
|
220
|
+
...MONTHLY_INCOME_RANGE,
|
|
221
|
+
...COMPANY_TURNOVER_RANGE
|
|
222
|
+
];
|
|
223
|
+
const INCOME_SOURCE = [
|
|
224
|
+
"EMPLOYMENT",
|
|
225
|
+
"PENSION",
|
|
226
|
+
"SAVINGS",
|
|
227
|
+
"INHERITANCE",
|
|
228
|
+
"INVESTMENTS",
|
|
229
|
+
"HOUSE_SALE",
|
|
230
|
+
"CAR_SALE",
|
|
231
|
+
"AUCTION_SALE",
|
|
232
|
+
"OTHER"
|
|
233
|
+
];
|
|
234
|
+
const FINANCIAL_FUNDS_SOURCE = [
|
|
235
|
+
"BUSINESS_REVENUE",
|
|
236
|
+
"INVESTMENTS",
|
|
237
|
+
"LOAN",
|
|
238
|
+
"OTHER"
|
|
239
|
+
];
|
|
240
|
+
const SERVICE_PURPOSE = [
|
|
241
|
+
"PURCHASE_OF_GOODS_AND_SERVICES",
|
|
242
|
+
"INVESTMENTS",
|
|
243
|
+
"OTHER",
|
|
244
|
+
"PAYMENTS_TO_CUSTOMERS",
|
|
245
|
+
"PAYMENTS_TO_SUPPLIERS",
|
|
246
|
+
"FOREIGN_INVESTMENTS"
|
|
247
|
+
];
|
|
248
|
+
const OPERATING_COUNTRY = ["CZ", "EU", "OUTSIDE_EU"];
|
|
249
|
+
const YES_NO_UNKNOWN = ["YES", "NO", "UNKNOWN"];
|
|
250
|
+
const PERSON_ROLE = [
|
|
251
|
+
"PERMANENT_RESIDENT",
|
|
252
|
+
"STATUTORY_BODY",
|
|
253
|
+
"BENEFICIAL_OWNER"
|
|
254
|
+
];
|
|
255
|
+
const SIGNATURE_METHOD = [
|
|
256
|
+
"IN_PERSON",
|
|
257
|
+
"REMOTE",
|
|
258
|
+
"COURIER",
|
|
259
|
+
"POWER_OF_ATTORNEY"
|
|
260
|
+
];
|
|
261
|
+
const EXISTENCE_PERIOD = [
|
|
262
|
+
"OVER_24_MONTHS",
|
|
263
|
+
"OVER_16_MONTHS",
|
|
264
|
+
"LESS_THAN_12_MONTHS",
|
|
265
|
+
"LESS_THAN_6_MONTHS"
|
|
266
|
+
];
|
|
267
|
+
const REPUTATION = [
|
|
268
|
+
"NO_NEGATIVE_RECORDS",
|
|
269
|
+
"BUSINESS_INCREASES_RISK",
|
|
270
|
+
"NEGATIVE_RECORDS",
|
|
271
|
+
"SANCTIONS_LIST_HIT"
|
|
272
|
+
];
|
|
273
|
+
const COURT = [
|
|
274
|
+
"MUNICIPAL_COURT_PRAGUE",
|
|
275
|
+
"REGIONAL_COURT_PRAGUE",
|
|
276
|
+
"REGIONAL_COURT_CESKE_BUDEJOVICE",
|
|
277
|
+
"REGIONAL_COURT_PLZEN",
|
|
278
|
+
"REGIONAL_COURT_USTI_NAD_LABEM",
|
|
279
|
+
"REGIONAL_COURT_HRADEC_KRALOVE",
|
|
280
|
+
"REGIONAL_COURT_BRNO",
|
|
281
|
+
"REGIONAL_COURT_OSTRAVA"
|
|
282
|
+
];
|
|
283
|
+
const RISK_BUSINESS_AREA = [
|
|
284
|
+
"PAWN_SHOPS",
|
|
285
|
+
"USED_CAR_DEALERS",
|
|
286
|
+
"CASINOS",
|
|
287
|
+
"REAL_ESTATE_AGENCIES",
|
|
288
|
+
"PRECIOUS_METALS_AND_GEMS",
|
|
289
|
+
"WEAPONS_AND_AMMUNITION",
|
|
290
|
+
"NON_BANK_CREDIT_INSTITUTIONS",
|
|
291
|
+
"CURRENCY_EXCHANGE",
|
|
292
|
+
"VIRTUAL_ASSET_SERVICES"
|
|
293
|
+
];
|
|
1576
294
|
|
|
1577
295
|
z.object({
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
});
|
|
1584
|
-
|
|
1585
|
-
const routeError = z$1.object({
|
|
1586
|
-
message: z$1.string(),
|
|
1587
|
-
data: z$1.null(),
|
|
1588
|
-
errorDetail: z$1.object({
|
|
1589
|
-
message: z$1.string(),
|
|
1590
|
-
code: z$1.number()
|
|
296
|
+
message: z.string(),
|
|
297
|
+
data: z.null(),
|
|
298
|
+
errorDetail: z.object({
|
|
299
|
+
message: z.string(),
|
|
300
|
+
code: z.number()
|
|
1591
301
|
}).optional(),
|
|
1592
|
-
error: z
|
|
302
|
+
error: z.boolean()
|
|
1593
303
|
});
|
|
1594
304
|
const errorResponse = (entityName, action = "creation") => ({
|
|
1595
305
|
404: {
|
|
1596
306
|
content: {
|
|
1597
307
|
"application/json": {
|
|
1598
|
-
schema: z
|
|
1599
|
-
message: z
|
|
1600
|
-
stackTrace: z
|
|
308
|
+
schema: z.object({
|
|
309
|
+
message: z.string(),
|
|
310
|
+
stackTrace: z.string().optional()
|
|
1601
311
|
})
|
|
1602
312
|
}
|
|
1603
313
|
},
|
|
@@ -1606,9 +316,9 @@ const errorResponse = (entityName, action = "creation") => ({
|
|
|
1606
316
|
500: {
|
|
1607
317
|
content: {
|
|
1608
318
|
"application/json": {
|
|
1609
|
-
schema: z
|
|
1610
|
-
message: z
|
|
1611
|
-
stackTrace: z
|
|
319
|
+
schema: z.object({
|
|
320
|
+
message: z.string(),
|
|
321
|
+
stackTrace: z.string().optional()
|
|
1612
322
|
})
|
|
1613
323
|
}
|
|
1614
324
|
},
|
|
@@ -1616,265 +326,265 @@ const errorResponse = (entityName, action = "creation") => ({
|
|
|
1616
326
|
}
|
|
1617
327
|
});
|
|
1618
328
|
|
|
1619
|
-
const partySchema$1 = z
|
|
1620
|
-
partyType: z
|
|
1621
|
-
language: z
|
|
1622
|
-
id: z
|
|
1623
|
-
internalId: z
|
|
1624
|
-
note: z
|
|
1625
|
-
countryCode: z
|
|
1626
|
-
});
|
|
1627
|
-
const idDocumentInputSchema$1 = z
|
|
1628
|
-
idDocType: z
|
|
1629
|
-
idDocNumber: z
|
|
1630
|
-
issueDate: z
|
|
1631
|
-
expirationDate: z
|
|
1632
|
-
issuer: z
|
|
1633
|
-
frontImageUri: z
|
|
1634
|
-
backImageUri: z
|
|
1635
|
-
});
|
|
1636
|
-
const individualInsertSchema = z
|
|
1637
|
-
internalId: z
|
|
1638
|
-
name: z
|
|
1639
|
-
surname: z
|
|
1640
|
-
email: z
|
|
1641
|
-
phone: z
|
|
1642
|
-
birthDate: z
|
|
1643
|
-
birthPlace: z
|
|
1644
|
-
countryOfBirth: z
|
|
1645
|
-
personalId: z
|
|
1646
|
-
gender: z
|
|
1647
|
-
citizenship: z
|
|
1648
|
-
citizenshipOther: z
|
|
1649
|
-
employer: z
|
|
1650
|
-
employerCountry: z
|
|
1651
|
-
registeredNumber: z
|
|
1652
|
-
isPep: z
|
|
1653
|
-
titleBefore: z
|
|
1654
|
-
titleAfter: z
|
|
1655
|
-
birthSurname: z
|
|
1656
|
-
vocativeTitle: z
|
|
1657
|
-
deathDate: z
|
|
1658
|
-
deathNotification: z
|
|
1659
|
-
pin: z
|
|
1660
|
-
stayAbroad: z
|
|
1661
|
-
stayAbroadCountries: z
|
|
1662
|
-
identityDocuments: z
|
|
1663
|
-
});
|
|
1664
|
-
const createOrganizationInputSchema = z
|
|
1665
|
-
internalId: z
|
|
1666
|
-
businessName: z
|
|
1667
|
-
email: z
|
|
1668
|
-
phone: z
|
|
1669
|
-
registeredNumber: z
|
|
1670
|
-
registeredIn: z
|
|
1671
|
-
operatesIn: z
|
|
1672
|
-
presentIn: z
|
|
1673
|
-
monthlyVolumeIn: z
|
|
1674
|
-
monthlyVolumeOut: z
|
|
1675
|
-
ownedBy: z
|
|
1676
|
-
companyObjects: z
|
|
1677
|
-
annualTurnover: z
|
|
1678
|
-
numberOfEmployees: z
|
|
1679
|
-
prosecuted: z
|
|
1680
|
-
location: z
|
|
1681
|
-
fileNumber: z
|
|
1682
|
-
websiteUrl: z
|
|
1683
|
-
vatPayer: z
|
|
1684
|
-
companyObjectsDescription: z
|
|
1685
|
-
turnover3years: z
|
|
1686
|
-
operationCountries: z
|
|
1687
|
-
riskyBusinessType: z
|
|
1688
|
-
vatId: z
|
|
1689
|
-
court: z
|
|
1690
|
-
registerUri: z
|
|
1691
|
-
});
|
|
1692
|
-
const updateBankAccountSchema = z
|
|
329
|
+
const partySchema$1 = z.object({
|
|
330
|
+
partyType: z.enum(PARTY_TYPE),
|
|
331
|
+
language: z.enum(LANGUAGE_CODES),
|
|
332
|
+
id: z.uuid(),
|
|
333
|
+
internalId: z.string().optional(),
|
|
334
|
+
note: z.string().optional(),
|
|
335
|
+
countryCode: z.enum(COUNTRY_CODES_2).optional()
|
|
336
|
+
});
|
|
337
|
+
const idDocumentInputSchema$1 = z.object({
|
|
338
|
+
idDocType: z.enum(ID_DOC_TYPE),
|
|
339
|
+
idDocNumber: z.string(),
|
|
340
|
+
issueDate: z.coerce.date().optional(),
|
|
341
|
+
expirationDate: z.coerce.date().optional(),
|
|
342
|
+
issuer: z.string().optional(),
|
|
343
|
+
frontImageUri: z.string().optional(),
|
|
344
|
+
backImageUri: z.string().optional()
|
|
345
|
+
});
|
|
346
|
+
const individualInsertSchema = z.object({
|
|
347
|
+
internalId: z.string().optional(),
|
|
348
|
+
name: z.string().min(1, "Jm\xE9no je povinn\xE9"),
|
|
349
|
+
surname: z.string().min(1, "P\u0159\xEDjmen\xED je povinn\xE9"),
|
|
350
|
+
email: z.email("E-mail je povinn\xFD"),
|
|
351
|
+
phone: z.string().optional(),
|
|
352
|
+
birthDate: z.string().min(1, "Datum narozen\xED je povinn\xE9"),
|
|
353
|
+
birthPlace: z.string().optional(),
|
|
354
|
+
countryOfBirth: z.enum(COUNTRY_CODES_2).optional(),
|
|
355
|
+
personalId: z.string().min(1, "\u010C\xEDslo identifika\u010Dn\xEDho dokumentu je povinn\xE9"),
|
|
356
|
+
gender: z.enum(GENDER, "Pohlav\xED je povinn\xE9"),
|
|
357
|
+
citizenship: z.enum(COUNTRY_CODES_2, "St\xE1t je povinn\xFD"),
|
|
358
|
+
citizenshipOther: z.enum(COUNTRY_CODES_2).optional(),
|
|
359
|
+
employer: z.string().optional(),
|
|
360
|
+
employerCountry: z.enum(COUNTRY_CODES_2).optional(),
|
|
361
|
+
registeredNumber: z.string().optional(),
|
|
362
|
+
isPep: z.boolean({ error: "Politicky exponovan\xE1 osoba je povinn\xE1" }),
|
|
363
|
+
titleBefore: z.string().optional(),
|
|
364
|
+
titleAfter: z.string().optional(),
|
|
365
|
+
birthSurname: z.string().optional(),
|
|
366
|
+
vocativeTitle: z.string().optional(),
|
|
367
|
+
deathDate: z.coerce.date().optional(),
|
|
368
|
+
deathNotification: z.coerce.date().optional(),
|
|
369
|
+
pin: z.string().optional(),
|
|
370
|
+
stayAbroad: z.boolean().optional(),
|
|
371
|
+
stayAbroadCountries: z.enum(COUNTRY_CODES_2).optional(),
|
|
372
|
+
identityDocuments: z.array(idDocumentInputSchema$1).optional()
|
|
373
|
+
});
|
|
374
|
+
const createOrganizationInputSchema = z.object({
|
|
375
|
+
internalId: z.string().optional(),
|
|
376
|
+
businessName: z.string(),
|
|
377
|
+
email: z.string().optional(),
|
|
378
|
+
phone: z.string().optional(),
|
|
379
|
+
registeredNumber: z.string(),
|
|
380
|
+
registeredIn: z.enum(COUNTRY_CODES_2),
|
|
381
|
+
operatesIn: z.enum(COUNTRY_CODES_2),
|
|
382
|
+
presentIn: z.enum(COUNTRY_CODES_2),
|
|
383
|
+
monthlyVolumeIn: z.number(),
|
|
384
|
+
monthlyVolumeOut: z.number(),
|
|
385
|
+
ownedBy: z.string(),
|
|
386
|
+
companyObjects: z.array(z.enum(CZ_NACE_CODES)).min(1),
|
|
387
|
+
annualTurnover: z.number(),
|
|
388
|
+
numberOfEmployees: z.number(),
|
|
389
|
+
prosecuted: z.string().optional(),
|
|
390
|
+
location: z.string().optional(),
|
|
391
|
+
fileNumber: z.string().optional(),
|
|
392
|
+
websiteUrl: z.string().optional(),
|
|
393
|
+
vatPayer: z.boolean(),
|
|
394
|
+
companyObjectsDescription: z.string(),
|
|
395
|
+
turnover3years: z.number(),
|
|
396
|
+
operationCountries: z.string(),
|
|
397
|
+
riskyBusinessType: z.string().optional(),
|
|
398
|
+
vatId: z.string().optional(),
|
|
399
|
+
court: z.enum(COURT).optional(),
|
|
400
|
+
registerUri: z.string().optional()
|
|
401
|
+
});
|
|
402
|
+
const updateBankAccountSchema = z.object({
|
|
1693
403
|
...bankAccountMetadataSchema.shape,
|
|
1694
|
-
bankCode: z
|
|
1695
|
-
iban: z
|
|
1696
|
-
swiftBic: z
|
|
1697
|
-
partyId: z
|
|
1698
|
-
internalId: z
|
|
1699
|
-
holderName: z
|
|
1700
|
-
number: z
|
|
1701
|
-
currency: z
|
|
404
|
+
bankCode: z.enum(BANK_CODES, "K\xF3d banky je povinn\xFD").optional(),
|
|
405
|
+
iban: z.string().min(1, "IBAN je povinn\xFD").regex(/^[A-Z]{2}[0-9]{2}[A-Z0-9]{11,30}$/, "Neplatn\xFD form\xE1t IBAN").optional(),
|
|
406
|
+
swiftBic: z.string().min(1, "BIC/SWIFT je povinn\xFD").regex(/^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$/, "Neplatn\xFD form\xE1t BIC/SWIFT").optional(),
|
|
407
|
+
partyId: z.uuid(),
|
|
408
|
+
internalId: z.string().optional(),
|
|
409
|
+
holderName: z.string(),
|
|
410
|
+
number: z.string().min(1, "\u010C\xEDslo \xFA\u010Dtu je povinn\xE9").optional(),
|
|
411
|
+
currency: z.enum(CURRENCY_CODES, "M\u011Bna je povinn\xE1"),
|
|
1702
412
|
countryCode: bankAccountMetadataSchema.shape.countryCode.nonoptional(),
|
|
1703
413
|
id: bankAccountMetadataSchema.shape.id.nonoptional(),
|
|
1704
|
-
statementUri: z
|
|
414
|
+
statementUri: z.string().optional()
|
|
1705
415
|
});
|
|
1706
416
|
const bankAccountInputSchema = updateBankAccountSchema.required({
|
|
1707
417
|
holderName: true,
|
|
1708
418
|
currency: true,
|
|
1709
419
|
countryCode: true
|
|
1710
420
|
}).omit({ id: true, partyId: true });
|
|
1711
|
-
const disponentSchema = z
|
|
1712
|
-
z
|
|
1713
|
-
partyType: z
|
|
421
|
+
const disponentSchema = z.discriminatedUnion("partyType", [
|
|
422
|
+
z.object({
|
|
423
|
+
partyType: z.literal("INDIVIDUAL"),
|
|
1714
424
|
data: individualInsertSchema
|
|
1715
425
|
}),
|
|
1716
|
-
z
|
|
1717
|
-
partyType: z
|
|
426
|
+
z.object({
|
|
427
|
+
partyType: z.literal("ORGANIZATION"),
|
|
1718
428
|
data: createOrganizationInputSchema
|
|
1719
429
|
})
|
|
1720
430
|
]);
|
|
1721
431
|
const zipCodeRegex = /^\d{3}\s?\d{2}$/;
|
|
1722
|
-
const createAddressInputSchema = z
|
|
1723
|
-
addressType: z
|
|
1724
|
-
internalId: z
|
|
1725
|
-
street: z
|
|
1726
|
-
orientationNumber: z
|
|
1727
|
-
descriptiveNumber: z
|
|
1728
|
-
municipality: z
|
|
1729
|
-
municipalityPart: z
|
|
1730
|
-
zipCode: z
|
|
1731
|
-
district: z
|
|
1732
|
-
region: z
|
|
1733
|
-
countryCode: z
|
|
1734
|
-
ruianCode: z
|
|
1735
|
-
});
|
|
1736
|
-
const businessPartnerInputSchema$1 = z
|
|
1737
|
-
name: z
|
|
1738
|
-
country: z
|
|
1739
|
-
cooperationReason: z
|
|
1740
|
-
});
|
|
1741
|
-
const foSourceOfWealthInputSchema$1 = z
|
|
1742
|
-
incomeSources: z
|
|
1743
|
-
incomeSourceOther: z
|
|
1744
|
-
monthlyIncome: z
|
|
1745
|
-
employer: z
|
|
1746
|
-
employerCountry: z
|
|
1747
|
-
});
|
|
1748
|
-
const businessSourceOfWealthInputSchema$1 = z
|
|
1749
|
-
financialFundsSources: z
|
|
1750
|
-
financialFundsSourceOther: z
|
|
1751
|
-
mainBusinessSubjects: z
|
|
1752
|
-
companyTurnover: z
|
|
432
|
+
const createAddressInputSchema = z.object({
|
|
433
|
+
addressType: z.enum(ADDRESS_TYPE),
|
|
434
|
+
internalId: z.string().optional(),
|
|
435
|
+
street: z.string().min(1, "Adresa je povinn\xE1"),
|
|
436
|
+
orientationNumber: z.string().max(20, "\u010C\xEDslo orienta\u010Dn\xED je mimo povolen\xFD rozsah").optional(),
|
|
437
|
+
descriptiveNumber: z.string().max(20, "\u010C\xEDslo popisn\xE9 je mimo povolen\xFD rozsah").optional(),
|
|
438
|
+
municipality: z.string().min(1, "M\u011Bsto je povinn\xE9").max(255),
|
|
439
|
+
municipalityPart: z.string().optional(),
|
|
440
|
+
zipCode: z.string().min(1, "PS\u010C je povinn\xE9").max(20).regex(zipCodeRegex, "PS\u010C je v nespr\xE1vn\xE9m form\xE1tu"),
|
|
441
|
+
district: z.string().max(255),
|
|
442
|
+
region: z.string().max(255),
|
|
443
|
+
countryCode: z.enum(COUNTRY_CODES_2, "St\xE1t je povinn\xFD"),
|
|
444
|
+
ruianCode: z.string().optional()
|
|
445
|
+
});
|
|
446
|
+
const businessPartnerInputSchema$1 = z.object({
|
|
447
|
+
name: z.string().min(1, "N\xE1zev partnera je povinn\xFD"),
|
|
448
|
+
country: z.enum(COUNTRY_CODES_2, "St\xE1t partnera je povinn\xFD"),
|
|
449
|
+
cooperationReason: z.string().nullable()
|
|
450
|
+
});
|
|
451
|
+
const foSourceOfWealthInputSchema$1 = z.object({
|
|
452
|
+
incomeSources: z.array(z.enum(INCOME_SOURCE)).min(1, "Hlavn\xED zdroj p\u0159\xEDjm\u016F je povinn\xFD"),
|
|
453
|
+
incomeSourceOther: z.string().nullable(),
|
|
454
|
+
monthlyIncome: z.enum(MONTHLY_INCOME_RANGE, "M\u011Bs\xED\u010Dn\xED p\u0159\xEDjem je povinn\xFD"),
|
|
455
|
+
employer: z.string().min(1, "N\xE1zev zam\u011Bstnavatele je povinn\xFD").nullable(),
|
|
456
|
+
employerCountry: z.enum(COUNTRY_CODES_2, "St\xE1t zam\u011Bstnavatele je povinn\xFD").nullable()
|
|
457
|
+
});
|
|
458
|
+
const businessSourceOfWealthInputSchema$1 = z.object({
|
|
459
|
+
financialFundsSources: z.array(z.enum(FINANCIAL_FUNDS_SOURCE)).min(1, "Zdroj finan\u010Dn\xEDch prost\u0159edk\u016F je povinn\xFD"),
|
|
460
|
+
financialFundsSourceOther: z.string().nullable(),
|
|
461
|
+
mainBusinessSubjects: z.array(z.enum(CZ_TRADE_LICENSE_CODES)).min(1, "Hlavn\xED p\u0159edm\u011Bt podnik\xE1n\xED je povinn\xFD"),
|
|
462
|
+
companyTurnover: z.enum(
|
|
1753
463
|
COMPANY_TURNOVER_RANGE,
|
|
1754
464
|
"Obrat za posledn\xED 3 roky je povinn\xFD"
|
|
1755
465
|
),
|
|
1756
|
-
operatingCountries: z
|
|
1757
|
-
operatingCountriesOther: z
|
|
1758
|
-
businessPartners: z
|
|
1759
|
-
businessActivitiesNote: z
|
|
1760
|
-
});
|
|
1761
|
-
const createAmlInputSchema = z
|
|
1762
|
-
internalId: z
|
|
1763
|
-
sourceOfWealth: z
|
|
466
|
+
operatingCountries: z.array(z.enum(OPERATING_COUNTRY)).min(1, "Zem\u011B p\u016Fsoben\xED je povinn\xE1"),
|
|
467
|
+
operatingCountriesOther: z.array(z.enum(COUNTRY_CODES_2)).nullable(),
|
|
468
|
+
businessPartners: z.array(businessPartnerInputSchema$1).min(1, "Alespo\u0148 jeden partner je povinn\xFD").nullable(),
|
|
469
|
+
businessActivitiesNote: z.string().min(1, "Detailn\xED popis v\u0161ech podnikatelsk\xFDch \u010Dinnost\xED je povinn\xFD").nullable()
|
|
470
|
+
});
|
|
471
|
+
const createAmlInputSchema = z.object({
|
|
472
|
+
internalId: z.string().optional(),
|
|
473
|
+
sourceOfWealth: z.union([
|
|
1764
474
|
foSourceOfWealthInputSchema$1,
|
|
1765
475
|
businessSourceOfWealthInputSchema$1
|
|
1766
476
|
]),
|
|
1767
|
-
yearlyIncome: z
|
|
1768
|
-
sourceOfIncome: z
|
|
1769
|
-
incomeSourceOther: z
|
|
1770
|
-
servicePurposes: z
|
|
1771
|
-
servicePurposesOther: z
|
|
1772
|
-
taxDomicile: z
|
|
1773
|
-
taxDomicileCountry: z
|
|
1774
|
-
transactionType: z
|
|
1775
|
-
transactionTypeExpiry: z
|
|
1776
|
-
isDistraint: z
|
|
1777
|
-
estTxsVolumeMonth: z
|
|
477
|
+
yearlyIncome: z.enum(YEARLY_INCOME),
|
|
478
|
+
sourceOfIncome: z.array(z.enum(INCOME_SOURCE)).min(1, "Zdroj p\u0159\xEDjm\u016F je povinn\xFD"),
|
|
479
|
+
incomeSourceOther: z.string().optional(),
|
|
480
|
+
servicePurposes: z.array(z.enum(SERVICE_PURPOSE)).min(1, "\xDA\u010Del vyu\u017E\xEDv\xE1n\xED na\u0161ich slu\u017Eeb je povinn\xFD").optional(),
|
|
481
|
+
servicePurposesOther: z.string().optional(),
|
|
482
|
+
taxDomicile: z.enum(TAX_DOMICILE, { message: "Da\u0148ov\xE1 rezidence je povinn\xE1" }).optional(),
|
|
483
|
+
taxDomicileCountry: z.enum(COUNTRY_CODES_2).optional(),
|
|
484
|
+
transactionType: z.string().optional(),
|
|
485
|
+
transactionTypeExpiry: z.coerce.date().optional(),
|
|
486
|
+
isDistraint: z.boolean().default(false),
|
|
487
|
+
estTxsVolumeMonth: z.enum(
|
|
1778
488
|
EST_TXS_VOLUME_MONTH,
|
|
1779
489
|
"Odhadovan\xFD m\u011Bs\xED\u010Dn\xED objem transakc\xED je povinn\xFD"
|
|
1780
490
|
),
|
|
1781
|
-
estTxsVolumeYear: z
|
|
491
|
+
estTxsVolumeYear: z.enum(
|
|
1782
492
|
EST_TXS_VOLUME_YEAR,
|
|
1783
493
|
"Odhadovan\xFD ro\u010Dn\xED objem transakc\xED je povinn\xFD"
|
|
1784
494
|
),
|
|
1785
|
-
estTxsCountMonth: z
|
|
1786
|
-
tradingCountries: z
|
|
1787
|
-
tradingCountriesOther: z
|
|
1788
|
-
tradingSide: z
|
|
1789
|
-
acceptedAMLTermsAndConditions: z
|
|
495
|
+
estTxsCountMonth: z.number().int().optional(),
|
|
496
|
+
tradingCountries: z.array(z.enum(TARGET_COUNTRY)).min(1, "Vyberte alespo\u0148 jednu c\xEDlovou zemi"),
|
|
497
|
+
tradingCountriesOther: z.array(z.enum(COUNTRY_CODES_2)).optional(),
|
|
498
|
+
tradingSide: z.enum(TRADING_SIDE, "Strana obchodov\xE1n\xED je povinn\xE1"),
|
|
499
|
+
acceptedAMLTermsAndConditions: z.boolean().refine((v) => v === true, {
|
|
1790
500
|
message: "Mus\xEDte potvrdit souhlas s prohl\xE1\u0161en\xEDm",
|
|
1791
501
|
path: ["acceptedAMLTermsAndConditions"]
|
|
1792
502
|
}),
|
|
1793
|
-
signatureMethod: z
|
|
1794
|
-
existencePeriod: z
|
|
1795
|
-
reputation: z
|
|
1796
|
-
riskBusinessAreas: z
|
|
1797
|
-
riskLevel: z
|
|
1798
|
-
kycStatus: z
|
|
1799
|
-
residencyAnswers: z
|
|
1800
|
-
z
|
|
1801
|
-
personName: z
|
|
1802
|
-
personRole: z
|
|
1803
|
-
answer: z
|
|
1804
|
-
country: z
|
|
503
|
+
signatureMethod: z.enum(SIGNATURE_METHOD, "Zp\u016Fsob nav\xE1z\xE1n\xED vztahu je povinn\xFD").optional(),
|
|
504
|
+
existencePeriod: z.enum(EXISTENCE_PERIOD, "Historie klienta je povinn\xE1").optional(),
|
|
505
|
+
reputation: z.enum(REPUTATION).optional(),
|
|
506
|
+
riskBusinessAreas: z.array(z.enum(RISK_BUSINESS_AREA)).optional(),
|
|
507
|
+
riskLevel: z.enum(AML_SCORE_TYPE, "Rizikovost je povinn\xE1").optional(),
|
|
508
|
+
kycStatus: z.enum(KYC_STATUS, "Stav kyc je povinn\xFD").optional(),
|
|
509
|
+
residencyAnswers: z.array(
|
|
510
|
+
z.object({
|
|
511
|
+
personName: z.string(),
|
|
512
|
+
personRole: z.enum(PERSON_ROLE),
|
|
513
|
+
answer: z.enum(YES_NO_UNKNOWN),
|
|
514
|
+
country: z.enum(COUNTRY_CODES_2).nullable()
|
|
1805
515
|
})
|
|
1806
|
-
).optional()
|
|
1807
|
-
});
|
|
1808
|
-
const productsInputSchema$1 = z
|
|
1809
|
-
txs: z
|
|
1810
|
-
fee: z
|
|
1811
|
-
margin: z
|
|
1812
|
-
reportingEmail: z
|
|
1813
|
-
clientType: z
|
|
516
|
+
).optional()
|
|
517
|
+
});
|
|
518
|
+
const productsInputSchema$1 = z.object({
|
|
519
|
+
txs: z.object({
|
|
520
|
+
fee: z.number(),
|
|
521
|
+
margin: z.number(),
|
|
522
|
+
reportingEmail: z.string().optional(),
|
|
523
|
+
clientType: z.enum(TXS_CLIENT_TYPE).optional()
|
|
1814
524
|
}).optional(),
|
|
1815
|
-
cbs: z
|
|
1816
|
-
});
|
|
1817
|
-
const ownerInputSchema = z
|
|
1818
|
-
titleBefore: z
|
|
1819
|
-
name: z
|
|
1820
|
-
surname: z
|
|
1821
|
-
titleAfter: z
|
|
1822
|
-
email: z
|
|
1823
|
-
birthDate: z
|
|
1824
|
-
birthPlace: z
|
|
1825
|
-
personalId: z
|
|
1826
|
-
gender: z
|
|
1827
|
-
citizenship: z
|
|
1828
|
-
isPep: z
|
|
525
|
+
cbs: z.object({}).optional()
|
|
526
|
+
});
|
|
527
|
+
const ownerInputSchema = z.object({
|
|
528
|
+
titleBefore: z.string().optional(),
|
|
529
|
+
name: z.string().min(1, "Jm\xE9no je povinn\xE9"),
|
|
530
|
+
surname: z.string().min(1, "P\u0159\xEDjmen\xED je povinn\xE9"),
|
|
531
|
+
titleAfter: z.string().optional(),
|
|
532
|
+
email: z.email("E-mail je povinn\xFD"),
|
|
533
|
+
birthDate: z.string().min(1, "Datum narozen\xED je povinn\xE9"),
|
|
534
|
+
birthPlace: z.string().optional(),
|
|
535
|
+
personalId: z.string().min(1, "Rodn\xE9 \u010D\xEDslo je povinn\xE9"),
|
|
536
|
+
gender: z.enum(GENDER, "Pohlav\xED je povinn\xE9"),
|
|
537
|
+
citizenship: z.enum(COUNTRY_CODES_2, "St\xE1tn\xED p\u0159\xEDslu\u0161nost je povinn\xE1"),
|
|
538
|
+
isPep: z.boolean({ error: "Politicky exponovan\xE1 osoba je povinn\xE1" }),
|
|
1829
539
|
address: createAddressInputSchema,
|
|
1830
|
-
sharePercentage: z
|
|
1831
|
-
shareEstablishedAt: z
|
|
1832
|
-
});
|
|
1833
|
-
const legalRepresentativeInputSchema = z
|
|
1834
|
-
titleBefore: z
|
|
1835
|
-
name: z
|
|
1836
|
-
surname: z
|
|
1837
|
-
titleAfter: z
|
|
1838
|
-
email: z
|
|
1839
|
-
birthDate: z
|
|
1840
|
-
birthPlace: z
|
|
1841
|
-
personalId: z
|
|
1842
|
-
gender: z
|
|
1843
|
-
citizenship: z
|
|
1844
|
-
isPep: z
|
|
1845
|
-
phone: z
|
|
1846
|
-
pin: z
|
|
1847
|
-
identityDocuments: z
|
|
540
|
+
sharePercentage: z.number({ error: "Pod\xEDl na spole\u010Dnosti je povinn\xFD" }).min(1, "Pod\xEDl na spole\u010Dnosti je povinn\xFD").max(100),
|
|
541
|
+
shareEstablishedAt: z.string().min(1, "Datum vzniku pod\xEDlu je povinn\xFD")
|
|
542
|
+
});
|
|
543
|
+
const legalRepresentativeInputSchema = z.object({
|
|
544
|
+
titleBefore: z.string().optional(),
|
|
545
|
+
name: z.string().min(1, "Jm\xE9no je povinn\xE9"),
|
|
546
|
+
surname: z.string().min(1, "P\u0159\xEDjmen\xED je povinn\xE9"),
|
|
547
|
+
titleAfter: z.string().optional(),
|
|
548
|
+
email: z.email("E-mail je povinn\xFD"),
|
|
549
|
+
birthDate: z.string().min(1, "Datum narozen\xED je povinn\xE9"),
|
|
550
|
+
birthPlace: z.string().optional(),
|
|
551
|
+
personalId: z.string().min(1, "Rodn\xE9 \u010D\xEDslo je povinn\xE9"),
|
|
552
|
+
gender: z.enum(GENDER, "Pohlav\xED je povinn\xE9"),
|
|
553
|
+
citizenship: z.enum(COUNTRY_CODES_2, "St\xE1tn\xED p\u0159\xEDslu\u0161nost je povinn\xE1"),
|
|
554
|
+
isPep: z.boolean({ error: "Politicky exponovan\xE1 osoba je povinn\xE1" }),
|
|
555
|
+
phone: z.string().optional(),
|
|
556
|
+
pin: z.string().optional(),
|
|
557
|
+
identityDocuments: z.array(idDocumentInputSchema$1).optional(),
|
|
1848
558
|
address: createAddressInputSchema,
|
|
1849
|
-
dateOfEstablishment: z
|
|
559
|
+
dateOfEstablishment: z.string().min(1, "Datum vzniku funkce je povinn\xFD")
|
|
1850
560
|
});
|
|
1851
|
-
const createPartyInputSchema = z
|
|
561
|
+
const createPartyInputSchema = z.object({
|
|
1852
562
|
party: partySchema$1.omit({ id: true }),
|
|
1853
563
|
personalData: individualInsertSchema.nullable(),
|
|
1854
564
|
organizationData: createOrganizationInputSchema.nullable(),
|
|
1855
|
-
bankAccounts: z
|
|
1856
|
-
disponents: z
|
|
1857
|
-
addresses: z
|
|
1858
|
-
owners: z
|
|
1859
|
-
legalRepresentatives: z
|
|
565
|
+
bankAccounts: z.array(bankAccountInputSchema),
|
|
566
|
+
disponents: z.array(disponentSchema),
|
|
567
|
+
addresses: z.array(createAddressInputSchema),
|
|
568
|
+
owners: z.array(ownerInputSchema).optional(),
|
|
569
|
+
legalRepresentatives: z.array(legalRepresentativeInputSchema).optional(),
|
|
1860
570
|
aml: createAmlInputSchema,
|
|
1861
|
-
recipients: z
|
|
571
|
+
recipients: z.array(bankAccountInputSchema),
|
|
1862
572
|
products: productsInputSchema$1.optional(),
|
|
1863
|
-
traderIds: z
|
|
1864
|
-
});
|
|
1865
|
-
const partyCreateOutputSchema = z
|
|
1866
|
-
customerStatus: z
|
|
1867
|
-
partyType: z
|
|
1868
|
-
language: z
|
|
1869
|
-
id: z
|
|
1870
|
-
internalId: z
|
|
1871
|
-
note: z
|
|
1872
|
-
countryCode: z
|
|
1873
|
-
createdAt: z
|
|
1874
|
-
updatedAt: z
|
|
1875
|
-
});
|
|
1876
|
-
const responseBodySchema$5 = z
|
|
1877
|
-
message: z
|
|
573
|
+
traderIds: z.array(z.uuid()).optional()
|
|
574
|
+
});
|
|
575
|
+
const partyCreateOutputSchema = z.object({
|
|
576
|
+
customerStatus: z.enum(CUSTOMER_STATUS),
|
|
577
|
+
partyType: z.enum(PARTY_TYPE),
|
|
578
|
+
language: z.enum(LANGUAGE_CODES),
|
|
579
|
+
id: z.uuid(),
|
|
580
|
+
internalId: z.string().nullable(),
|
|
581
|
+
note: z.string().nullable(),
|
|
582
|
+
countryCode: z.enum(COUNTRY_CODES_2).nullable(),
|
|
583
|
+
createdAt: z.iso.datetime().nullable(),
|
|
584
|
+
updatedAt: z.iso.datetime().nullable()
|
|
585
|
+
});
|
|
586
|
+
const responseBodySchema$5 = z.object({
|
|
587
|
+
message: z.string(),
|
|
1878
588
|
party: partyCreateOutputSchema
|
|
1879
589
|
});
|
|
1880
590
|
const createPartyRoute = createRoute({
|
|
@@ -2143,306 +853,306 @@ new OpenAPIHono().openapi(
|
|
|
2143
853
|
}
|
|
2144
854
|
);
|
|
2145
855
|
|
|
2146
|
-
const partySchema = z
|
|
2147
|
-
partyType: z
|
|
2148
|
-
language: z
|
|
2149
|
-
id: z
|
|
2150
|
-
internalId: z
|
|
2151
|
-
note: z
|
|
2152
|
-
countryCode: z
|
|
2153
|
-
});
|
|
2154
|
-
const idDocumentInputSchema = z
|
|
2155
|
-
id: z
|
|
2156
|
-
idDocType: z
|
|
2157
|
-
idDocNumber: z
|
|
2158
|
-
issueDate: z
|
|
2159
|
-
expirationDate: z
|
|
2160
|
-
issuer: z
|
|
2161
|
-
frontImageUri: z
|
|
2162
|
-
backImageUri: z
|
|
2163
|
-
});
|
|
2164
|
-
const individualUpdateSchema = z
|
|
2165
|
-
id: z
|
|
2166
|
-
partyId: z
|
|
2167
|
-
internalId: z
|
|
2168
|
-
name: z
|
|
2169
|
-
surname: z
|
|
2170
|
-
email: z
|
|
2171
|
-
phone: z
|
|
2172
|
-
birthDate: z
|
|
2173
|
-
birthPlace: z
|
|
2174
|
-
countryOfBirth: z
|
|
2175
|
-
personalId: z
|
|
2176
|
-
gender: z
|
|
2177
|
-
citizenship: z
|
|
2178
|
-
citizenshipOther: z
|
|
2179
|
-
employer: z
|
|
2180
|
-
employerCountry: z
|
|
2181
|
-
registeredNumber: z
|
|
2182
|
-
isPep: z
|
|
2183
|
-
titleBefore: z
|
|
2184
|
-
titleAfter: z
|
|
2185
|
-
birthSurname: z
|
|
2186
|
-
vocativeTitle: z
|
|
2187
|
-
deathDate: z
|
|
2188
|
-
deathNotification: z
|
|
2189
|
-
pin: z
|
|
2190
|
-
stayAbroad: z
|
|
2191
|
-
stayAbroadCountries: z
|
|
2192
|
-
identityDocuments: z
|
|
2193
|
-
});
|
|
2194
|
-
const organizationUpdateSchema = z
|
|
2195
|
-
id: z
|
|
2196
|
-
partyId: z
|
|
2197
|
-
internalId: z
|
|
2198
|
-
businessName: z
|
|
2199
|
-
email: z
|
|
2200
|
-
phone: z
|
|
2201
|
-
registeredNumber: z
|
|
2202
|
-
registeredIn: z
|
|
2203
|
-
operatesIn: z
|
|
2204
|
-
presentIn: z
|
|
2205
|
-
monthlyVolumeIn: z
|
|
2206
|
-
monthlyVolumeOut: z
|
|
2207
|
-
ownedBy: z
|
|
2208
|
-
companyObjects: z
|
|
2209
|
-
annualTurnover: z
|
|
2210
|
-
numberOfEmployees: z
|
|
2211
|
-
prosecuted: z
|
|
2212
|
-
location: z
|
|
2213
|
-
fileNumber: z
|
|
2214
|
-
websiteUrl: z
|
|
2215
|
-
vatPayer: z
|
|
2216
|
-
companyObjectsDescription: z
|
|
2217
|
-
turnover3years: z
|
|
2218
|
-
operationCountries: z
|
|
2219
|
-
riskyBusinessType: z
|
|
2220
|
-
vatId: z
|
|
2221
|
-
court: z
|
|
2222
|
-
registerUri: z
|
|
2223
|
-
});
|
|
2224
|
-
const syncBankAccountSchema = z
|
|
856
|
+
const partySchema = z.object({
|
|
857
|
+
partyType: z.enum(PARTY_TYPE),
|
|
858
|
+
language: z.enum(LANGUAGE_CODES),
|
|
859
|
+
id: z.uuid(),
|
|
860
|
+
internalId: z.string().optional(),
|
|
861
|
+
note: z.string().optional(),
|
|
862
|
+
countryCode: z.enum(COUNTRY_CODES_2).optional()
|
|
863
|
+
});
|
|
864
|
+
const idDocumentInputSchema = z.object({
|
|
865
|
+
id: z.uuid().optional(),
|
|
866
|
+
idDocType: z.enum(ID_DOC_TYPE),
|
|
867
|
+
idDocNumber: z.string(),
|
|
868
|
+
issueDate: z.coerce.date().optional(),
|
|
869
|
+
expirationDate: z.coerce.date().optional(),
|
|
870
|
+
issuer: z.string().optional(),
|
|
871
|
+
frontImageUri: z.string().optional(),
|
|
872
|
+
backImageUri: z.string().optional()
|
|
873
|
+
});
|
|
874
|
+
const individualUpdateSchema = z.object({
|
|
875
|
+
id: z.uuid(),
|
|
876
|
+
partyId: z.uuid(),
|
|
877
|
+
internalId: z.string().optional(),
|
|
878
|
+
name: z.string().optional(),
|
|
879
|
+
surname: z.string().optional(),
|
|
880
|
+
email: z.email("E-mail je povinn\xFD"),
|
|
881
|
+
phone: z.string().optional(),
|
|
882
|
+
birthDate: z.string().min(1, "Datum narozen\xED je povinn\xE9"),
|
|
883
|
+
birthPlace: z.string().optional(),
|
|
884
|
+
countryOfBirth: z.enum(COUNTRY_CODES_2).optional(),
|
|
885
|
+
personalId: z.string().optional(),
|
|
886
|
+
gender: z.enum(GENDER).optional(),
|
|
887
|
+
citizenship: z.enum(COUNTRY_CODES_2).optional(),
|
|
888
|
+
citizenshipOther: z.enum(COUNTRY_CODES_2).optional(),
|
|
889
|
+
employer: z.string().optional(),
|
|
890
|
+
employerCountry: z.enum(COUNTRY_CODES_2).optional(),
|
|
891
|
+
registeredNumber: z.string().optional(),
|
|
892
|
+
isPep: z.boolean().optional(),
|
|
893
|
+
titleBefore: z.string().optional(),
|
|
894
|
+
titleAfter: z.string().optional(),
|
|
895
|
+
birthSurname: z.string().optional(),
|
|
896
|
+
vocativeTitle: z.string().optional(),
|
|
897
|
+
deathDate: z.coerce.date().optional(),
|
|
898
|
+
deathNotification: z.coerce.date().optional(),
|
|
899
|
+
pin: z.string().optional(),
|
|
900
|
+
stayAbroad: z.boolean().optional(),
|
|
901
|
+
stayAbroadCountries: z.enum(COUNTRY_CODES_2).optional(),
|
|
902
|
+
identityDocuments: z.array(idDocumentInputSchema).optional()
|
|
903
|
+
});
|
|
904
|
+
const organizationUpdateSchema = z.object({
|
|
905
|
+
id: z.uuid(),
|
|
906
|
+
partyId: z.uuid().optional(),
|
|
907
|
+
internalId: z.string().optional(),
|
|
908
|
+
businessName: z.string().optional(),
|
|
909
|
+
email: z.email("Invalid email format").optional(),
|
|
910
|
+
phone: z.string().optional(),
|
|
911
|
+
registeredNumber: z.string().optional(),
|
|
912
|
+
registeredIn: z.enum(COUNTRY_CODES_2).optional(),
|
|
913
|
+
operatesIn: z.enum(COUNTRY_CODES_2).optional(),
|
|
914
|
+
presentIn: z.enum(COUNTRY_CODES_2).optional(),
|
|
915
|
+
monthlyVolumeIn: z.number().optional(),
|
|
916
|
+
monthlyVolumeOut: z.number().optional(),
|
|
917
|
+
ownedBy: z.string().optional(),
|
|
918
|
+
companyObjects: z.array(z.enum(CZ_NACE_CODES)).min(1).optional(),
|
|
919
|
+
annualTurnover: z.number().optional(),
|
|
920
|
+
numberOfEmployees: z.number().optional(),
|
|
921
|
+
prosecuted: z.string().optional(),
|
|
922
|
+
location: z.string().optional(),
|
|
923
|
+
fileNumber: z.string().optional(),
|
|
924
|
+
websiteUrl: z.url("Invalid website URL").optional(),
|
|
925
|
+
vatPayer: z.boolean().optional(),
|
|
926
|
+
companyObjectsDescription: z.string(),
|
|
927
|
+
turnover3years: z.number(),
|
|
928
|
+
operationCountries: z.string(),
|
|
929
|
+
riskyBusinessType: z.string().optional(),
|
|
930
|
+
vatId: z.string().optional(),
|
|
931
|
+
court: z.enum(COURT).optional(),
|
|
932
|
+
registerUri: z.string().optional()
|
|
933
|
+
});
|
|
934
|
+
const syncBankAccountSchema = z.object({
|
|
2225
935
|
...bankAccountMetadataSchema.shape,
|
|
2226
|
-
partyId: z
|
|
2227
|
-
internalId: z
|
|
2228
|
-
holderName: z
|
|
2229
|
-
number: z
|
|
936
|
+
partyId: z.uuid(),
|
|
937
|
+
internalId: z.string().optional(),
|
|
938
|
+
holderName: z.string(),
|
|
939
|
+
number: z.string().optional(),
|
|
2230
940
|
currency: bankAccountMetadataSchema.shape.currency.nonoptional(),
|
|
2231
941
|
countryCode: bankAccountMetadataSchema.shape.countryCode.nonoptional(),
|
|
2232
|
-
id: z
|
|
2233
|
-
statementUri: z
|
|
2234
|
-
});
|
|
2235
|
-
const disponentIndividualSyncDataSchema = z
|
|
2236
|
-
id: z
|
|
2237
|
-
name: z
|
|
2238
|
-
surname: z
|
|
2239
|
-
email: z
|
|
2240
|
-
phone: z
|
|
2241
|
-
birthDate: z
|
|
2242
|
-
birthPlace: z
|
|
2243
|
-
countryOfBirth: z
|
|
2244
|
-
personalId: z
|
|
2245
|
-
gender: z
|
|
2246
|
-
citizenship: z
|
|
2247
|
-
citizenshipOther: z
|
|
2248
|
-
employer: z
|
|
2249
|
-
employerCountry: z
|
|
2250
|
-
registeredNumber: z
|
|
2251
|
-
isPep: z
|
|
2252
|
-
titleBefore: z
|
|
2253
|
-
titleAfter: z
|
|
2254
|
-
birthSurname: z
|
|
2255
|
-
vocativeTitle: z
|
|
2256
|
-
deathDate: z
|
|
2257
|
-
deathNotification: z
|
|
2258
|
-
pin: z
|
|
2259
|
-
stayAbroad: z
|
|
2260
|
-
stayAbroadCountries: z
|
|
2261
|
-
identityDocuments: z
|
|
2262
|
-
});
|
|
2263
|
-
const disponentOrganizationSyncDataSchema = z
|
|
2264
|
-
id: z
|
|
2265
|
-
businessName: z
|
|
2266
|
-
email: z
|
|
2267
|
-
phone: z
|
|
2268
|
-
registeredNumber: z
|
|
2269
|
-
registeredIn: z
|
|
2270
|
-
operatesIn: z
|
|
2271
|
-
presentIn: z
|
|
2272
|
-
monthlyVolumeIn: z
|
|
2273
|
-
monthlyVolumeOut: z
|
|
2274
|
-
ownedBy: z
|
|
2275
|
-
companyObjects: z
|
|
2276
|
-
annualTurnover: z
|
|
2277
|
-
numberOfEmployees: z
|
|
2278
|
-
prosecuted: z
|
|
2279
|
-
location: z
|
|
2280
|
-
fileNumber: z
|
|
2281
|
-
websiteUrl: z
|
|
2282
|
-
vatPayer: z
|
|
2283
|
-
companyObjectsDescription: z
|
|
2284
|
-
turnover3years: z
|
|
2285
|
-
operationCountries: z
|
|
2286
|
-
riskyBusinessType: z
|
|
2287
|
-
registerUri: z
|
|
2288
|
-
});
|
|
2289
|
-
const disponentSyncSchema = z
|
|
2290
|
-
z
|
|
2291
|
-
partyType: z
|
|
942
|
+
id: z.uuid().optional(),
|
|
943
|
+
statementUri: z.string().optional()
|
|
944
|
+
});
|
|
945
|
+
const disponentIndividualSyncDataSchema = z.object({
|
|
946
|
+
id: z.uuid().optional(),
|
|
947
|
+
name: z.string(),
|
|
948
|
+
surname: z.string(),
|
|
949
|
+
email: z.email("E-mail je povinn\xFD"),
|
|
950
|
+
phone: z.string().optional(),
|
|
951
|
+
birthDate: z.string().min(1, "Datum narozen\xED je povinn\xE9"),
|
|
952
|
+
birthPlace: z.string().optional(),
|
|
953
|
+
countryOfBirth: z.enum(COUNTRY_CODES_2).optional(),
|
|
954
|
+
personalId: z.string(),
|
|
955
|
+
gender: z.enum(GENDER),
|
|
956
|
+
citizenship: z.enum(COUNTRY_CODES_2),
|
|
957
|
+
citizenshipOther: z.enum(COUNTRY_CODES_2).optional(),
|
|
958
|
+
employer: z.string().optional(),
|
|
959
|
+
employerCountry: z.enum(COUNTRY_CODES_2).optional(),
|
|
960
|
+
registeredNumber: z.string().optional(),
|
|
961
|
+
isPep: z.boolean(),
|
|
962
|
+
titleBefore: z.string().optional(),
|
|
963
|
+
titleAfter: z.string().optional(),
|
|
964
|
+
birthSurname: z.string().optional(),
|
|
965
|
+
vocativeTitle: z.string().optional(),
|
|
966
|
+
deathDate: z.coerce.date().optional(),
|
|
967
|
+
deathNotification: z.coerce.date().optional(),
|
|
968
|
+
pin: z.string().optional(),
|
|
969
|
+
stayAbroad: z.boolean().optional(),
|
|
970
|
+
stayAbroadCountries: z.enum(COUNTRY_CODES_2).optional(),
|
|
971
|
+
identityDocuments: z.array(idDocumentInputSchema).optional()
|
|
972
|
+
});
|
|
973
|
+
const disponentOrganizationSyncDataSchema = z.object({
|
|
974
|
+
id: z.uuid().optional(),
|
|
975
|
+
businessName: z.string(),
|
|
976
|
+
email: z.email("Invalid email format").optional(),
|
|
977
|
+
phone: z.string().optional(),
|
|
978
|
+
registeredNumber: z.string(),
|
|
979
|
+
registeredIn: z.enum(COUNTRY_CODES_2),
|
|
980
|
+
operatesIn: z.enum(COUNTRY_CODES_2),
|
|
981
|
+
presentIn: z.enum(COUNTRY_CODES_2),
|
|
982
|
+
monthlyVolumeIn: z.number(),
|
|
983
|
+
monthlyVolumeOut: z.number(),
|
|
984
|
+
ownedBy: z.string(),
|
|
985
|
+
companyObjects: z.array(z.enum(CZ_NACE_CODES)).min(1),
|
|
986
|
+
annualTurnover: z.number(),
|
|
987
|
+
numberOfEmployees: z.number().optional(),
|
|
988
|
+
prosecuted: z.string().optional(),
|
|
989
|
+
location: z.string().optional(),
|
|
990
|
+
fileNumber: z.string().optional(),
|
|
991
|
+
websiteUrl: z.url("Invalid website URL").optional(),
|
|
992
|
+
vatPayer: z.boolean(),
|
|
993
|
+
companyObjectsDescription: z.string(),
|
|
994
|
+
turnover3years: z.number(),
|
|
995
|
+
operationCountries: z.string(),
|
|
996
|
+
riskyBusinessType: z.string().optional(),
|
|
997
|
+
registerUri: z.string().optional()
|
|
998
|
+
});
|
|
999
|
+
const disponentSyncSchema = z.discriminatedUnion("partyType", [
|
|
1000
|
+
z.object({
|
|
1001
|
+
partyType: z.literal("INDIVIDUAL"),
|
|
2292
1002
|
data: disponentIndividualSyncDataSchema
|
|
2293
1003
|
}),
|
|
2294
|
-
z
|
|
2295
|
-
partyType: z
|
|
1004
|
+
z.object({
|
|
1005
|
+
partyType: z.literal("ORGANIZATION"),
|
|
2296
1006
|
data: disponentOrganizationSyncDataSchema
|
|
2297
1007
|
})
|
|
2298
1008
|
]);
|
|
2299
|
-
const syncAddressInputSchema = z
|
|
2300
|
-
id: z
|
|
2301
|
-
partyId: z
|
|
2302
|
-
internalId: z
|
|
2303
|
-
addressType: z
|
|
2304
|
-
street: z
|
|
2305
|
-
orientationNumber: z
|
|
2306
|
-
descriptiveNumber: z
|
|
2307
|
-
municipality: z
|
|
2308
|
-
municipalityPart: z
|
|
2309
|
-
zipCode: z
|
|
2310
|
-
district: z
|
|
2311
|
-
region: z
|
|
2312
|
-
countryCode: z
|
|
2313
|
-
ruianCode: z
|
|
2314
|
-
});
|
|
2315
|
-
const businessPartnerInputSchema = z
|
|
2316
|
-
name: z
|
|
2317
|
-
country: z
|
|
2318
|
-
cooperationReason: z
|
|
2319
|
-
});
|
|
2320
|
-
const foSourceOfWealthInputSchema = z
|
|
2321
|
-
incomeSources: z
|
|
2322
|
-
incomeSourceOther: z
|
|
2323
|
-
monthlyIncome: z
|
|
2324
|
-
employer: z
|
|
2325
|
-
employerCountry: z
|
|
2326
|
-
});
|
|
2327
|
-
const businessSourceOfWealthInputSchema = z
|
|
2328
|
-
financialFundsSources: z
|
|
2329
|
-
financialFundsSourceOther: z
|
|
2330
|
-
mainBusinessSubjects: z
|
|
2331
|
-
companyTurnover: z
|
|
1009
|
+
const syncAddressInputSchema = z.object({
|
|
1010
|
+
id: z.uuid().optional(),
|
|
1011
|
+
partyId: z.uuid(),
|
|
1012
|
+
internalId: z.string().optional(),
|
|
1013
|
+
addressType: z.enum(ADDRESS_TYPE),
|
|
1014
|
+
street: z.string(),
|
|
1015
|
+
orientationNumber: z.string().optional(),
|
|
1016
|
+
descriptiveNumber: z.string().optional(),
|
|
1017
|
+
municipality: z.string().max(255),
|
|
1018
|
+
municipalityPart: z.string().optional(),
|
|
1019
|
+
zipCode: z.string().max(20),
|
|
1020
|
+
district: z.string().max(255),
|
|
1021
|
+
region: z.string().max(255),
|
|
1022
|
+
countryCode: z.enum(COUNTRY_CODES_2),
|
|
1023
|
+
ruianCode: z.string().optional()
|
|
1024
|
+
});
|
|
1025
|
+
const businessPartnerInputSchema = z.object({
|
|
1026
|
+
name: z.string().min(1, "N\xE1zev partnera je povinn\xFD"),
|
|
1027
|
+
country: z.enum(COUNTRY_CODES_2, "St\xE1t partnera je povinn\xFD"),
|
|
1028
|
+
cooperationReason: z.string().nullable()
|
|
1029
|
+
});
|
|
1030
|
+
const foSourceOfWealthInputSchema = z.object({
|
|
1031
|
+
incomeSources: z.array(z.enum(INCOME_SOURCE)).min(1, "Hlavn\xED zdroj p\u0159\xEDjm\u016F je povinn\xFD"),
|
|
1032
|
+
incomeSourceOther: z.string().nullable(),
|
|
1033
|
+
monthlyIncome: z.enum(MONTHLY_INCOME_RANGE, "M\u011Bs\xED\u010Dn\xED p\u0159\xEDjem je povinn\xFD"),
|
|
1034
|
+
employer: z.string().min(1, "N\xE1zev zam\u011Bstnavatele je povinn\xFD").nullable(),
|
|
1035
|
+
employerCountry: z.enum(COUNTRY_CODES_2, "St\xE1t zam\u011Bstnavatele je povinn\xFD").nullable()
|
|
1036
|
+
});
|
|
1037
|
+
const businessSourceOfWealthInputSchema = z.object({
|
|
1038
|
+
financialFundsSources: z.array(z.enum(FINANCIAL_FUNDS_SOURCE)).min(1, "Zdroj finan\u010Dn\xEDch prost\u0159edk\u016F je povinn\xFD"),
|
|
1039
|
+
financialFundsSourceOther: z.string().nullable(),
|
|
1040
|
+
mainBusinessSubjects: z.array(z.enum(CZ_TRADE_LICENSE_CODES)).min(1, "Hlavn\xED p\u0159edm\u011Bt podnik\xE1n\xED je povinn\xFD"),
|
|
1041
|
+
companyTurnover: z.enum(
|
|
2332
1042
|
COMPANY_TURNOVER_RANGE,
|
|
2333
1043
|
"Obrat za posledn\xED 3 roky je povinn\xFD"
|
|
2334
1044
|
),
|
|
2335
|
-
operatingCountries: z
|
|
2336
|
-
operatingCountriesOther: z
|
|
2337
|
-
businessPartners: z
|
|
2338
|
-
businessActivitiesNote: z
|
|
2339
|
-
});
|
|
2340
|
-
const updateAmlInputSchema = z
|
|
2341
|
-
id: z
|
|
2342
|
-
partyId: z
|
|
2343
|
-
internalId: z
|
|
2344
|
-
sourceOfWealth: z
|
|
2345
|
-
yearlyIncome: z
|
|
2346
|
-
sourceOfIncome: z
|
|
2347
|
-
incomeSourceOther: z
|
|
2348
|
-
servicePurposes: z
|
|
2349
|
-
servicePurposesOther: z
|
|
2350
|
-
taxDomicile: z
|
|
2351
|
-
taxDomicileCountry: z
|
|
2352
|
-
transactionType: z
|
|
2353
|
-
transactionTypeExpiry: z
|
|
2354
|
-
isDistraint: z
|
|
2355
|
-
estTxsVolumeMonth: z
|
|
2356
|
-
estTxsVolumeYear: z
|
|
2357
|
-
estTxsCountMonth: z
|
|
2358
|
-
tradingCountries: z
|
|
2359
|
-
tradingCountriesOther: z
|
|
2360
|
-
tradingSide: z
|
|
2361
|
-
acceptedAMLTermsAndConditions: z
|
|
2362
|
-
signatureMethod: z
|
|
2363
|
-
existencePeriod: z
|
|
2364
|
-
reputation: z
|
|
2365
|
-
riskBusinessAreas: z
|
|
2366
|
-
riskLevel: z
|
|
2367
|
-
kycStatus: z
|
|
2368
|
-
residencyAnswers: z
|
|
2369
|
-
z
|
|
2370
|
-
personName: z
|
|
2371
|
-
personRole: z
|
|
2372
|
-
answer: z
|
|
2373
|
-
country: z
|
|
1045
|
+
operatingCountries: z.array(z.enum(OPERATING_COUNTRY)).min(1, "Zem\u011B p\u016Fsoben\xED je povinn\xE1"),
|
|
1046
|
+
operatingCountriesOther: z.array(z.enum(COUNTRY_CODES_2)).nullable(),
|
|
1047
|
+
businessPartners: z.array(businessPartnerInputSchema).min(1, "Alespo\u0148 jeden partner je povinn\xFD").nullable(),
|
|
1048
|
+
businessActivitiesNote: z.string().min(1, "Detailn\xED popis v\u0161ech podnikatelsk\xFDch \u010Dinnost\xED je povinn\xFD").nullable()
|
|
1049
|
+
});
|
|
1050
|
+
const updateAmlInputSchema = z.object({
|
|
1051
|
+
id: z.uuid(),
|
|
1052
|
+
partyId: z.uuid().optional(),
|
|
1053
|
+
internalId: z.string().optional(),
|
|
1054
|
+
sourceOfWealth: z.union([foSourceOfWealthInputSchema, businessSourceOfWealthInputSchema]).optional(),
|
|
1055
|
+
yearlyIncome: z.enum(YEARLY_INCOME).optional(),
|
|
1056
|
+
sourceOfIncome: z.array(z.enum(INCOME_SOURCE)).min(1).optional(),
|
|
1057
|
+
incomeSourceOther: z.string().optional(),
|
|
1058
|
+
servicePurposes: z.array(z.enum(SERVICE_PURPOSE)).optional(),
|
|
1059
|
+
servicePurposesOther: z.string().optional(),
|
|
1060
|
+
taxDomicile: z.enum(TAX_DOMICILE).optional(),
|
|
1061
|
+
taxDomicileCountry: z.enum(COUNTRY_CODES_2).optional(),
|
|
1062
|
+
transactionType: z.string().optional(),
|
|
1063
|
+
transactionTypeExpiry: z.coerce.date().optional(),
|
|
1064
|
+
isDistraint: z.boolean().optional(),
|
|
1065
|
+
estTxsVolumeMonth: z.enum(EST_TXS_VOLUME_MONTH),
|
|
1066
|
+
estTxsVolumeYear: z.enum(EST_TXS_VOLUME_YEAR),
|
|
1067
|
+
estTxsCountMonth: z.number().int().optional(),
|
|
1068
|
+
tradingCountries: z.array(z.enum(TARGET_COUNTRY)).min(1),
|
|
1069
|
+
tradingCountriesOther: z.array(z.enum(COUNTRY_CODES_2)).optional(),
|
|
1070
|
+
tradingSide: z.enum(TRADING_SIDE),
|
|
1071
|
+
acceptedAMLTermsAndConditions: z.boolean(),
|
|
1072
|
+
signatureMethod: z.enum(SIGNATURE_METHOD).optional(),
|
|
1073
|
+
existencePeriod: z.enum(EXISTENCE_PERIOD).optional(),
|
|
1074
|
+
reputation: z.enum(REPUTATION).optional(),
|
|
1075
|
+
riskBusinessAreas: z.array(z.enum(RISK_BUSINESS_AREA)).optional(),
|
|
1076
|
+
riskLevel: z.enum(AML_SCORE_TYPE).optional(),
|
|
1077
|
+
kycStatus: z.enum(KYC_STATUS).optional(),
|
|
1078
|
+
residencyAnswers: z.array(
|
|
1079
|
+
z.object({
|
|
1080
|
+
personName: z.string(),
|
|
1081
|
+
personRole: z.enum(PERSON_ROLE),
|
|
1082
|
+
answer: z.enum(YES_NO_UNKNOWN),
|
|
1083
|
+
country: z.enum(COUNTRY_CODES_2).nullable()
|
|
2374
1084
|
})
|
|
2375
|
-
).optional()
|
|
2376
|
-
});
|
|
2377
|
-
const productsInputSchema = z
|
|
2378
|
-
txs: z
|
|
2379
|
-
fee: z
|
|
2380
|
-
margin: z
|
|
2381
|
-
reportingEmail: z
|
|
2382
|
-
clientType: z
|
|
1085
|
+
).optional()
|
|
1086
|
+
});
|
|
1087
|
+
const productsInputSchema = z.object({
|
|
1088
|
+
txs: z.object({
|
|
1089
|
+
fee: z.number(),
|
|
1090
|
+
margin: z.number(),
|
|
1091
|
+
reportingEmail: z.string().optional(),
|
|
1092
|
+
clientType: z.enum(TXS_CLIENT_TYPE).optional()
|
|
2383
1093
|
}).optional(),
|
|
2384
|
-
cbs: z
|
|
2385
|
-
});
|
|
2386
|
-
const ownerSyncSchema = z
|
|
2387
|
-
id: z
|
|
2388
|
-
titleBefore: z
|
|
2389
|
-
name: z
|
|
2390
|
-
surname: z
|
|
2391
|
-
titleAfter: z
|
|
2392
|
-
email: z
|
|
2393
|
-
birthDate: z
|
|
2394
|
-
birthPlace: z
|
|
2395
|
-
personalId: z
|
|
2396
|
-
gender: z
|
|
2397
|
-
citizenship: z
|
|
2398
|
-
isPep: z
|
|
1094
|
+
cbs: z.object({}).optional()
|
|
1095
|
+
});
|
|
1096
|
+
const ownerSyncSchema = z.object({
|
|
1097
|
+
id: z.uuid().optional(),
|
|
1098
|
+
titleBefore: z.string().optional(),
|
|
1099
|
+
name: z.string(),
|
|
1100
|
+
surname: z.string(),
|
|
1101
|
+
titleAfter: z.string().optional(),
|
|
1102
|
+
email: z.email("E-mail je povinn\xFD"),
|
|
1103
|
+
birthDate: z.string(),
|
|
1104
|
+
birthPlace: z.string().optional(),
|
|
1105
|
+
personalId: z.string(),
|
|
1106
|
+
gender: z.enum(GENDER),
|
|
1107
|
+
citizenship: z.enum(COUNTRY_CODES_2),
|
|
1108
|
+
isPep: z.boolean(),
|
|
2399
1109
|
address: syncAddressInputSchema,
|
|
2400
|
-
sharePercentage: z
|
|
2401
|
-
shareEstablishedAt: z
|
|
2402
|
-
});
|
|
2403
|
-
const legalRepresentativeSyncSchema = z
|
|
2404
|
-
id: z
|
|
2405
|
-
titleBefore: z
|
|
2406
|
-
name: z
|
|
2407
|
-
surname: z
|
|
2408
|
-
titleAfter: z
|
|
2409
|
-
email: z
|
|
2410
|
-
birthDate: z
|
|
2411
|
-
birthPlace: z
|
|
2412
|
-
personalId: z
|
|
2413
|
-
gender: z
|
|
2414
|
-
citizenship: z
|
|
2415
|
-
isPep: z
|
|
2416
|
-
phone: z
|
|
2417
|
-
pin: z
|
|
2418
|
-
identityDocuments: z
|
|
1110
|
+
sharePercentage: z.number().max(100),
|
|
1111
|
+
shareEstablishedAt: z.string().min(1, "Datum vzniku pod\xEDlu je povinn\xFD")
|
|
1112
|
+
});
|
|
1113
|
+
const legalRepresentativeSyncSchema = z.object({
|
|
1114
|
+
id: z.uuid().optional(),
|
|
1115
|
+
titleBefore: z.string().optional(),
|
|
1116
|
+
name: z.string(),
|
|
1117
|
+
surname: z.string(),
|
|
1118
|
+
titleAfter: z.string().optional(),
|
|
1119
|
+
email: z.email("E-mail je povinn\xFD"),
|
|
1120
|
+
birthDate: z.string(),
|
|
1121
|
+
birthPlace: z.string().optional(),
|
|
1122
|
+
personalId: z.string(),
|
|
1123
|
+
gender: z.enum(GENDER),
|
|
1124
|
+
citizenship: z.enum(COUNTRY_CODES_2),
|
|
1125
|
+
isPep: z.boolean(),
|
|
1126
|
+
phone: z.string().optional(),
|
|
1127
|
+
pin: z.string().optional(),
|
|
1128
|
+
identityDocuments: z.array(idDocumentInputSchema).optional(),
|
|
2419
1129
|
address: syncAddressInputSchema,
|
|
2420
|
-
dateOfEstablishment: z
|
|
1130
|
+
dateOfEstablishment: z.string().min(1, "Datum vzniku funkce je povinn\xFD")
|
|
2421
1131
|
});
|
|
2422
|
-
const partyUpdateInputSchema = z
|
|
1132
|
+
const partyUpdateInputSchema = z.object({
|
|
2423
1133
|
party: partySchema,
|
|
2424
1134
|
personalData: individualUpdateSchema.nullable(),
|
|
2425
1135
|
organizationData: organizationUpdateSchema.nullable(),
|
|
2426
|
-
bankAccounts: z
|
|
2427
|
-
disponents: z
|
|
2428
|
-
addresses: z
|
|
2429
|
-
owners: z
|
|
2430
|
-
legalRepresentatives: z
|
|
2431
|
-
recipients: z
|
|
1136
|
+
bankAccounts: z.array(syncBankAccountSchema),
|
|
1137
|
+
disponents: z.array(disponentSyncSchema).optional(),
|
|
1138
|
+
addresses: z.array(syncAddressInputSchema),
|
|
1139
|
+
owners: z.array(ownerSyncSchema).optional(),
|
|
1140
|
+
legalRepresentatives: z.array(legalRepresentativeSyncSchema).optional(),
|
|
1141
|
+
recipients: z.array(syncBankAccountSchema).nullable(),
|
|
2432
1142
|
aml: updateAmlInputSchema.optional(),
|
|
2433
1143
|
products: productsInputSchema.optional(),
|
|
2434
|
-
traderIds: z
|
|
2435
|
-
});
|
|
2436
|
-
const updatePartyOuputSchema = z
|
|
2437
|
-
id: z
|
|
2438
|
-
customerStatus: z
|
|
2439
|
-
partyType: z
|
|
2440
|
-
language: z
|
|
2441
|
-
note: z
|
|
2442
|
-
countryCode: z
|
|
2443
|
-
});
|
|
2444
|
-
const responseBodySchema$4 = z
|
|
2445
|
-
message: z
|
|
1144
|
+
traderIds: z.array(z.uuid()).optional()
|
|
1145
|
+
});
|
|
1146
|
+
const updatePartyOuputSchema = z.object({
|
|
1147
|
+
id: z.uuid(),
|
|
1148
|
+
customerStatus: z.enum(CUSTOMER_STATUS),
|
|
1149
|
+
partyType: z.enum(PARTY_TYPE),
|
|
1150
|
+
language: z.enum(LANGUAGE_CODES),
|
|
1151
|
+
note: z.string().nullable(),
|
|
1152
|
+
countryCode: z.enum(COUNTRY_CODES_2).nullable()
|
|
1153
|
+
});
|
|
1154
|
+
const responseBodySchema$4 = z.object({
|
|
1155
|
+
message: z.string(),
|
|
2446
1156
|
party: updatePartyOuputSchema
|
|
2447
1157
|
});
|
|
2448
1158
|
const updatePartyRoute = createRoute({
|
|
@@ -2457,7 +1167,7 @@ const updatePartyRoute = createRoute({
|
|
|
2457
1167
|
}
|
|
2458
1168
|
],
|
|
2459
1169
|
request: {
|
|
2460
|
-
params: z
|
|
1170
|
+
params: z.object({ partyId: z.uuid() }),
|
|
2461
1171
|
body: {
|
|
2462
1172
|
content: {
|
|
2463
1173
|
"application/json": {
|
|
@@ -2585,54 +1295,54 @@ new OpenAPIHono().openapi(
|
|
|
2585
1295
|
);
|
|
2586
1296
|
|
|
2587
1297
|
const DOCUMENT_SIDE = ["front", "back"];
|
|
2588
|
-
const paramsSchema$2 = z
|
|
2589
|
-
partyId: z
|
|
2590
|
-
});
|
|
2591
|
-
const idDocumentCreateInputSchema = z
|
|
2592
|
-
partyId: z
|
|
2593
|
-
idDocType: z
|
|
2594
|
-
idDocNumber: z
|
|
2595
|
-
idDocHolderName: z
|
|
2596
|
-
issueDate: z
|
|
2597
|
-
expirationDate: z
|
|
2598
|
-
issuer: z
|
|
2599
|
-
countryOfIssue: z
|
|
2600
|
-
idDocStatus: z
|
|
2601
|
-
});
|
|
2602
|
-
const idDocumentMultipartSchema = z
|
|
2603
|
-
idDocument: z
|
|
2604
|
-
documentSide: z
|
|
2605
|
-
file: z
|
|
2606
|
-
});
|
|
2607
|
-
const multipartOpenApiSchema = z
|
|
2608
|
-
idDocument: z
|
|
1298
|
+
const paramsSchema$2 = z.object({
|
|
1299
|
+
partyId: z.uuid()
|
|
1300
|
+
});
|
|
1301
|
+
const idDocumentCreateInputSchema = z.object({
|
|
1302
|
+
partyId: z.uuid(),
|
|
1303
|
+
idDocType: z.enum(ID_DOC_TYPE),
|
|
1304
|
+
idDocNumber: z.string(),
|
|
1305
|
+
idDocHolderName: z.string(),
|
|
1306
|
+
issueDate: z.coerce.date().optional(),
|
|
1307
|
+
expirationDate: z.coerce.date().optional(),
|
|
1308
|
+
issuer: z.string().optional(),
|
|
1309
|
+
countryOfIssue: z.enum(COUNTRY_CODES_2).optional(),
|
|
1310
|
+
idDocStatus: z.enum(ID_DOC_STATUS).optional()
|
|
1311
|
+
});
|
|
1312
|
+
const idDocumentMultipartSchema = z.object({
|
|
1313
|
+
idDocument: z.string(),
|
|
1314
|
+
documentSide: z.enum(DOCUMENT_SIDE),
|
|
1315
|
+
file: z.any()
|
|
1316
|
+
});
|
|
1317
|
+
const multipartOpenApiSchema = z.object({
|
|
1318
|
+
idDocument: z.string().openapi({
|
|
2609
1319
|
description: "JSON stringified IdDocument payload"
|
|
2610
1320
|
}),
|
|
2611
|
-
documentSide: z
|
|
2612
|
-
file: z
|
|
1321
|
+
documentSide: z.enum(DOCUMENT_SIDE),
|
|
1322
|
+
file: z.any().openapi({
|
|
2613
1323
|
type: "string",
|
|
2614
1324
|
format: "binary"
|
|
2615
1325
|
})
|
|
2616
1326
|
});
|
|
2617
|
-
const idDocumentOutputSchema = z
|
|
2618
|
-
id: z
|
|
2619
|
-
createdAt: z
|
|
2620
|
-
updatedAt: z
|
|
2621
|
-
deletedAt: z
|
|
2622
|
-
partyId: z
|
|
2623
|
-
idDocType: z
|
|
2624
|
-
idDocNumber: z
|
|
2625
|
-
idDocHolderName: z
|
|
2626
|
-
issueDate: z
|
|
2627
|
-
expirationDate: z
|
|
2628
|
-
issuer: z
|
|
2629
|
-
countryOfIssue: z
|
|
2630
|
-
frontImageUri: z
|
|
2631
|
-
backImageUri: z
|
|
2632
|
-
idDocStatus: z
|
|
2633
|
-
});
|
|
2634
|
-
const responseBodySchema$3 = z
|
|
2635
|
-
message: z
|
|
1327
|
+
const idDocumentOutputSchema = z.object({
|
|
1328
|
+
id: z.uuid(),
|
|
1329
|
+
createdAt: z.iso.datetime().nullable(),
|
|
1330
|
+
updatedAt: z.iso.datetime().nullable(),
|
|
1331
|
+
deletedAt: z.iso.datetime().nullable(),
|
|
1332
|
+
partyId: z.uuid(),
|
|
1333
|
+
idDocType: z.enum(ID_DOC_TYPE),
|
|
1334
|
+
idDocNumber: z.string(),
|
|
1335
|
+
idDocHolderName: z.string(),
|
|
1336
|
+
issueDate: z.iso.datetime().nullable(),
|
|
1337
|
+
expirationDate: z.iso.datetime().nullable(),
|
|
1338
|
+
issuer: z.string().nullable(),
|
|
1339
|
+
countryOfIssue: z.enum(COUNTRY_CODES_2).nullable(),
|
|
1340
|
+
frontImageUri: z.string().nullable(),
|
|
1341
|
+
backImageUri: z.string().nullable(),
|
|
1342
|
+
idDocStatus: z.enum(ID_DOC_STATUS).nullable()
|
|
1343
|
+
});
|
|
1344
|
+
const responseBodySchema$3 = z.object({
|
|
1345
|
+
message: z.string(),
|
|
2636
1346
|
idDocument: idDocumentOutputSchema
|
|
2637
1347
|
});
|
|
2638
1348
|
const createDocumentRoute = createRoute({
|
|
@@ -2672,7 +1382,7 @@ const createDocumentRoute = createRoute({
|
|
|
2672
1382
|
description: "Invalid request",
|
|
2673
1383
|
content: {
|
|
2674
1384
|
"application/json": {
|
|
2675
|
-
schema: z
|
|
1385
|
+
schema: z.object({ message: z.string() })
|
|
2676
1386
|
}
|
|
2677
1387
|
}
|
|
2678
1388
|
},
|
|
@@ -2680,7 +1390,7 @@ const createDocumentRoute = createRoute({
|
|
|
2680
1390
|
description: "Internal server error",
|
|
2681
1391
|
content: {
|
|
2682
1392
|
"application/json": {
|
|
2683
|
-
schema: z
|
|
1393
|
+
schema: z.object({ message: z.string() })
|
|
2684
1394
|
}
|
|
2685
1395
|
}
|
|
2686
1396
|
}
|
|
@@ -2745,255 +1455,257 @@ new OpenAPIHono().openapi(
|
|
|
2745
1455
|
}
|
|
2746
1456
|
);
|
|
2747
1457
|
|
|
2748
|
-
const partyBaseOutputSchema = z
|
|
2749
|
-
customerStatus: z
|
|
2750
|
-
partyType: z
|
|
2751
|
-
language: z
|
|
2752
|
-
id: z
|
|
2753
|
-
internalId: z
|
|
2754
|
-
note: z
|
|
2755
|
-
countryCode: z
|
|
2756
|
-
createdAt: z
|
|
2757
|
-
updatedAt: z
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2762
|
-
|
|
2763
|
-
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
|
|
2799
|
-
|
|
2800
|
-
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
|
|
2841
|
-
|
|
2842
|
-
|
|
2843
|
-
|
|
2844
|
-
|
|
1458
|
+
const partyBaseOutputSchema = z.object({
|
|
1459
|
+
customerStatus: z.enum(CUSTOMER_STATUS),
|
|
1460
|
+
partyType: z.enum(PARTY_TYPE),
|
|
1461
|
+
language: z.enum(LANGUAGE_CODES),
|
|
1462
|
+
id: z.uuid(),
|
|
1463
|
+
internalId: z.string().nullable(),
|
|
1464
|
+
note: z.string().nullable(),
|
|
1465
|
+
countryCode: z.enum(COUNTRY_CODES_2).nullable(),
|
|
1466
|
+
createdAt: z.iso.datetime().nullable(),
|
|
1467
|
+
updatedAt: z.iso.datetime().nullable(),
|
|
1468
|
+
deletedAt: z.iso.datetime().nullable(),
|
|
1469
|
+
deletedBy: z.string().nullable(),
|
|
1470
|
+
isRoot: z.boolean()
|
|
1471
|
+
});
|
|
1472
|
+
const individualOutputSchema = z.object({
|
|
1473
|
+
id: z.uuid(),
|
|
1474
|
+
partyId: z.uuid(),
|
|
1475
|
+
internalId: z.string().nullable(),
|
|
1476
|
+
name: z.string(),
|
|
1477
|
+
surname: z.string(),
|
|
1478
|
+
email: z.string(),
|
|
1479
|
+
phone: z.string().nullable(),
|
|
1480
|
+
birthDate: z.string(),
|
|
1481
|
+
birthPlace: z.string().nullable(),
|
|
1482
|
+
countryOfBirth: z.enum(COUNTRY_CODES_2).nullable(),
|
|
1483
|
+
personalId: z.string(),
|
|
1484
|
+
gender: z.enum(GENDER),
|
|
1485
|
+
citizenship: z.enum(COUNTRY_CODES_2),
|
|
1486
|
+
citizenshipOther: z.enum(COUNTRY_CODES_2).nullable(),
|
|
1487
|
+
employer: z.string().nullable(),
|
|
1488
|
+
employerCountry: z.enum(COUNTRY_CODES_2).nullable(),
|
|
1489
|
+
registeredNumber: z.string().nullable(),
|
|
1490
|
+
isPep: z.boolean(),
|
|
1491
|
+
titleBefore: z.string().nullable(),
|
|
1492
|
+
titleAfter: z.string().nullable(),
|
|
1493
|
+
birthSurname: z.string().nullable(),
|
|
1494
|
+
vocativeTitle: z.string().nullable(),
|
|
1495
|
+
deathDate: z.iso.datetime().nullable(),
|
|
1496
|
+
deathNotification: z.iso.datetime().nullable(),
|
|
1497
|
+
pin: z.string().nullable(),
|
|
1498
|
+
stayAbroad: z.boolean().nullable(),
|
|
1499
|
+
stayAbroadCountries: z.enum(COUNTRY_CODES_2).nullable(),
|
|
1500
|
+
createdAt: z.iso.datetime().nullable(),
|
|
1501
|
+
updatedAt: z.iso.datetime().nullable(),
|
|
1502
|
+
identityDocuments: z.array(idDocumentOutputSchema).nullable()
|
|
1503
|
+
});
|
|
1504
|
+
const createOrganizationOutputSchema = z.object({
|
|
1505
|
+
partyId: z.uuid(),
|
|
1506
|
+
internalId: z.string().nullable(),
|
|
1507
|
+
businessName: z.string(),
|
|
1508
|
+
email: z.string().nullable(),
|
|
1509
|
+
phone: z.string().nullable(),
|
|
1510
|
+
registeredNumber: z.string(),
|
|
1511
|
+
registeredIn: z.enum(COUNTRY_CODES_2),
|
|
1512
|
+
operatesIn: z.enum(COUNTRY_CODES_2),
|
|
1513
|
+
presentIn: z.enum(COUNTRY_CODES_2),
|
|
1514
|
+
monthlyVolumeIn: z.number(),
|
|
1515
|
+
monthlyVolumeOut: z.number(),
|
|
1516
|
+
ownedBy: z.string(),
|
|
1517
|
+
companyObjects: z.array(z.enum(CZ_NACE_CODES)),
|
|
1518
|
+
annualTurnover: z.number(),
|
|
1519
|
+
numberOfEmployees: z.number().nullable(),
|
|
1520
|
+
prosecuted: z.string().nullable(),
|
|
1521
|
+
location: z.string().nullable(),
|
|
1522
|
+
fileNumber: z.string().nullable(),
|
|
1523
|
+
websiteUrl: z.string().nullable(),
|
|
1524
|
+
vatPayer: z.boolean(),
|
|
1525
|
+
companyObjectsDescription: z.string(),
|
|
1526
|
+
turnover3years: z.number(),
|
|
1527
|
+
operationCountries: z.string(),
|
|
1528
|
+
riskyBusinessType: z.string().nullable(),
|
|
1529
|
+
vatId: z.string().nullable(),
|
|
1530
|
+
court: z.enum(COURT).nullable(),
|
|
1531
|
+
registerUri: z.string().nullable()
|
|
1532
|
+
});
|
|
1533
|
+
const bankAccountOutputSchema = z.object({
|
|
1534
|
+
id: z.string(),
|
|
1535
|
+
partyId: z.uuid(),
|
|
1536
|
+
internalId: z.string().nullable(),
|
|
1537
|
+
holderName: z.string(),
|
|
1538
|
+
number: z.string().nullable(),
|
|
1539
|
+
bankCode: z.string().nullable(),
|
|
1540
|
+
currency: z.string(),
|
|
1541
|
+
countryCode: z.string(),
|
|
1542
|
+
iban: z.string().nullable(),
|
|
1543
|
+
address: z.string().nullable(),
|
|
1544
|
+
swiftBic: z.string().nullable(),
|
|
1545
|
+
bicCor: z.string().nullable(),
|
|
1546
|
+
routingNumber: z.string().nullable(),
|
|
1547
|
+
sortCode: z.string().nullable(),
|
|
1548
|
+
clabe: z.string().nullable(),
|
|
1549
|
+
bsb: z.string().nullable(),
|
|
1550
|
+
brBankNumber: z.string().nullable(),
|
|
1551
|
+
updatedAt: z.iso.datetime().nullable(),
|
|
1552
|
+
statementUri: z.string().nullable()
|
|
1553
|
+
});
|
|
1554
|
+
const disponentOutputSchema = z.discriminatedUnion("partyType", [
|
|
1555
|
+
z.object({
|
|
1556
|
+
partyType: z.literal("INDIVIDUAL"),
|
|
2845
1557
|
data: individualOutputSchema.nullable()
|
|
2846
1558
|
}),
|
|
2847
|
-
z
|
|
2848
|
-
partyType: z
|
|
1559
|
+
z.object({
|
|
1560
|
+
partyType: z.literal("ORGANIZATION"),
|
|
2849
1561
|
data: createOrganizationOutputSchema.nullable()
|
|
2850
1562
|
})
|
|
2851
1563
|
]);
|
|
2852
|
-
const createAddressOutputSchema = z
|
|
2853
|
-
id: z
|
|
2854
|
-
partyId: z
|
|
2855
|
-
internalId: z
|
|
2856
|
-
addressType: z
|
|
2857
|
-
street: z
|
|
2858
|
-
orientationNumber: z
|
|
2859
|
-
descriptiveNumber: z
|
|
2860
|
-
municipality: z
|
|
2861
|
-
municipalityPart: z
|
|
2862
|
-
zipCode: z
|
|
2863
|
-
district: z
|
|
2864
|
-
region: z
|
|
2865
|
-
countryCode: z
|
|
2866
|
-
ruianCode: z
|
|
2867
|
-
createdAt: z
|
|
2868
|
-
updatedAt: z
|
|
2869
|
-
});
|
|
2870
|
-
const businessPartnerOutputSchema = z
|
|
2871
|
-
name: z
|
|
2872
|
-
country: z
|
|
2873
|
-
cooperationReason: z
|
|
2874
|
-
});
|
|
2875
|
-
const foSourceOfWealthOutputSchema = z
|
|
2876
|
-
incomeSources: z
|
|
2877
|
-
incomeSourceOther: z
|
|
2878
|
-
monthlyIncome: z
|
|
2879
|
-
employer: z
|
|
2880
|
-
employerCountry: z
|
|
2881
|
-
});
|
|
2882
|
-
const businessSourceOfWealthOutputSchema = z
|
|
2883
|
-
financialFundsSources: z
|
|
2884
|
-
financialFundsSourceOther: z
|
|
2885
|
-
mainBusinessSubjects: z
|
|
2886
|
-
companyTurnover: z
|
|
2887
|
-
operatingCountries: z
|
|
2888
|
-
operatingCountriesOther: z
|
|
2889
|
-
businessPartners: z
|
|
2890
|
-
businessActivitiesNote: z
|
|
2891
|
-
});
|
|
2892
|
-
const createAmlOutputSchema = z
|
|
2893
|
-
id: z
|
|
2894
|
-
partyId: z
|
|
2895
|
-
internalId: z
|
|
2896
|
-
sourceOfWealth: z
|
|
1564
|
+
const createAddressOutputSchema = z.object({
|
|
1565
|
+
id: z.uuid(),
|
|
1566
|
+
partyId: z.uuid(),
|
|
1567
|
+
internalId: z.string().nullable(),
|
|
1568
|
+
addressType: z.enum(ADDRESS_TYPE),
|
|
1569
|
+
street: z.string().nullable(),
|
|
1570
|
+
orientationNumber: z.string().nullable(),
|
|
1571
|
+
descriptiveNumber: z.string().nullable(),
|
|
1572
|
+
municipality: z.string(),
|
|
1573
|
+
municipalityPart: z.string().nullable(),
|
|
1574
|
+
zipCode: z.string(),
|
|
1575
|
+
district: z.string().nullable(),
|
|
1576
|
+
region: z.string().nullable(),
|
|
1577
|
+
countryCode: z.enum(COUNTRY_CODES_2),
|
|
1578
|
+
ruianCode: z.string().nullable(),
|
|
1579
|
+
createdAt: z.iso.datetime().nullable(),
|
|
1580
|
+
updatedAt: z.iso.datetime().nullable()
|
|
1581
|
+
});
|
|
1582
|
+
const businessPartnerOutputSchema = z.object({
|
|
1583
|
+
name: z.string(),
|
|
1584
|
+
country: z.string(),
|
|
1585
|
+
cooperationReason: z.string().nullable()
|
|
1586
|
+
});
|
|
1587
|
+
const foSourceOfWealthOutputSchema = z.object({
|
|
1588
|
+
incomeSources: z.array(z.enum(INCOME_SOURCE)),
|
|
1589
|
+
incomeSourceOther: z.string().nullable(),
|
|
1590
|
+
monthlyIncome: z.enum(MONTHLY_INCOME_RANGE),
|
|
1591
|
+
employer: z.string().nullable(),
|
|
1592
|
+
employerCountry: z.string().nullable()
|
|
1593
|
+
});
|
|
1594
|
+
const businessSourceOfWealthOutputSchema = z.object({
|
|
1595
|
+
financialFundsSources: z.array(z.enum(FINANCIAL_FUNDS_SOURCE)),
|
|
1596
|
+
financialFundsSourceOther: z.string().nullable(),
|
|
1597
|
+
mainBusinessSubjects: z.array(z.enum(CZ_TRADE_LICENSE_CODES)),
|
|
1598
|
+
companyTurnover: z.enum(COMPANY_TURNOVER_RANGE),
|
|
1599
|
+
operatingCountries: z.array(z.enum(OPERATING_COUNTRY)),
|
|
1600
|
+
operatingCountriesOther: z.array(z.enum(COUNTRY_CODES_2)).nullable(),
|
|
1601
|
+
businessPartners: z.array(businessPartnerOutputSchema).nullable(),
|
|
1602
|
+
businessActivitiesNote: z.string().nullable()
|
|
1603
|
+
});
|
|
1604
|
+
const createAmlOutputSchema = z.object({
|
|
1605
|
+
id: z.uuid(),
|
|
1606
|
+
partyId: z.uuid(),
|
|
1607
|
+
internalId: z.string().nullable(),
|
|
1608
|
+
sourceOfWealth: z.union([
|
|
2897
1609
|
foSourceOfWealthOutputSchema,
|
|
2898
1610
|
businessSourceOfWealthOutputSchema
|
|
2899
1611
|
]),
|
|
2900
|
-
yearlyIncome: z
|
|
2901
|
-
sourceOfIncome: z
|
|
2902
|
-
incomeSourceOther: z
|
|
2903
|
-
servicePurposes: z
|
|
2904
|
-
servicePurposesOther: z
|
|
2905
|
-
taxDomicile: z
|
|
2906
|
-
taxDomicileCountry: z
|
|
2907
|
-
transactionType: z
|
|
2908
|
-
transactionTypeExpiry: z
|
|
2909
|
-
isDistraint: z
|
|
2910
|
-
estTxsVolumeMonth: z
|
|
2911
|
-
estTxsVolumeYear: z
|
|
2912
|
-
estTxsCountMonth: z
|
|
2913
|
-
tradingCountries: z
|
|
2914
|
-
tradingCountriesOther: z
|
|
2915
|
-
tradingSide: z
|
|
2916
|
-
acceptedAMLTermsAndConditions: z
|
|
2917
|
-
signatureMethod: z
|
|
2918
|
-
existencePeriod: z
|
|
2919
|
-
reputation: z
|
|
2920
|
-
riskBusinessAreas: z
|
|
2921
|
-
riskLevel: z
|
|
2922
|
-
kycStatus: z
|
|
2923
|
-
residencyAnswers: z
|
|
2924
|
-
z
|
|
2925
|
-
personName: z
|
|
2926
|
-
personRole: z
|
|
2927
|
-
answer: z
|
|
2928
|
-
country: z
|
|
1612
|
+
yearlyIncome: z.enum(YEARLY_INCOME),
|
|
1613
|
+
sourceOfIncome: z.array(z.enum(INCOME_SOURCE)),
|
|
1614
|
+
incomeSourceOther: z.string().nullable(),
|
|
1615
|
+
servicePurposes: z.array(z.enum(SERVICE_PURPOSE)).nullable(),
|
|
1616
|
+
servicePurposesOther: z.string().nullable(),
|
|
1617
|
+
taxDomicile: z.enum(TAX_DOMICILE).nullable(),
|
|
1618
|
+
taxDomicileCountry: z.enum(COUNTRY_CODES_2).nullable(),
|
|
1619
|
+
transactionType: z.string().nullable(),
|
|
1620
|
+
transactionTypeExpiry: z.iso.datetime().nullable(),
|
|
1621
|
+
isDistraint: z.boolean(),
|
|
1622
|
+
estTxsVolumeMonth: z.enum(EST_TXS_VOLUME_MONTH),
|
|
1623
|
+
estTxsVolumeYear: z.enum(EST_TXS_VOLUME_YEAR),
|
|
1624
|
+
estTxsCountMonth: z.number().int().nullable(),
|
|
1625
|
+
tradingCountries: z.array(z.enum(TARGET_COUNTRY)),
|
|
1626
|
+
tradingCountriesOther: z.array(z.enum(COUNTRY_CODES_2)).nullable(),
|
|
1627
|
+
tradingSide: z.enum(TRADING_SIDE),
|
|
1628
|
+
acceptedAMLTermsAndConditions: z.boolean(),
|
|
1629
|
+
signatureMethod: z.enum(SIGNATURE_METHOD).nullable(),
|
|
1630
|
+
existencePeriod: z.enum(EXISTENCE_PERIOD).nullable(),
|
|
1631
|
+
reputation: z.enum(REPUTATION).nullable(),
|
|
1632
|
+
riskBusinessAreas: z.array(z.enum(RISK_BUSINESS_AREA)).nullable(),
|
|
1633
|
+
riskLevel: z.enum(AML_SCORE_TYPE),
|
|
1634
|
+
kycStatus: z.enum(KYC_STATUS).nullable(),
|
|
1635
|
+
residencyAnswers: z.array(
|
|
1636
|
+
z.object({
|
|
1637
|
+
personName: z.string(),
|
|
1638
|
+
personRole: z.enum(PERSON_ROLE),
|
|
1639
|
+
answer: z.enum(YES_NO_UNKNOWN),
|
|
1640
|
+
country: z.enum(COUNTRY_CODES_2).nullable()
|
|
2929
1641
|
})
|
|
2930
1642
|
).nullable(),
|
|
2931
|
-
createdAt: z
|
|
2932
|
-
updatedAt: z
|
|
2933
|
-
});
|
|
2934
|
-
const ownerOutputSchema = z
|
|
2935
|
-
id: z
|
|
2936
|
-
name: z
|
|
2937
|
-
surname: z
|
|
2938
|
-
titleBefore: z
|
|
2939
|
-
titleAfter: z
|
|
2940
|
-
email: z
|
|
2941
|
-
birthDate: z
|
|
2942
|
-
birthPlace: z
|
|
2943
|
-
personalId: z
|
|
2944
|
-
gender: z
|
|
2945
|
-
citizenship: z
|
|
2946
|
-
isPep: z
|
|
2947
|
-
sharePercentage: z
|
|
2948
|
-
shareEstablishedAt: z
|
|
1643
|
+
createdAt: z.iso.datetime().nullable(),
|
|
1644
|
+
updatedAt: z.iso.datetime().nullable()
|
|
1645
|
+
});
|
|
1646
|
+
const ownerOutputSchema = z.object({
|
|
1647
|
+
id: z.uuid().optional(),
|
|
1648
|
+
name: z.string(),
|
|
1649
|
+
surname: z.string(),
|
|
1650
|
+
titleBefore: z.string().nullable(),
|
|
1651
|
+
titleAfter: z.string().nullable(),
|
|
1652
|
+
email: z.string(),
|
|
1653
|
+
birthDate: z.string(),
|
|
1654
|
+
birthPlace: z.string().nullable(),
|
|
1655
|
+
personalId: z.string(),
|
|
1656
|
+
gender: z.enum(GENDER),
|
|
1657
|
+
citizenship: z.enum(COUNTRY_CODES_2),
|
|
1658
|
+
isPep: z.boolean(),
|
|
1659
|
+
sharePercentage: z.number().nullable(),
|
|
1660
|
+
shareEstablishedAt: z.string().nullable(),
|
|
2949
1661
|
address: createAddressOutputSchema.nullable()
|
|
2950
1662
|
});
|
|
2951
|
-
const legalRepresentativeOutputSchema = z
|
|
2952
|
-
id: z
|
|
2953
|
-
name: z
|
|
2954
|
-
surname: z
|
|
2955
|
-
titleBefore: z
|
|
2956
|
-
titleAfter: z
|
|
2957
|
-
email: z
|
|
2958
|
-
birthDate: z
|
|
2959
|
-
birthPlace: z
|
|
2960
|
-
personalId: z
|
|
2961
|
-
gender: z
|
|
2962
|
-
citizenship: z
|
|
2963
|
-
isPep: z
|
|
2964
|
-
phone: z
|
|
2965
|
-
pin: z
|
|
2966
|
-
dateOfEstablishment: z
|
|
1663
|
+
const legalRepresentativeOutputSchema = z.object({
|
|
1664
|
+
id: z.uuid().optional(),
|
|
1665
|
+
name: z.string(),
|
|
1666
|
+
surname: z.string(),
|
|
1667
|
+
titleBefore: z.string().nullable(),
|
|
1668
|
+
titleAfter: z.string().nullable(),
|
|
1669
|
+
email: z.string(),
|
|
1670
|
+
birthDate: z.string(),
|
|
1671
|
+
birthPlace: z.string().nullable(),
|
|
1672
|
+
personalId: z.string(),
|
|
1673
|
+
gender: z.enum(GENDER),
|
|
1674
|
+
citizenship: z.enum(COUNTRY_CODES_2),
|
|
1675
|
+
isPep: z.boolean(),
|
|
1676
|
+
phone: z.string().nullable(),
|
|
1677
|
+
pin: z.string().nullable(),
|
|
1678
|
+
dateOfEstablishment: z.string().nullable(),
|
|
2967
1679
|
address: createAddressOutputSchema.nullable()
|
|
2968
1680
|
});
|
|
2969
|
-
const productsOutputSchema = z
|
|
2970
|
-
txs: z
|
|
2971
|
-
fee: z
|
|
2972
|
-
margin: z
|
|
2973
|
-
reportingEmail: z
|
|
2974
|
-
clientType: z
|
|
1681
|
+
const productsOutputSchema = z.object({
|
|
1682
|
+
txs: z.object({
|
|
1683
|
+
fee: z.number(),
|
|
1684
|
+
margin: z.number(),
|
|
1685
|
+
reportingEmail: z.string().nullable(),
|
|
1686
|
+
clientType: z.enum(TXS_CLIENT_TYPE).nullable()
|
|
2975
1687
|
}).nullable(),
|
|
2976
|
-
cbs: z
|
|
1688
|
+
cbs: z.object({}).nullable()
|
|
2977
1689
|
});
|
|
2978
1690
|
const recipientOutputSchema = bankAccountOutputSchema.omit({
|
|
2979
1691
|
statementUri: true
|
|
2980
1692
|
});
|
|
2981
|
-
const partyOutputSchema = z
|
|
1693
|
+
const partyOutputSchema = z.object({
|
|
2982
1694
|
party: partyBaseOutputSchema.nullable(),
|
|
2983
1695
|
personalData: individualOutputSchema.nullable(),
|
|
2984
1696
|
organizationData: createOrganizationOutputSchema.nullable(),
|
|
2985
|
-
bankAccounts: z
|
|
2986
|
-
disponents: z
|
|
2987
|
-
addresses: z
|
|
1697
|
+
bankAccounts: z.array(bankAccountOutputSchema).nullable(),
|
|
1698
|
+
disponents: z.array(disponentOutputSchema).nullable(),
|
|
1699
|
+
addresses: z.array(createAddressOutputSchema).nullable(),
|
|
2988
1700
|
aml: createAmlOutputSchema.nullable(),
|
|
2989
|
-
recipients: z
|
|
1701
|
+
recipients: z.array(recipientOutputSchema).nullable(),
|
|
2990
1702
|
products: productsOutputSchema.nullable(),
|
|
2991
|
-
traderIds: z
|
|
2992
|
-
owners: z
|
|
2993
|
-
legalRepresentatives: z
|
|
1703
|
+
traderIds: z.array(z.uuid()).nullable(),
|
|
1704
|
+
owners: z.array(ownerOutputSchema).nullable(),
|
|
1705
|
+
legalRepresentatives: z.array(legalRepresentativeOutputSchema).nullable()
|
|
2994
1706
|
});
|
|
2995
|
-
const responseBodySchema$2 = z
|
|
2996
|
-
message: z
|
|
1707
|
+
const responseBodySchema$2 = z.object({
|
|
1708
|
+
message: z.string(),
|
|
2997
1709
|
party: partyOutputSchema
|
|
2998
1710
|
});
|
|
2999
1711
|
const getPartyByPartyIdRoute = createRoute({
|
|
@@ -3003,7 +1715,7 @@ const getPartyByPartyIdRoute = createRoute({
|
|
|
3003
1715
|
tags: ["Parties"],
|
|
3004
1716
|
description: "Retrieves a single party aggregate by its ID, including all related data \u2014 personal/organization info, bank accounts, addresses, disponents, AML, recipients, and products.",
|
|
3005
1717
|
request: {
|
|
3006
|
-
params: z
|
|
1718
|
+
params: z.object({ partyId: z.uuid() })
|
|
3007
1719
|
},
|
|
3008
1720
|
responses: {
|
|
3009
1721
|
200: {
|
|
@@ -3035,7 +1747,16 @@ new OpenAPIHono().openapi(
|
|
|
3035
1747
|
}
|
|
3036
1748
|
);
|
|
3037
1749
|
|
|
3038
|
-
const
|
|
1750
|
+
const paginationAndSearchSchema = z.object({
|
|
1751
|
+
page: z.coerce.number().positive().default(1),
|
|
1752
|
+
limit: z.coerce.number().positive().default(20),
|
|
1753
|
+
column: z.string(),
|
|
1754
|
+
direction: z.enum(["asc", "desc"]),
|
|
1755
|
+
search: z.string().optional(),
|
|
1756
|
+
ids: z.string().array().optional(),
|
|
1757
|
+
includeDeleted: z.string().transform((v) => v === "true").optional()
|
|
1758
|
+
});
|
|
1759
|
+
const partiesOutputDataSchema = z.array(partyOutputSchema);
|
|
3039
1760
|
const getPartiesRoute = createRoute({
|
|
3040
1761
|
method: "get",
|
|
3041
1762
|
path: "/",
|
|
@@ -3048,18 +1769,18 @@ const getPartiesRoute = createRoute({
|
|
|
3048
1769
|
description: "Internal Server Error",
|
|
3049
1770
|
content: {
|
|
3050
1771
|
"application/json": {
|
|
3051
|
-
schema:
|
|
1772
|
+
schema: z.object({ message: z.string() })
|
|
3052
1773
|
}
|
|
3053
1774
|
}
|
|
3054
1775
|
},
|
|
3055
1776
|
200: {
|
|
3056
1777
|
content: {
|
|
3057
1778
|
"application/json": {
|
|
3058
|
-
schema: z
|
|
3059
|
-
message: z
|
|
3060
|
-
data: z
|
|
1779
|
+
schema: z.object({
|
|
1780
|
+
message: z.string(),
|
|
1781
|
+
data: z.object({
|
|
3061
1782
|
parties: partiesOutputDataSchema,
|
|
3062
|
-
totalCount: z
|
|
1783
|
+
totalCount: z.number()
|
|
3063
1784
|
})
|
|
3064
1785
|
})
|
|
3065
1786
|
}
|
|
@@ -3071,50 +1792,30 @@ const getPartiesRoute = createRoute({
|
|
|
3071
1792
|
new OpenAPIHono().openapi(
|
|
3072
1793
|
getPartiesRoute,
|
|
3073
1794
|
async (context) => {
|
|
3074
|
-
const
|
|
3075
|
-
const validatedQuery = {
|
|
3076
|
-
page: query.page ? Number(query.page) : 1,
|
|
3077
|
-
limit: query.limit ? Number(query.limit) : 10,
|
|
3078
|
-
column: query.column || "createdAt",
|
|
3079
|
-
direction: query.direction || "desc",
|
|
3080
|
-
search: query.search,
|
|
3081
|
-
ids: query.ids ? Array.isArray(query.ids) ? query.ids : [query.ids] : void 0
|
|
3082
|
-
};
|
|
1795
|
+
const validatedQuery = context.req.valid("query");
|
|
3083
1796
|
const {
|
|
3084
1797
|
data: parties,
|
|
3085
1798
|
error,
|
|
3086
|
-
message
|
|
3087
|
-
status
|
|
1799
|
+
message
|
|
3088
1800
|
} = await context.env.MASTER_DATA_MANAGEMENT_SERVICE.getParties(
|
|
3089
1801
|
validatedQuery
|
|
3090
1802
|
);
|
|
3091
1803
|
if (error || !parties) {
|
|
3092
|
-
return context.json(
|
|
3093
|
-
{
|
|
3094
|
-
message: "Failed to get parties",
|
|
3095
|
-
data: null,
|
|
3096
|
-
errorDetail: {
|
|
3097
|
-
message,
|
|
3098
|
-
code: status
|
|
3099
|
-
},
|
|
3100
|
-
error: true
|
|
3101
|
-
},
|
|
3102
|
-
500
|
|
3103
|
-
);
|
|
1804
|
+
return context.json({ message: message || "Failed to get parties" }, 500);
|
|
3104
1805
|
}
|
|
3105
1806
|
return context.json({ message, data: parties }, 200);
|
|
3106
1807
|
}
|
|
3107
1808
|
);
|
|
3108
1809
|
|
|
3109
|
-
const XIdempotencyKeyHeaderSchema = z
|
|
1810
|
+
const XIdempotencyKeyHeaderSchema = z.string().openapi({
|
|
3110
1811
|
description: "Unique identifier header to ensure the request is processed only once.",
|
|
3111
1812
|
example: "4ac15c22-2bd3-426f-b915-bfd5febdb7df"
|
|
3112
1813
|
});
|
|
3113
|
-
const XSignatureHeaderSchema = z
|
|
1814
|
+
const XSignatureHeaderSchema = z.string().openapi({
|
|
3114
1815
|
description: "Payload signature header to verify request body integrity.",
|
|
3115
1816
|
example: "FIXAxHO6QqH3M7t4MatM8U6l/nIqWj7jIEW2U6/771MGUorSywy+GmKIG3B1mxT1jR7qPtBHQ5YSO8O53iCvOh6kIhbGXtVe/3C61dsEykLbmntV3nF4DY8/HyfF8a6c2Asc5bvgHrhosGi3s/ouoNowMpsckyq66We8H5gRbXlqJm4Bl1zWWQah4aQLX548L8DLx5+EIgArNMVVG8ryCES99aovJBKrQQMpQLwss1sSFuUZ1kdBCodtvxgTOXOugnZ1UNCmUNFXryQ6bn7wY7Punml/rwR/zTQ9j4SX07iFeQC5rgm9/zi29DBluegu+b8/G8oXrf6L4hugbMEKJfLRfKjNHCrjCooKtInoYxwNEfJyJ9mhqdBoeIBca9zgPpewdbwFLXVV82TYR+xZiywDcHKQ62IzQp07NOMCl4xArSJ3vIWUftSYpLIwomyjQEbY27oGiubUF4krEKgHnMYalCn0ruYOwFik2Pa6FEfIZo0TSXDC24UHQb5mJNPYpv2hny7U5CZPmBvjaRGMVnE+WgRUT19cwqlSL3pWAfeSn1Wro7lYBp/PmlRPgYIxl9GJwNlQ0G+NzP9cMSJbmI5fwErDNgJAaPaMwZbJ3y8ikmbBkkXNPKvQrWVGCJ4nP+/f8yYzMZq272EFx984pSoo2yAeBJnrxbW+AlZxyIo="
|
|
3116
1817
|
});
|
|
3117
|
-
const XSignatureKeyHeaderSchema = z
|
|
1818
|
+
const XSignatureKeyHeaderSchema = z.string().openapi({
|
|
3118
1819
|
description: "Signature key identifier header to specify which key was used for payload signing.",
|
|
3119
1820
|
example: "ixtal"
|
|
3120
1821
|
});
|
|
@@ -3123,30 +1824,30 @@ const ALLOWED_ID_DOCUMENTS_FILTERS = {
|
|
|
3123
1824
|
ISSUER: "filterIdDocumentIssuer"
|
|
3124
1825
|
};
|
|
3125
1826
|
|
|
3126
|
-
const idDocumentsListOutputSchema = z
|
|
3127
|
-
totalCount: z
|
|
3128
|
-
idDocuments: z
|
|
1827
|
+
const idDocumentsListOutputSchema = z.object({
|
|
1828
|
+
totalCount: z.number(),
|
|
1829
|
+
idDocuments: z.array(idDocumentOutputSchema)
|
|
3129
1830
|
});
|
|
3130
|
-
const paramsSchema$1 = z
|
|
3131
|
-
partyId: z
|
|
1831
|
+
const paramsSchema$1 = z.object({
|
|
1832
|
+
partyId: z.uuid()
|
|
3132
1833
|
});
|
|
3133
|
-
const arrayQuery = (schema) => z
|
|
1834
|
+
const arrayQuery = (schema) => z.preprocess((val) => {
|
|
3134
1835
|
if (typeof val === "string") {
|
|
3135
1836
|
return val.includes(",") ? val.split(",") : [val];
|
|
3136
1837
|
}
|
|
3137
1838
|
return val;
|
|
3138
1839
|
}, schema.array()).optional();
|
|
3139
|
-
const querySchema = z
|
|
3140
|
-
page: z
|
|
3141
|
-
limit: z
|
|
3142
|
-
sortColumn: z
|
|
3143
|
-
sortDirection: z
|
|
3144
|
-
[ALLOWED_ID_DOCUMENTS_FILTERS.PARTY_ID]: arrayQuery(z
|
|
3145
|
-
[ALLOWED_ID_DOCUMENTS_FILTERS.ISSUER]: arrayQuery(z
|
|
3146
|
-
search: z
|
|
3147
|
-
});
|
|
3148
|
-
const responseBodySchema$1 = z
|
|
3149
|
-
message: z
|
|
1840
|
+
const querySchema = z.object({
|
|
1841
|
+
page: z.coerce.number().positive().default(1),
|
|
1842
|
+
limit: z.coerce.number().positive().default(20),
|
|
1843
|
+
sortColumn: z.string().default("updatedAt"),
|
|
1844
|
+
sortDirection: z.enum(["asc", "desc"]).default("desc"),
|
|
1845
|
+
[ALLOWED_ID_DOCUMENTS_FILTERS.PARTY_ID]: arrayQuery(z.uuid()),
|
|
1846
|
+
[ALLOWED_ID_DOCUMENTS_FILTERS.ISSUER]: arrayQuery(z.string()),
|
|
1847
|
+
search: z.string().optional()
|
|
1848
|
+
});
|
|
1849
|
+
const responseBodySchema$1 = z.object({
|
|
1850
|
+
message: z.string(),
|
|
3150
1851
|
idDocumentsList: idDocumentsListOutputSchema
|
|
3151
1852
|
});
|
|
3152
1853
|
const getIdDocumentsListRoute = createRoute({
|
|
@@ -3172,7 +1873,7 @@ const getIdDocumentsListRoute = createRoute({
|
|
|
3172
1873
|
description: "ID documents not found",
|
|
3173
1874
|
content: {
|
|
3174
1875
|
"application/json": {
|
|
3175
|
-
schema: z
|
|
1876
|
+
schema: z.object({ message: z.string() })
|
|
3176
1877
|
}
|
|
3177
1878
|
}
|
|
3178
1879
|
},
|
|
@@ -3180,7 +1881,7 @@ const getIdDocumentsListRoute = createRoute({
|
|
|
3180
1881
|
description: "Internal server error",
|
|
3181
1882
|
content: {
|
|
3182
1883
|
"application/json": {
|
|
3183
|
-
schema: z
|
|
1884
|
+
schema: z.object({ message: z.string() })
|
|
3184
1885
|
}
|
|
3185
1886
|
}
|
|
3186
1887
|
}
|
|
@@ -3216,24 +1917,24 @@ new OpenAPIHono().openapi(
|
|
|
3216
1917
|
}
|
|
3217
1918
|
);
|
|
3218
1919
|
|
|
3219
|
-
const paramsSchema = z
|
|
3220
|
-
id: z
|
|
3221
|
-
});
|
|
3222
|
-
const idDocumentUpdateInputSchema = z
|
|
3223
|
-
partyId: z
|
|
3224
|
-
idDocType: z
|
|
3225
|
-
idDocNumber: z
|
|
3226
|
-
idDocHolderName: z
|
|
3227
|
-
issueDate: z
|
|
3228
|
-
expirationDate: z
|
|
3229
|
-
issuer: z
|
|
3230
|
-
countryOfIssue: z
|
|
3231
|
-
frontImageUri: z
|
|
3232
|
-
backImageUri: z
|
|
3233
|
-
idDocStatus: z
|
|
3234
|
-
});
|
|
3235
|
-
const responseBodySchema = z
|
|
3236
|
-
message: z
|
|
1920
|
+
const paramsSchema = z.object({
|
|
1921
|
+
id: z.uuid()
|
|
1922
|
+
});
|
|
1923
|
+
const idDocumentUpdateInputSchema = z.object({
|
|
1924
|
+
partyId: z.uuid().optional(),
|
|
1925
|
+
idDocType: z.enum(ID_DOC_TYPE).optional(),
|
|
1926
|
+
idDocNumber: z.string().optional(),
|
|
1927
|
+
idDocHolderName: z.string().optional(),
|
|
1928
|
+
issueDate: z.coerce.date().optional(),
|
|
1929
|
+
expirationDate: z.coerce.date().optional(),
|
|
1930
|
+
issuer: z.string().optional(),
|
|
1931
|
+
countryOfIssue: z.enum(COUNTRY_CODES_2).optional(),
|
|
1932
|
+
frontImageUri: z.string().optional(),
|
|
1933
|
+
backImageUri: z.string().optional(),
|
|
1934
|
+
idDocStatus: z.enum(ID_DOC_STATUS).optional()
|
|
1935
|
+
});
|
|
1936
|
+
const responseBodySchema = z.object({
|
|
1937
|
+
message: z.string(),
|
|
3237
1938
|
idDocument: idDocumentOutputSchema
|
|
3238
1939
|
});
|
|
3239
1940
|
const updateIdDocumentRoute = createRoute({
|
|
@@ -3245,7 +1946,7 @@ const updateIdDocumentRoute = createRoute({
|
|
|
3245
1946
|
middleware: [jwt, signature(), idempotency()],
|
|
3246
1947
|
security: [{ JwtAuth: [] }],
|
|
3247
1948
|
request: {
|
|
3248
|
-
headers: z
|
|
1949
|
+
headers: z.object({
|
|
3249
1950
|
"X-Idempotency-Key": XIdempotencyKeyHeaderSchema,
|
|
3250
1951
|
"X-Signature": XSignatureHeaderSchema,
|
|
3251
1952
|
"X-Signature-Key": XSignatureKeyHeaderSchema
|
|
@@ -3273,7 +1974,7 @@ const updateIdDocumentRoute = createRoute({
|
|
|
3273
1974
|
description: "ID document not found",
|
|
3274
1975
|
content: {
|
|
3275
1976
|
"application/json": {
|
|
3276
|
-
schema: z
|
|
1977
|
+
schema: z.object({ message: z.string() })
|
|
3277
1978
|
}
|
|
3278
1979
|
}
|
|
3279
1980
|
},
|
|
@@ -3281,7 +1982,7 @@ const updateIdDocumentRoute = createRoute({
|
|
|
3281
1982
|
description: "Internal server error",
|
|
3282
1983
|
content: {
|
|
3283
1984
|
"application/json": {
|
|
3284
|
-
schema: z
|
|
1985
|
+
schema: z.object({ message: z.string() })
|
|
3285
1986
|
}
|
|
3286
1987
|
}
|
|
3287
1988
|
}
|
|
@@ -3317,8 +2018,8 @@ new OpenAPIHono().openapi(
|
|
|
3317
2018
|
}
|
|
3318
2019
|
);
|
|
3319
2020
|
|
|
3320
|
-
const messageResponseSchema = z
|
|
3321
|
-
message: z
|
|
2021
|
+
const messageResponseSchema = z.object({
|
|
2022
|
+
message: z.string()
|
|
3322
2023
|
});
|
|
3323
2024
|
|
|
3324
|
-
export { ADDRESS_TYPE$1 as ADDRESS_TYPE, AML_SCORE_TYPE$1 as AML_SCORE_TYPE, CLIENT_STATUS_ACTION, COMPANY_TURNOVER_RANGE$1 as COMPANY_TURNOVER_RANGE, CONTACT_TYPE
|
|
2025
|
+
export { ADDRESS_TYPE$1 as ADDRESS_TYPE, AML_SCORE_TYPE$1 as AML_SCORE_TYPE, CLIENT_STATUS_ACTION, COMPANY_TURNOVER_RANGE$1 as COMPANY_TURNOVER_RANGE, CONTACT_TYPE, CUSTOMER_STATUS$1 as CUSTOMER_STATUS, DOCUMENT_SIDE, EST_TXS_VOLUME_MONTH$1 as EST_TXS_VOLUME_MONTH, EST_TXS_VOLUME_YEAR$1 as EST_TXS_VOLUME_YEAR, EXISTENCE_PERIOD$1 as EXISTENCE_PERIOD, FINANCIAL_FUNDS_SOURCE$1 as FINANCIAL_FUNDS_SOURCE, GENDER$1 as GENDER, IDENTIFICATION_TYPE, ID_DOC_STATUS$1 as ID_DOC_STATUS, ID_DOC_TYPE$1 as ID_DOC_TYPE, INCOME_SOURCE$1 as INCOME_SOURCE, KYC_STATUS$1 as KYC_STATUS, MONTHLY_INCOME_RANGE$1 as MONTHLY_INCOME_RANGE, OPERATING_COUNTRY$1 as OPERATING_COUNTRY, PARTY_RELATIONSHIP_TYPE, PARTY_TYPE$1 as PARTY_TYPE, PRODUCT_TYPE, REPUTATION$1 as REPUTATION, RISK_BUSINESS_AREA$1 as RISK_BUSINESS_AREA, SERVICE_PURPOSE$1 as SERVICE_PURPOSE, SERVICE_PURPOSE_COMPANY, SERVICE_PURPOSE_FO, SIGNATURE_METHOD$1 as SIGNATURE_METHOD, TARGET_COUNTRY$1 as TARGET_COUNTRY, TAX_DOMICILE$1 as TAX_DOMICILE, TRADER_TYPE, TRADING_SIDE$1 as TRADING_SIDE, TXS_CLIENT_TYPE$1 as TXS_CLIENT_TYPE, YEARLY_INCOME$1 as YEARLY_INCOME, YES_NO_UNKNOWN$1 as YES_NO_UNKNOWN, createMdmClient, createPartyInputSchema, idDocumentCreateInputSchema, idDocumentMultipartSchema, idDocumentOutputSchema, idDocumentUpdateInputSchema, idDocumentsListOutputSchema, messageResponseSchema, partiesOutputDataSchema, partyCreateOutputSchema, partyOutputSchema, partySchema$1 as partySchema, partyUpdateInputSchema, productsInputSchema$1 as productsInputSchema, productsOutputSchema, updatePartyOuputSchema };
|