@devizovaburza/mdm-sdk 1.2.0 → 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 -2328
- package/package.json +1 -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,1486 +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
|
-
parentTraderId: z.uuid().optional().or(z.literal("null"))
|
|
1396
|
-
});
|
|
1397
|
-
|
|
1398
|
-
z.object({
|
|
1399
|
-
id: z.uuid()
|
|
1400
|
-
});
|
|
1401
|
-
|
|
1402
|
-
z.object({
|
|
1403
|
-
traderId: z.uuid(),
|
|
1404
|
-
clientId: z.uuid()
|
|
1405
|
-
});
|
|
1406
|
-
z.object({
|
|
1407
|
-
id: z.uuid()
|
|
1408
|
-
});
|
|
1409
|
-
|
|
1410
|
-
z.object({
|
|
1411
|
-
recipient: recipientInsertSchema,
|
|
1412
|
-
partyId: z.string().uuid()
|
|
1413
|
-
});
|
|
1414
|
-
|
|
1415
|
-
z.object({
|
|
1416
|
-
recipient: recipientUpdateSchema
|
|
1417
|
-
});
|
|
1418
|
-
|
|
1419
|
-
z.object({
|
|
1420
|
-
id: z.uuid()
|
|
1421
|
-
});
|
|
1422
|
-
|
|
1423
|
-
const ALLOWED_RECIPIENTS_FILTERS = {
|
|
1424
|
-
NAME: "filterRecipientName",
|
|
1425
|
-
BANK_CODE: "filterRecipientBankCode",
|
|
1426
|
-
CURRENCY: "filterRecipientCurrency"
|
|
1427
|
-
};
|
|
1428
|
-
z.object({
|
|
1429
|
-
page: z.number().positive(),
|
|
1430
|
-
limit: z.number().positive(),
|
|
1431
|
-
sort: z.object({
|
|
1432
|
-
column: z.string(),
|
|
1433
|
-
direction: z.enum(["asc", "desc"])
|
|
1434
|
-
}),
|
|
1435
|
-
[ALLOWED_RECIPIENTS_FILTERS.NAME]: z.union([z.string(), z.string().array()]).optional(),
|
|
1436
|
-
[ALLOWED_RECIPIENTS_FILTERS.BANK_CODE]: z.union([z.enum(BANK_CODES), z.enum(BANK_CODES).array()]).optional(),
|
|
1437
|
-
[ALLOWED_RECIPIENTS_FILTERS.CURRENCY]: z.union([z.enum(CURRENCY_CODES), z.enum(CURRENCY_CODES).array()]).optional(),
|
|
1438
|
-
search: z.string().optional()
|
|
1439
|
-
});
|
|
1440
|
-
|
|
1441
|
-
z.object({
|
|
1442
|
-
id: z.uuid()
|
|
1443
|
-
});
|
|
1444
|
-
|
|
1445
|
-
z.object({
|
|
1446
|
-
bankAccount: bankAccountInsertSchema,
|
|
1447
|
-
partyId: z.string().uuid()
|
|
1448
|
-
});
|
|
1449
|
-
|
|
1450
|
-
z.object({
|
|
1451
|
-
bankAccount: bankAccountUpsertSchema
|
|
1452
|
-
});
|
|
1453
|
-
|
|
1454
|
-
z.object({
|
|
1455
|
-
id: z.uuid()
|
|
1456
|
-
});
|
|
1457
|
-
|
|
1458
|
-
z.object({
|
|
1459
|
-
id: z.uuid()
|
|
1460
|
-
});
|
|
1461
|
-
|
|
1462
|
-
z.object({
|
|
1463
|
-
address: addressInsertSchema,
|
|
1464
|
-
partyId: z.uuid()
|
|
1465
|
-
});
|
|
1466
|
-
|
|
1467
|
-
z.object({
|
|
1468
|
-
address: addressUpdateSchema
|
|
1469
|
-
});
|
|
1470
|
-
|
|
1471
|
-
z.object({
|
|
1472
|
-
id: z.uuid()
|
|
1473
|
-
});
|
|
1474
|
-
|
|
1475
|
-
z.object({
|
|
1476
|
-
id: z.uuid()
|
|
1477
|
-
});
|
|
1478
|
-
|
|
1479
|
-
z.object({
|
|
1480
|
-
contact: contactInsertSchema,
|
|
1481
|
-
partyId: z.string().uuid()
|
|
1482
|
-
});
|
|
1483
|
-
|
|
1484
|
-
z.object({
|
|
1485
|
-
contact: contactUpdateSchema
|
|
1486
|
-
});
|
|
1487
|
-
|
|
1488
|
-
z.object({
|
|
1489
|
-
idDocument: idDocumentInsertSchema,
|
|
1490
|
-
partyId: z.string()
|
|
1491
|
-
});
|
|
1492
|
-
|
|
1493
|
-
z.object({
|
|
1494
|
-
idDocument: idDocumentUpdateSchema
|
|
1495
|
-
});
|
|
1496
|
-
|
|
1497
|
-
z.object({
|
|
1498
|
-
id: z.uuid()
|
|
1499
|
-
});
|
|
1500
|
-
|
|
1501
|
-
const ALLOWED_ID_DOCUMENTS_FILTERS$1 = {
|
|
1502
|
-
PARTY_ID: "filterIdDocumentPartyId",
|
|
1503
|
-
ISSUER: "filterIdDocumentIssuer"
|
|
1504
|
-
};
|
|
1505
|
-
z.object({
|
|
1506
|
-
pagination: z.object({
|
|
1507
|
-
page: z.number().positive(),
|
|
1508
|
-
limit: z.number().positive(),
|
|
1509
|
-
sort: z.object({
|
|
1510
|
-
column: z.string(),
|
|
1511
|
-
direction: z.enum(["asc", "desc"])
|
|
1512
|
-
}),
|
|
1513
|
-
[ALLOWED_ID_DOCUMENTS_FILTERS$1.PARTY_ID]: z.union([z.uuid(), z.uuid().array()]).optional(),
|
|
1514
|
-
[ALLOWED_ID_DOCUMENTS_FILTERS$1.ISSUER]: z.union([z.string(), z.string().array()]).optional(),
|
|
1515
|
-
search: z.string().optional()
|
|
1516
|
-
})
|
|
1517
|
-
});
|
|
1518
|
-
|
|
1519
|
-
z.object({
|
|
1520
|
-
id: z.uuid()
|
|
1521
|
-
});
|
|
1522
|
-
|
|
1523
|
-
z.object({
|
|
1524
|
-
individual: individualInsertSchema$1
|
|
1525
|
-
});
|
|
1526
|
-
|
|
1527
|
-
z.object({
|
|
1528
|
-
individual: individualInsertSchema$1
|
|
1529
|
-
});
|
|
1530
|
-
|
|
1531
|
-
z.object({
|
|
1532
|
-
id: z.uuid()
|
|
1533
|
-
});
|
|
1534
|
-
|
|
1535
|
-
z.object({
|
|
1536
|
-
id: z.uuid()
|
|
1537
|
-
});
|
|
1538
|
-
|
|
1539
|
-
z.object({
|
|
1540
|
-
id: z.uuid()
|
|
1541
|
-
});
|
|
1542
|
-
|
|
1543
|
-
z.object({
|
|
1544
|
-
id: z.uuid()
|
|
1545
|
-
});
|
|
1546
|
-
|
|
1547
|
-
z.object({
|
|
1548
|
-
id: z.uuid()
|
|
1549
|
-
});
|
|
1550
|
-
|
|
1551
|
-
z.object({
|
|
1552
|
-
id: z.uuid()
|
|
1553
|
-
});
|
|
1554
|
-
|
|
1555
|
-
z.object({
|
|
1556
|
-
id: z.uuid()
|
|
1557
|
-
});
|
|
1558
|
-
z.object({
|
|
1559
|
-
disponents: disponentsSelectSchema
|
|
1560
|
-
});
|
|
1561
|
-
|
|
1562
|
-
z.object({
|
|
1563
|
-
party: partyInsertSchema
|
|
1564
|
-
});
|
|
1565
|
-
|
|
1566
|
-
z.object({
|
|
1567
|
-
party: partyInsertSchema
|
|
1568
|
-
});
|
|
1569
|
-
|
|
1570
|
-
z.object({
|
|
1571
|
-
id: z.uuid()
|
|
1572
|
-
});
|
|
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
|
+
];
|
|
1573
165
|
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
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
|
+
];
|
|
1577
294
|
|
|
1578
295
|
z.object({
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
});
|
|
1585
|
-
|
|
1586
|
-
const routeError = z$1.object({
|
|
1587
|
-
message: z$1.string(),
|
|
1588
|
-
data: z$1.null(),
|
|
1589
|
-
errorDetail: z$1.object({
|
|
1590
|
-
message: z$1.string(),
|
|
1591
|
-
code: z$1.number()
|
|
296
|
+
message: z.string(),
|
|
297
|
+
data: z.null(),
|
|
298
|
+
errorDetail: z.object({
|
|
299
|
+
message: z.string(),
|
|
300
|
+
code: z.number()
|
|
1592
301
|
}).optional(),
|
|
1593
|
-
error: z
|
|
302
|
+
error: z.boolean()
|
|
1594
303
|
});
|
|
1595
304
|
const errorResponse = (entityName, action = "creation") => ({
|
|
1596
305
|
404: {
|
|
1597
306
|
content: {
|
|
1598
307
|
"application/json": {
|
|
1599
|
-
schema: z
|
|
1600
|
-
message: z
|
|
1601
|
-
stackTrace: z
|
|
308
|
+
schema: z.object({
|
|
309
|
+
message: z.string(),
|
|
310
|
+
stackTrace: z.string().optional()
|
|
1602
311
|
})
|
|
1603
312
|
}
|
|
1604
313
|
},
|
|
@@ -1607,9 +316,9 @@ const errorResponse = (entityName, action = "creation") => ({
|
|
|
1607
316
|
500: {
|
|
1608
317
|
content: {
|
|
1609
318
|
"application/json": {
|
|
1610
|
-
schema: z
|
|
1611
|
-
message: z
|
|
1612
|
-
stackTrace: z
|
|
319
|
+
schema: z.object({
|
|
320
|
+
message: z.string(),
|
|
321
|
+
stackTrace: z.string().optional()
|
|
1613
322
|
})
|
|
1614
323
|
}
|
|
1615
324
|
},
|
|
@@ -1617,265 +326,265 @@ const errorResponse = (entityName, action = "creation") => ({
|
|
|
1617
326
|
}
|
|
1618
327
|
});
|
|
1619
328
|
|
|
1620
|
-
const partySchema$1 = z
|
|
1621
|
-
partyType: z
|
|
1622
|
-
language: z
|
|
1623
|
-
id: z
|
|
1624
|
-
internalId: z
|
|
1625
|
-
note: z
|
|
1626
|
-
countryCode: z
|
|
1627
|
-
});
|
|
1628
|
-
const idDocumentInputSchema$1 = z
|
|
1629
|
-
idDocType: z
|
|
1630
|
-
idDocNumber: z
|
|
1631
|
-
issueDate: z
|
|
1632
|
-
expirationDate: z
|
|
1633
|
-
issuer: z
|
|
1634
|
-
frontImageUri: z
|
|
1635
|
-
backImageUri: z
|
|
1636
|
-
});
|
|
1637
|
-
const individualInsertSchema = z
|
|
1638
|
-
internalId: z
|
|
1639
|
-
name: z
|
|
1640
|
-
surname: z
|
|
1641
|
-
email: z
|
|
1642
|
-
phone: z
|
|
1643
|
-
birthDate: z
|
|
1644
|
-
birthPlace: z
|
|
1645
|
-
countryOfBirth: z
|
|
1646
|
-
personalId: z
|
|
1647
|
-
gender: z
|
|
1648
|
-
citizenship: z
|
|
1649
|
-
citizenshipOther: z
|
|
1650
|
-
employer: z
|
|
1651
|
-
employerCountry: z
|
|
1652
|
-
registeredNumber: z
|
|
1653
|
-
isPep: z
|
|
1654
|
-
titleBefore: z
|
|
1655
|
-
titleAfter: z
|
|
1656
|
-
birthSurname: z
|
|
1657
|
-
vocativeTitle: z
|
|
1658
|
-
deathDate: z
|
|
1659
|
-
deathNotification: z
|
|
1660
|
-
pin: z
|
|
1661
|
-
stayAbroad: z
|
|
1662
|
-
stayAbroadCountries: z
|
|
1663
|
-
identityDocuments: z
|
|
1664
|
-
});
|
|
1665
|
-
const createOrganizationInputSchema = z
|
|
1666
|
-
internalId: z
|
|
1667
|
-
businessName: z
|
|
1668
|
-
email: z
|
|
1669
|
-
phone: z
|
|
1670
|
-
registeredNumber: z
|
|
1671
|
-
registeredIn: z
|
|
1672
|
-
operatesIn: z
|
|
1673
|
-
presentIn: z
|
|
1674
|
-
monthlyVolumeIn: z
|
|
1675
|
-
monthlyVolumeOut: z
|
|
1676
|
-
ownedBy: z
|
|
1677
|
-
companyObjects: z
|
|
1678
|
-
annualTurnover: z
|
|
1679
|
-
numberOfEmployees: z
|
|
1680
|
-
prosecuted: z
|
|
1681
|
-
location: z
|
|
1682
|
-
fileNumber: z
|
|
1683
|
-
websiteUrl: z
|
|
1684
|
-
vatPayer: z
|
|
1685
|
-
companyObjectsDescription: z
|
|
1686
|
-
turnover3years: z
|
|
1687
|
-
operationCountries: z
|
|
1688
|
-
riskyBusinessType: z
|
|
1689
|
-
vatId: z
|
|
1690
|
-
court: z
|
|
1691
|
-
registerUri: z
|
|
1692
|
-
});
|
|
1693
|
-
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({
|
|
1694
403
|
...bankAccountMetadataSchema.shape,
|
|
1695
|
-
bankCode: z
|
|
1696
|
-
iban: z
|
|
1697
|
-
swiftBic: z
|
|
1698
|
-
partyId: z
|
|
1699
|
-
internalId: z
|
|
1700
|
-
holderName: z
|
|
1701
|
-
number: z
|
|
1702
|
-
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"),
|
|
1703
412
|
countryCode: bankAccountMetadataSchema.shape.countryCode.nonoptional(),
|
|
1704
413
|
id: bankAccountMetadataSchema.shape.id.nonoptional(),
|
|
1705
|
-
statementUri: z
|
|
414
|
+
statementUri: z.string().optional()
|
|
1706
415
|
});
|
|
1707
416
|
const bankAccountInputSchema = updateBankAccountSchema.required({
|
|
1708
417
|
holderName: true,
|
|
1709
418
|
currency: true,
|
|
1710
419
|
countryCode: true
|
|
1711
420
|
}).omit({ id: true, partyId: true });
|
|
1712
|
-
const disponentSchema = z
|
|
1713
|
-
z
|
|
1714
|
-
partyType: z
|
|
421
|
+
const disponentSchema = z.discriminatedUnion("partyType", [
|
|
422
|
+
z.object({
|
|
423
|
+
partyType: z.literal("INDIVIDUAL"),
|
|
1715
424
|
data: individualInsertSchema
|
|
1716
425
|
}),
|
|
1717
|
-
z
|
|
1718
|
-
partyType: z
|
|
426
|
+
z.object({
|
|
427
|
+
partyType: z.literal("ORGANIZATION"),
|
|
1719
428
|
data: createOrganizationInputSchema
|
|
1720
429
|
})
|
|
1721
430
|
]);
|
|
1722
431
|
const zipCodeRegex = /^\d{3}\s?\d{2}$/;
|
|
1723
|
-
const createAddressInputSchema = z
|
|
1724
|
-
addressType: z
|
|
1725
|
-
internalId: z
|
|
1726
|
-
street: z
|
|
1727
|
-
orientationNumber: z
|
|
1728
|
-
descriptiveNumber: z
|
|
1729
|
-
municipality: z
|
|
1730
|
-
municipalityPart: z
|
|
1731
|
-
zipCode: z
|
|
1732
|
-
district: z
|
|
1733
|
-
region: z
|
|
1734
|
-
countryCode: z
|
|
1735
|
-
ruianCode: z
|
|
1736
|
-
});
|
|
1737
|
-
const businessPartnerInputSchema$1 = z
|
|
1738
|
-
name: z
|
|
1739
|
-
country: z
|
|
1740
|
-
cooperationReason: z
|
|
1741
|
-
});
|
|
1742
|
-
const foSourceOfWealthInputSchema$1 = z
|
|
1743
|
-
incomeSources: z
|
|
1744
|
-
incomeSourceOther: z
|
|
1745
|
-
monthlyIncome: z
|
|
1746
|
-
employer: z
|
|
1747
|
-
employerCountry: z
|
|
1748
|
-
});
|
|
1749
|
-
const businessSourceOfWealthInputSchema$1 = z
|
|
1750
|
-
financialFundsSources: z
|
|
1751
|
-
financialFundsSourceOther: z
|
|
1752
|
-
mainBusinessSubjects: z
|
|
1753
|
-
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(
|
|
1754
463
|
COMPANY_TURNOVER_RANGE,
|
|
1755
464
|
"Obrat za posledn\xED 3 roky je povinn\xFD"
|
|
1756
465
|
),
|
|
1757
|
-
operatingCountries: z
|
|
1758
|
-
operatingCountriesOther: z
|
|
1759
|
-
businessPartners: z
|
|
1760
|
-
businessActivitiesNote: z
|
|
1761
|
-
});
|
|
1762
|
-
const createAmlInputSchema = z
|
|
1763
|
-
internalId: z
|
|
1764
|
-
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([
|
|
1765
474
|
foSourceOfWealthInputSchema$1,
|
|
1766
475
|
businessSourceOfWealthInputSchema$1
|
|
1767
476
|
]),
|
|
1768
|
-
yearlyIncome: z
|
|
1769
|
-
sourceOfIncome: z
|
|
1770
|
-
incomeSourceOther: z
|
|
1771
|
-
servicePurposes: z
|
|
1772
|
-
servicePurposesOther: z
|
|
1773
|
-
taxDomicile: z
|
|
1774
|
-
taxDomicileCountry: z
|
|
1775
|
-
transactionType: z
|
|
1776
|
-
transactionTypeExpiry: z
|
|
1777
|
-
isDistraint: z
|
|
1778
|
-
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(
|
|
1779
488
|
EST_TXS_VOLUME_MONTH,
|
|
1780
489
|
"Odhadovan\xFD m\u011Bs\xED\u010Dn\xED objem transakc\xED je povinn\xFD"
|
|
1781
490
|
),
|
|
1782
|
-
estTxsVolumeYear: z
|
|
491
|
+
estTxsVolumeYear: z.enum(
|
|
1783
492
|
EST_TXS_VOLUME_YEAR,
|
|
1784
493
|
"Odhadovan\xFD ro\u010Dn\xED objem transakc\xED je povinn\xFD"
|
|
1785
494
|
),
|
|
1786
|
-
estTxsCountMonth: z
|
|
1787
|
-
tradingCountries: z
|
|
1788
|
-
tradingCountriesOther: z
|
|
1789
|
-
tradingSide: z
|
|
1790
|
-
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, {
|
|
1791
500
|
message: "Mus\xEDte potvrdit souhlas s prohl\xE1\u0161en\xEDm",
|
|
1792
501
|
path: ["acceptedAMLTermsAndConditions"]
|
|
1793
502
|
}),
|
|
1794
|
-
signatureMethod: z
|
|
1795
|
-
existencePeriod: z
|
|
1796
|
-
reputation: z
|
|
1797
|
-
riskBusinessAreas: z
|
|
1798
|
-
riskLevel: z
|
|
1799
|
-
kycStatus: z
|
|
1800
|
-
residencyAnswers: z
|
|
1801
|
-
z
|
|
1802
|
-
personName: z
|
|
1803
|
-
personRole: z
|
|
1804
|
-
answer: z
|
|
1805
|
-
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()
|
|
1806
515
|
})
|
|
1807
|
-
).optional()
|
|
1808
|
-
});
|
|
1809
|
-
const productsInputSchema$1 = z
|
|
1810
|
-
txs: z
|
|
1811
|
-
fee: z
|
|
1812
|
-
margin: z
|
|
1813
|
-
reportingEmail: z
|
|
1814
|
-
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()
|
|
1815
524
|
}).optional(),
|
|
1816
|
-
cbs: z
|
|
1817
|
-
});
|
|
1818
|
-
const ownerInputSchema = z
|
|
1819
|
-
titleBefore: z
|
|
1820
|
-
name: z
|
|
1821
|
-
surname: z
|
|
1822
|
-
titleAfter: z
|
|
1823
|
-
email: z
|
|
1824
|
-
birthDate: z
|
|
1825
|
-
birthPlace: z
|
|
1826
|
-
personalId: z
|
|
1827
|
-
gender: z
|
|
1828
|
-
citizenship: z
|
|
1829
|
-
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" }),
|
|
1830
539
|
address: createAddressInputSchema,
|
|
1831
|
-
sharePercentage: z
|
|
1832
|
-
shareEstablishedAt: z
|
|
1833
|
-
});
|
|
1834
|
-
const legalRepresentativeInputSchema = z
|
|
1835
|
-
titleBefore: z
|
|
1836
|
-
name: z
|
|
1837
|
-
surname: z
|
|
1838
|
-
titleAfter: z
|
|
1839
|
-
email: z
|
|
1840
|
-
birthDate: z
|
|
1841
|
-
birthPlace: z
|
|
1842
|
-
personalId: z
|
|
1843
|
-
gender: z
|
|
1844
|
-
citizenship: z
|
|
1845
|
-
isPep: z
|
|
1846
|
-
phone: z
|
|
1847
|
-
pin: z
|
|
1848
|
-
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(),
|
|
1849
558
|
address: createAddressInputSchema,
|
|
1850
|
-
dateOfEstablishment: z
|
|
559
|
+
dateOfEstablishment: z.string().min(1, "Datum vzniku funkce je povinn\xFD")
|
|
1851
560
|
});
|
|
1852
|
-
const createPartyInputSchema = z
|
|
561
|
+
const createPartyInputSchema = z.object({
|
|
1853
562
|
party: partySchema$1.omit({ id: true }),
|
|
1854
563
|
personalData: individualInsertSchema.nullable(),
|
|
1855
564
|
organizationData: createOrganizationInputSchema.nullable(),
|
|
1856
|
-
bankAccounts: z
|
|
1857
|
-
disponents: z
|
|
1858
|
-
addresses: z
|
|
1859
|
-
owners: z
|
|
1860
|
-
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(),
|
|
1861
570
|
aml: createAmlInputSchema,
|
|
1862
|
-
recipients: z
|
|
571
|
+
recipients: z.array(bankAccountInputSchema),
|
|
1863
572
|
products: productsInputSchema$1.optional(),
|
|
1864
|
-
traderIds: z
|
|
1865
|
-
});
|
|
1866
|
-
const partyCreateOutputSchema = z
|
|
1867
|
-
customerStatus: z
|
|
1868
|
-
partyType: z
|
|
1869
|
-
language: z
|
|
1870
|
-
id: z
|
|
1871
|
-
internalId: z
|
|
1872
|
-
note: z
|
|
1873
|
-
countryCode: z
|
|
1874
|
-
createdAt: z
|
|
1875
|
-
updatedAt: z
|
|
1876
|
-
});
|
|
1877
|
-
const responseBodySchema$5 = z
|
|
1878
|
-
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(),
|
|
1879
588
|
party: partyCreateOutputSchema
|
|
1880
589
|
});
|
|
1881
590
|
const createPartyRoute = createRoute({
|
|
@@ -2144,306 +853,306 @@ new OpenAPIHono().openapi(
|
|
|
2144
853
|
}
|
|
2145
854
|
);
|
|
2146
855
|
|
|
2147
|
-
const partySchema = z
|
|
2148
|
-
partyType: z
|
|
2149
|
-
language: z
|
|
2150
|
-
id: z
|
|
2151
|
-
internalId: z
|
|
2152
|
-
note: z
|
|
2153
|
-
countryCode: z
|
|
2154
|
-
});
|
|
2155
|
-
const idDocumentInputSchema = z
|
|
2156
|
-
id: z
|
|
2157
|
-
idDocType: z
|
|
2158
|
-
idDocNumber: z
|
|
2159
|
-
issueDate: z
|
|
2160
|
-
expirationDate: z
|
|
2161
|
-
issuer: z
|
|
2162
|
-
frontImageUri: z
|
|
2163
|
-
backImageUri: z
|
|
2164
|
-
});
|
|
2165
|
-
const individualUpdateSchema = z
|
|
2166
|
-
id: z
|
|
2167
|
-
partyId: z
|
|
2168
|
-
internalId: z
|
|
2169
|
-
name: z
|
|
2170
|
-
surname: z
|
|
2171
|
-
email: z
|
|
2172
|
-
phone: z
|
|
2173
|
-
birthDate: z
|
|
2174
|
-
birthPlace: z
|
|
2175
|
-
countryOfBirth: z
|
|
2176
|
-
personalId: z
|
|
2177
|
-
gender: z
|
|
2178
|
-
citizenship: z
|
|
2179
|
-
citizenshipOther: z
|
|
2180
|
-
employer: z
|
|
2181
|
-
employerCountry: z
|
|
2182
|
-
registeredNumber: z
|
|
2183
|
-
isPep: z
|
|
2184
|
-
titleBefore: z
|
|
2185
|
-
titleAfter: z
|
|
2186
|
-
birthSurname: z
|
|
2187
|
-
vocativeTitle: z
|
|
2188
|
-
deathDate: z
|
|
2189
|
-
deathNotification: z
|
|
2190
|
-
pin: z
|
|
2191
|
-
stayAbroad: z
|
|
2192
|
-
stayAbroadCountries: z
|
|
2193
|
-
identityDocuments: z
|
|
2194
|
-
});
|
|
2195
|
-
const organizationUpdateSchema = z
|
|
2196
|
-
id: z
|
|
2197
|
-
partyId: z
|
|
2198
|
-
internalId: z
|
|
2199
|
-
businessName: z
|
|
2200
|
-
email: z
|
|
2201
|
-
phone: z
|
|
2202
|
-
registeredNumber: z
|
|
2203
|
-
registeredIn: z
|
|
2204
|
-
operatesIn: z
|
|
2205
|
-
presentIn: z
|
|
2206
|
-
monthlyVolumeIn: z
|
|
2207
|
-
monthlyVolumeOut: z
|
|
2208
|
-
ownedBy: z
|
|
2209
|
-
companyObjects: z
|
|
2210
|
-
annualTurnover: z
|
|
2211
|
-
numberOfEmployees: z
|
|
2212
|
-
prosecuted: z
|
|
2213
|
-
location: z
|
|
2214
|
-
fileNumber: z
|
|
2215
|
-
websiteUrl: z
|
|
2216
|
-
vatPayer: z
|
|
2217
|
-
companyObjectsDescription: z
|
|
2218
|
-
turnover3years: z
|
|
2219
|
-
operationCountries: z
|
|
2220
|
-
riskyBusinessType: z
|
|
2221
|
-
vatId: z
|
|
2222
|
-
court: z
|
|
2223
|
-
registerUri: z
|
|
2224
|
-
});
|
|
2225
|
-
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({
|
|
2226
935
|
...bankAccountMetadataSchema.shape,
|
|
2227
|
-
partyId: z
|
|
2228
|
-
internalId: z
|
|
2229
|
-
holderName: z
|
|
2230
|
-
number: z
|
|
936
|
+
partyId: z.uuid(),
|
|
937
|
+
internalId: z.string().optional(),
|
|
938
|
+
holderName: z.string(),
|
|
939
|
+
number: z.string().optional(),
|
|
2231
940
|
currency: bankAccountMetadataSchema.shape.currency.nonoptional(),
|
|
2232
941
|
countryCode: bankAccountMetadataSchema.shape.countryCode.nonoptional(),
|
|
2233
|
-
id: z
|
|
2234
|
-
statementUri: z
|
|
2235
|
-
});
|
|
2236
|
-
const disponentIndividualSyncDataSchema = z
|
|
2237
|
-
id: z
|
|
2238
|
-
name: z
|
|
2239
|
-
surname: z
|
|
2240
|
-
email: z
|
|
2241
|
-
phone: z
|
|
2242
|
-
birthDate: z
|
|
2243
|
-
birthPlace: z
|
|
2244
|
-
countryOfBirth: z
|
|
2245
|
-
personalId: z
|
|
2246
|
-
gender: z
|
|
2247
|
-
citizenship: z
|
|
2248
|
-
citizenshipOther: z
|
|
2249
|
-
employer: z
|
|
2250
|
-
employerCountry: z
|
|
2251
|
-
registeredNumber: z
|
|
2252
|
-
isPep: z
|
|
2253
|
-
titleBefore: z
|
|
2254
|
-
titleAfter: z
|
|
2255
|
-
birthSurname: z
|
|
2256
|
-
vocativeTitle: z
|
|
2257
|
-
deathDate: z
|
|
2258
|
-
deathNotification: z
|
|
2259
|
-
pin: z
|
|
2260
|
-
stayAbroad: z
|
|
2261
|
-
stayAbroadCountries: z
|
|
2262
|
-
identityDocuments: z
|
|
2263
|
-
});
|
|
2264
|
-
const disponentOrganizationSyncDataSchema = z
|
|
2265
|
-
id: z
|
|
2266
|
-
businessName: z
|
|
2267
|
-
email: z
|
|
2268
|
-
phone: z
|
|
2269
|
-
registeredNumber: z
|
|
2270
|
-
registeredIn: z
|
|
2271
|
-
operatesIn: z
|
|
2272
|
-
presentIn: z
|
|
2273
|
-
monthlyVolumeIn: z
|
|
2274
|
-
monthlyVolumeOut: z
|
|
2275
|
-
ownedBy: z
|
|
2276
|
-
companyObjects: z
|
|
2277
|
-
annualTurnover: z
|
|
2278
|
-
numberOfEmployees: z
|
|
2279
|
-
prosecuted: z
|
|
2280
|
-
location: z
|
|
2281
|
-
fileNumber: z
|
|
2282
|
-
websiteUrl: z
|
|
2283
|
-
vatPayer: z
|
|
2284
|
-
companyObjectsDescription: z
|
|
2285
|
-
turnover3years: z
|
|
2286
|
-
operationCountries: z
|
|
2287
|
-
riskyBusinessType: z
|
|
2288
|
-
registerUri: z
|
|
2289
|
-
});
|
|
2290
|
-
const disponentSyncSchema = z
|
|
2291
|
-
z
|
|
2292
|
-
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"),
|
|
2293
1002
|
data: disponentIndividualSyncDataSchema
|
|
2294
1003
|
}),
|
|
2295
|
-
z
|
|
2296
|
-
partyType: z
|
|
1004
|
+
z.object({
|
|
1005
|
+
partyType: z.literal("ORGANIZATION"),
|
|
2297
1006
|
data: disponentOrganizationSyncDataSchema
|
|
2298
1007
|
})
|
|
2299
1008
|
]);
|
|
2300
|
-
const syncAddressInputSchema = z
|
|
2301
|
-
id: z
|
|
2302
|
-
partyId: z
|
|
2303
|
-
internalId: z
|
|
2304
|
-
addressType: z
|
|
2305
|
-
street: z
|
|
2306
|
-
orientationNumber: z
|
|
2307
|
-
descriptiveNumber: z
|
|
2308
|
-
municipality: z
|
|
2309
|
-
municipalityPart: z
|
|
2310
|
-
zipCode: z
|
|
2311
|
-
district: z
|
|
2312
|
-
region: z
|
|
2313
|
-
countryCode: z
|
|
2314
|
-
ruianCode: z
|
|
2315
|
-
});
|
|
2316
|
-
const businessPartnerInputSchema = z
|
|
2317
|
-
name: z
|
|
2318
|
-
country: z
|
|
2319
|
-
cooperationReason: z
|
|
2320
|
-
});
|
|
2321
|
-
const foSourceOfWealthInputSchema = z
|
|
2322
|
-
incomeSources: z
|
|
2323
|
-
incomeSourceOther: z
|
|
2324
|
-
monthlyIncome: z
|
|
2325
|
-
employer: z
|
|
2326
|
-
employerCountry: z
|
|
2327
|
-
});
|
|
2328
|
-
const businessSourceOfWealthInputSchema = z
|
|
2329
|
-
financialFundsSources: z
|
|
2330
|
-
financialFundsSourceOther: z
|
|
2331
|
-
mainBusinessSubjects: z
|
|
2332
|
-
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(
|
|
2333
1042
|
COMPANY_TURNOVER_RANGE,
|
|
2334
1043
|
"Obrat za posledn\xED 3 roky je povinn\xFD"
|
|
2335
1044
|
),
|
|
2336
|
-
operatingCountries: z
|
|
2337
|
-
operatingCountriesOther: z
|
|
2338
|
-
businessPartners: z
|
|
2339
|
-
businessActivitiesNote: z
|
|
2340
|
-
});
|
|
2341
|
-
const updateAmlInputSchema = z
|
|
2342
|
-
id: z
|
|
2343
|
-
partyId: z
|
|
2344
|
-
internalId: z
|
|
2345
|
-
sourceOfWealth: z
|
|
2346
|
-
yearlyIncome: z
|
|
2347
|
-
sourceOfIncome: z
|
|
2348
|
-
incomeSourceOther: z
|
|
2349
|
-
servicePurposes: z
|
|
2350
|
-
servicePurposesOther: z
|
|
2351
|
-
taxDomicile: z
|
|
2352
|
-
taxDomicileCountry: z
|
|
2353
|
-
transactionType: z
|
|
2354
|
-
transactionTypeExpiry: z
|
|
2355
|
-
isDistraint: z
|
|
2356
|
-
estTxsVolumeMonth: z
|
|
2357
|
-
estTxsVolumeYear: z
|
|
2358
|
-
estTxsCountMonth: z
|
|
2359
|
-
tradingCountries: z
|
|
2360
|
-
tradingCountriesOther: z
|
|
2361
|
-
tradingSide: z
|
|
2362
|
-
acceptedAMLTermsAndConditions: z
|
|
2363
|
-
signatureMethod: z
|
|
2364
|
-
existencePeriod: z
|
|
2365
|
-
reputation: z
|
|
2366
|
-
riskBusinessAreas: z
|
|
2367
|
-
riskLevel: z
|
|
2368
|
-
kycStatus: z
|
|
2369
|
-
residencyAnswers: z
|
|
2370
|
-
z
|
|
2371
|
-
personName: z
|
|
2372
|
-
personRole: z
|
|
2373
|
-
answer: z
|
|
2374
|
-
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()
|
|
2375
1084
|
})
|
|
2376
|
-
).optional()
|
|
2377
|
-
});
|
|
2378
|
-
const productsInputSchema = z
|
|
2379
|
-
txs: z
|
|
2380
|
-
fee: z
|
|
2381
|
-
margin: z
|
|
2382
|
-
reportingEmail: z
|
|
2383
|
-
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()
|
|
2384
1093
|
}).optional(),
|
|
2385
|
-
cbs: z
|
|
2386
|
-
});
|
|
2387
|
-
const ownerSyncSchema = z
|
|
2388
|
-
id: z
|
|
2389
|
-
titleBefore: z
|
|
2390
|
-
name: z
|
|
2391
|
-
surname: z
|
|
2392
|
-
titleAfter: z
|
|
2393
|
-
email: z
|
|
2394
|
-
birthDate: z
|
|
2395
|
-
birthPlace: z
|
|
2396
|
-
personalId: z
|
|
2397
|
-
gender: z
|
|
2398
|
-
citizenship: z
|
|
2399
|
-
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(),
|
|
2400
1109
|
address: syncAddressInputSchema,
|
|
2401
|
-
sharePercentage: z
|
|
2402
|
-
shareEstablishedAt: z
|
|
2403
|
-
});
|
|
2404
|
-
const legalRepresentativeSyncSchema = z
|
|
2405
|
-
id: z
|
|
2406
|
-
titleBefore: z
|
|
2407
|
-
name: z
|
|
2408
|
-
surname: z
|
|
2409
|
-
titleAfter: z
|
|
2410
|
-
email: z
|
|
2411
|
-
birthDate: z
|
|
2412
|
-
birthPlace: z
|
|
2413
|
-
personalId: z
|
|
2414
|
-
gender: z
|
|
2415
|
-
citizenship: z
|
|
2416
|
-
isPep: z
|
|
2417
|
-
phone: z
|
|
2418
|
-
pin: z
|
|
2419
|
-
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(),
|
|
2420
1129
|
address: syncAddressInputSchema,
|
|
2421
|
-
dateOfEstablishment: z
|
|
1130
|
+
dateOfEstablishment: z.string().min(1, "Datum vzniku funkce je povinn\xFD")
|
|
2422
1131
|
});
|
|
2423
|
-
const partyUpdateInputSchema = z
|
|
1132
|
+
const partyUpdateInputSchema = z.object({
|
|
2424
1133
|
party: partySchema,
|
|
2425
1134
|
personalData: individualUpdateSchema.nullable(),
|
|
2426
1135
|
organizationData: organizationUpdateSchema.nullable(),
|
|
2427
|
-
bankAccounts: z
|
|
2428
|
-
disponents: z
|
|
2429
|
-
addresses: z
|
|
2430
|
-
owners: z
|
|
2431
|
-
legalRepresentatives: z
|
|
2432
|
-
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(),
|
|
2433
1142
|
aml: updateAmlInputSchema.optional(),
|
|
2434
1143
|
products: productsInputSchema.optional(),
|
|
2435
|
-
traderIds: z
|
|
2436
|
-
});
|
|
2437
|
-
const updatePartyOuputSchema = z
|
|
2438
|
-
id: z
|
|
2439
|
-
customerStatus: z
|
|
2440
|
-
partyType: z
|
|
2441
|
-
language: z
|
|
2442
|
-
note: z
|
|
2443
|
-
countryCode: z
|
|
2444
|
-
});
|
|
2445
|
-
const responseBodySchema$4 = z
|
|
2446
|
-
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(),
|
|
2447
1156
|
party: updatePartyOuputSchema
|
|
2448
1157
|
});
|
|
2449
1158
|
const updatePartyRoute = createRoute({
|
|
@@ -2458,7 +1167,7 @@ const updatePartyRoute = createRoute({
|
|
|
2458
1167
|
}
|
|
2459
1168
|
],
|
|
2460
1169
|
request: {
|
|
2461
|
-
params: z
|
|
1170
|
+
params: z.object({ partyId: z.uuid() }),
|
|
2462
1171
|
body: {
|
|
2463
1172
|
content: {
|
|
2464
1173
|
"application/json": {
|
|
@@ -2586,54 +1295,54 @@ new OpenAPIHono().openapi(
|
|
|
2586
1295
|
);
|
|
2587
1296
|
|
|
2588
1297
|
const DOCUMENT_SIDE = ["front", "back"];
|
|
2589
|
-
const paramsSchema$2 = z
|
|
2590
|
-
partyId: z
|
|
2591
|
-
});
|
|
2592
|
-
const idDocumentCreateInputSchema = z
|
|
2593
|
-
partyId: z
|
|
2594
|
-
idDocType: z
|
|
2595
|
-
idDocNumber: z
|
|
2596
|
-
idDocHolderName: z
|
|
2597
|
-
issueDate: z
|
|
2598
|
-
expirationDate: z
|
|
2599
|
-
issuer: z
|
|
2600
|
-
countryOfIssue: z
|
|
2601
|
-
idDocStatus: z
|
|
2602
|
-
});
|
|
2603
|
-
const idDocumentMultipartSchema = z
|
|
2604
|
-
idDocument: z
|
|
2605
|
-
documentSide: z
|
|
2606
|
-
file: z
|
|
2607
|
-
});
|
|
2608
|
-
const multipartOpenApiSchema = z
|
|
2609
|
-
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({
|
|
2610
1319
|
description: "JSON stringified IdDocument payload"
|
|
2611
1320
|
}),
|
|
2612
|
-
documentSide: z
|
|
2613
|
-
file: z
|
|
1321
|
+
documentSide: z.enum(DOCUMENT_SIDE),
|
|
1322
|
+
file: z.any().openapi({
|
|
2614
1323
|
type: "string",
|
|
2615
1324
|
format: "binary"
|
|
2616
1325
|
})
|
|
2617
1326
|
});
|
|
2618
|
-
const idDocumentOutputSchema = z
|
|
2619
|
-
id: z
|
|
2620
|
-
createdAt: z
|
|
2621
|
-
updatedAt: z
|
|
2622
|
-
deletedAt: z
|
|
2623
|
-
partyId: z
|
|
2624
|
-
idDocType: z
|
|
2625
|
-
idDocNumber: z
|
|
2626
|
-
idDocHolderName: z
|
|
2627
|
-
issueDate: z
|
|
2628
|
-
expirationDate: z
|
|
2629
|
-
issuer: z
|
|
2630
|
-
countryOfIssue: z
|
|
2631
|
-
frontImageUri: z
|
|
2632
|
-
backImageUri: z
|
|
2633
|
-
idDocStatus: z
|
|
2634
|
-
});
|
|
2635
|
-
const responseBodySchema$3 = z
|
|
2636
|
-
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(),
|
|
2637
1346
|
idDocument: idDocumentOutputSchema
|
|
2638
1347
|
});
|
|
2639
1348
|
const createDocumentRoute = createRoute({
|
|
@@ -2673,7 +1382,7 @@ const createDocumentRoute = createRoute({
|
|
|
2673
1382
|
description: "Invalid request",
|
|
2674
1383
|
content: {
|
|
2675
1384
|
"application/json": {
|
|
2676
|
-
schema: z
|
|
1385
|
+
schema: z.object({ message: z.string() })
|
|
2677
1386
|
}
|
|
2678
1387
|
}
|
|
2679
1388
|
},
|
|
@@ -2681,7 +1390,7 @@ const createDocumentRoute = createRoute({
|
|
|
2681
1390
|
description: "Internal server error",
|
|
2682
1391
|
content: {
|
|
2683
1392
|
"application/json": {
|
|
2684
|
-
schema: z
|
|
1393
|
+
schema: z.object({ message: z.string() })
|
|
2685
1394
|
}
|
|
2686
1395
|
}
|
|
2687
1396
|
}
|
|
@@ -2746,255 +1455,257 @@ new OpenAPIHono().openapi(
|
|
|
2746
1455
|
}
|
|
2747
1456
|
);
|
|
2748
1457
|
|
|
2749
|
-
const partyBaseOutputSchema = z
|
|
2750
|
-
customerStatus: z
|
|
2751
|
-
partyType: z
|
|
2752
|
-
language: z
|
|
2753
|
-
id: z
|
|
2754
|
-
internalId: z
|
|
2755
|
-
note: z
|
|
2756
|
-
countryCode: z
|
|
2757
|
-
createdAt: z
|
|
2758
|
-
updatedAt: z
|
|
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
|
-
|
|
2845
|
-
|
|
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"),
|
|
2846
1557
|
data: individualOutputSchema.nullable()
|
|
2847
1558
|
}),
|
|
2848
|
-
z
|
|
2849
|
-
partyType: z
|
|
1559
|
+
z.object({
|
|
1560
|
+
partyType: z.literal("ORGANIZATION"),
|
|
2850
1561
|
data: createOrganizationOutputSchema.nullable()
|
|
2851
1562
|
})
|
|
2852
1563
|
]);
|
|
2853
|
-
const createAddressOutputSchema = z
|
|
2854
|
-
id: z
|
|
2855
|
-
partyId: z
|
|
2856
|
-
internalId: z
|
|
2857
|
-
addressType: z
|
|
2858
|
-
street: z
|
|
2859
|
-
orientationNumber: z
|
|
2860
|
-
descriptiveNumber: z
|
|
2861
|
-
municipality: z
|
|
2862
|
-
municipalityPart: z
|
|
2863
|
-
zipCode: z
|
|
2864
|
-
district: z
|
|
2865
|
-
region: z
|
|
2866
|
-
countryCode: z
|
|
2867
|
-
ruianCode: z
|
|
2868
|
-
createdAt: z
|
|
2869
|
-
updatedAt: z
|
|
2870
|
-
});
|
|
2871
|
-
const businessPartnerOutputSchema = z
|
|
2872
|
-
name: z
|
|
2873
|
-
country: z
|
|
2874
|
-
cooperationReason: z
|
|
2875
|
-
});
|
|
2876
|
-
const foSourceOfWealthOutputSchema = z
|
|
2877
|
-
incomeSources: z
|
|
2878
|
-
incomeSourceOther: z
|
|
2879
|
-
monthlyIncome: z
|
|
2880
|
-
employer: z
|
|
2881
|
-
employerCountry: z
|
|
2882
|
-
});
|
|
2883
|
-
const businessSourceOfWealthOutputSchema = z
|
|
2884
|
-
financialFundsSources: z
|
|
2885
|
-
financialFundsSourceOther: z
|
|
2886
|
-
mainBusinessSubjects: z
|
|
2887
|
-
companyTurnover: z
|
|
2888
|
-
operatingCountries: z
|
|
2889
|
-
operatingCountriesOther: z
|
|
2890
|
-
businessPartners: z
|
|
2891
|
-
businessActivitiesNote: z
|
|
2892
|
-
});
|
|
2893
|
-
const createAmlOutputSchema = z
|
|
2894
|
-
id: z
|
|
2895
|
-
partyId: z
|
|
2896
|
-
internalId: z
|
|
2897
|
-
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([
|
|
2898
1609
|
foSourceOfWealthOutputSchema,
|
|
2899
1610
|
businessSourceOfWealthOutputSchema
|
|
2900
1611
|
]),
|
|
2901
|
-
yearlyIncome: z
|
|
2902
|
-
sourceOfIncome: z
|
|
2903
|
-
incomeSourceOther: z
|
|
2904
|
-
servicePurposes: z
|
|
2905
|
-
servicePurposesOther: z
|
|
2906
|
-
taxDomicile: z
|
|
2907
|
-
taxDomicileCountry: z
|
|
2908
|
-
transactionType: z
|
|
2909
|
-
transactionTypeExpiry: z
|
|
2910
|
-
isDistraint: z
|
|
2911
|
-
estTxsVolumeMonth: z
|
|
2912
|
-
estTxsVolumeYear: z
|
|
2913
|
-
estTxsCountMonth: z
|
|
2914
|
-
tradingCountries: z
|
|
2915
|
-
tradingCountriesOther: z
|
|
2916
|
-
tradingSide: z
|
|
2917
|
-
acceptedAMLTermsAndConditions: z
|
|
2918
|
-
signatureMethod: z
|
|
2919
|
-
existencePeriod: z
|
|
2920
|
-
reputation: z
|
|
2921
|
-
riskBusinessAreas: z
|
|
2922
|
-
riskLevel: z
|
|
2923
|
-
kycStatus: z
|
|
2924
|
-
residencyAnswers: z
|
|
2925
|
-
z
|
|
2926
|
-
personName: z
|
|
2927
|
-
personRole: z
|
|
2928
|
-
answer: z
|
|
2929
|
-
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()
|
|
2930
1641
|
})
|
|
2931
1642
|
).nullable(),
|
|
2932
|
-
createdAt: z
|
|
2933
|
-
updatedAt: z
|
|
2934
|
-
});
|
|
2935
|
-
const ownerOutputSchema = z
|
|
2936
|
-
id: z
|
|
2937
|
-
name: z
|
|
2938
|
-
surname: z
|
|
2939
|
-
titleBefore: z
|
|
2940
|
-
titleAfter: z
|
|
2941
|
-
email: z
|
|
2942
|
-
birthDate: z
|
|
2943
|
-
birthPlace: z
|
|
2944
|
-
personalId: z
|
|
2945
|
-
gender: z
|
|
2946
|
-
citizenship: z
|
|
2947
|
-
isPep: z
|
|
2948
|
-
sharePercentage: z
|
|
2949
|
-
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(),
|
|
2950
1661
|
address: createAddressOutputSchema.nullable()
|
|
2951
1662
|
});
|
|
2952
|
-
const legalRepresentativeOutputSchema = z
|
|
2953
|
-
id: z
|
|
2954
|
-
name: z
|
|
2955
|
-
surname: z
|
|
2956
|
-
titleBefore: z
|
|
2957
|
-
titleAfter: z
|
|
2958
|
-
email: z
|
|
2959
|
-
birthDate: z
|
|
2960
|
-
birthPlace: z
|
|
2961
|
-
personalId: z
|
|
2962
|
-
gender: z
|
|
2963
|
-
citizenship: z
|
|
2964
|
-
isPep: z
|
|
2965
|
-
phone: z
|
|
2966
|
-
pin: z
|
|
2967
|
-
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(),
|
|
2968
1679
|
address: createAddressOutputSchema.nullable()
|
|
2969
1680
|
});
|
|
2970
|
-
const productsOutputSchema = z
|
|
2971
|
-
txs: z
|
|
2972
|
-
fee: z
|
|
2973
|
-
margin: z
|
|
2974
|
-
reportingEmail: z
|
|
2975
|
-
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()
|
|
2976
1687
|
}).nullable(),
|
|
2977
|
-
cbs: z
|
|
1688
|
+
cbs: z.object({}).nullable()
|
|
2978
1689
|
});
|
|
2979
1690
|
const recipientOutputSchema = bankAccountOutputSchema.omit({
|
|
2980
1691
|
statementUri: true
|
|
2981
1692
|
});
|
|
2982
|
-
const partyOutputSchema = z
|
|
1693
|
+
const partyOutputSchema = z.object({
|
|
2983
1694
|
party: partyBaseOutputSchema.nullable(),
|
|
2984
1695
|
personalData: individualOutputSchema.nullable(),
|
|
2985
1696
|
organizationData: createOrganizationOutputSchema.nullable(),
|
|
2986
|
-
bankAccounts: z
|
|
2987
|
-
disponents: z
|
|
2988
|
-
addresses: z
|
|
1697
|
+
bankAccounts: z.array(bankAccountOutputSchema).nullable(),
|
|
1698
|
+
disponents: z.array(disponentOutputSchema).nullable(),
|
|
1699
|
+
addresses: z.array(createAddressOutputSchema).nullable(),
|
|
2989
1700
|
aml: createAmlOutputSchema.nullable(),
|
|
2990
|
-
recipients: z
|
|
1701
|
+
recipients: z.array(recipientOutputSchema).nullable(),
|
|
2991
1702
|
products: productsOutputSchema.nullable(),
|
|
2992
|
-
traderIds: z
|
|
2993
|
-
owners: z
|
|
2994
|
-
legalRepresentatives: z
|
|
1703
|
+
traderIds: z.array(z.uuid()).nullable(),
|
|
1704
|
+
owners: z.array(ownerOutputSchema).nullable(),
|
|
1705
|
+
legalRepresentatives: z.array(legalRepresentativeOutputSchema).nullable()
|
|
2995
1706
|
});
|
|
2996
|
-
const responseBodySchema$2 = z
|
|
2997
|
-
message: z
|
|
1707
|
+
const responseBodySchema$2 = z.object({
|
|
1708
|
+
message: z.string(),
|
|
2998
1709
|
party: partyOutputSchema
|
|
2999
1710
|
});
|
|
3000
1711
|
const getPartyByPartyIdRoute = createRoute({
|
|
@@ -3004,7 +1715,7 @@ const getPartyByPartyIdRoute = createRoute({
|
|
|
3004
1715
|
tags: ["Parties"],
|
|
3005
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.",
|
|
3006
1717
|
request: {
|
|
3007
|
-
params: z
|
|
1718
|
+
params: z.object({ partyId: z.uuid() })
|
|
3008
1719
|
},
|
|
3009
1720
|
responses: {
|
|
3010
1721
|
200: {
|
|
@@ -3036,7 +1747,16 @@ new OpenAPIHono().openapi(
|
|
|
3036
1747
|
}
|
|
3037
1748
|
);
|
|
3038
1749
|
|
|
3039
|
-
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);
|
|
3040
1760
|
const getPartiesRoute = createRoute({
|
|
3041
1761
|
method: "get",
|
|
3042
1762
|
path: "/",
|
|
@@ -3049,18 +1769,18 @@ const getPartiesRoute = createRoute({
|
|
|
3049
1769
|
description: "Internal Server Error",
|
|
3050
1770
|
content: {
|
|
3051
1771
|
"application/json": {
|
|
3052
|
-
schema:
|
|
1772
|
+
schema: z.object({ message: z.string() })
|
|
3053
1773
|
}
|
|
3054
1774
|
}
|
|
3055
1775
|
},
|
|
3056
1776
|
200: {
|
|
3057
1777
|
content: {
|
|
3058
1778
|
"application/json": {
|
|
3059
|
-
schema: z
|
|
3060
|
-
message: z
|
|
3061
|
-
data: z
|
|
1779
|
+
schema: z.object({
|
|
1780
|
+
message: z.string(),
|
|
1781
|
+
data: z.object({
|
|
3062
1782
|
parties: partiesOutputDataSchema,
|
|
3063
|
-
totalCount: z
|
|
1783
|
+
totalCount: z.number()
|
|
3064
1784
|
})
|
|
3065
1785
|
})
|
|
3066
1786
|
}
|
|
@@ -3072,50 +1792,30 @@ const getPartiesRoute = createRoute({
|
|
|
3072
1792
|
new OpenAPIHono().openapi(
|
|
3073
1793
|
getPartiesRoute,
|
|
3074
1794
|
async (context) => {
|
|
3075
|
-
const
|
|
3076
|
-
const validatedQuery = {
|
|
3077
|
-
page: query.page ? Number(query.page) : 1,
|
|
3078
|
-
limit: query.limit ? Number(query.limit) : 10,
|
|
3079
|
-
column: query.column || "createdAt",
|
|
3080
|
-
direction: query.direction || "desc",
|
|
3081
|
-
search: query.search,
|
|
3082
|
-
ids: query.ids ? Array.isArray(query.ids) ? query.ids : [query.ids] : void 0
|
|
3083
|
-
};
|
|
1795
|
+
const validatedQuery = context.req.valid("query");
|
|
3084
1796
|
const {
|
|
3085
1797
|
data: parties,
|
|
3086
1798
|
error,
|
|
3087
|
-
message
|
|
3088
|
-
status
|
|
1799
|
+
message
|
|
3089
1800
|
} = await context.env.MASTER_DATA_MANAGEMENT_SERVICE.getParties(
|
|
3090
1801
|
validatedQuery
|
|
3091
1802
|
);
|
|
3092
1803
|
if (error || !parties) {
|
|
3093
|
-
return context.json(
|
|
3094
|
-
{
|
|
3095
|
-
message: "Failed to get parties",
|
|
3096
|
-
data: null,
|
|
3097
|
-
errorDetail: {
|
|
3098
|
-
message,
|
|
3099
|
-
code: status
|
|
3100
|
-
},
|
|
3101
|
-
error: true
|
|
3102
|
-
},
|
|
3103
|
-
500
|
|
3104
|
-
);
|
|
1804
|
+
return context.json({ message: message || "Failed to get parties" }, 500);
|
|
3105
1805
|
}
|
|
3106
1806
|
return context.json({ message, data: parties }, 200);
|
|
3107
1807
|
}
|
|
3108
1808
|
);
|
|
3109
1809
|
|
|
3110
|
-
const XIdempotencyKeyHeaderSchema = z
|
|
1810
|
+
const XIdempotencyKeyHeaderSchema = z.string().openapi({
|
|
3111
1811
|
description: "Unique identifier header to ensure the request is processed only once.",
|
|
3112
1812
|
example: "4ac15c22-2bd3-426f-b915-bfd5febdb7df"
|
|
3113
1813
|
});
|
|
3114
|
-
const XSignatureHeaderSchema = z
|
|
1814
|
+
const XSignatureHeaderSchema = z.string().openapi({
|
|
3115
1815
|
description: "Payload signature header to verify request body integrity.",
|
|
3116
1816
|
example: "FIXAxHO6QqH3M7t4MatM8U6l/nIqWj7jIEW2U6/771MGUorSywy+GmKIG3B1mxT1jR7qPtBHQ5YSO8O53iCvOh6kIhbGXtVe/3C61dsEykLbmntV3nF4DY8/HyfF8a6c2Asc5bvgHrhosGi3s/ouoNowMpsckyq66We8H5gRbXlqJm4Bl1zWWQah4aQLX548L8DLx5+EIgArNMVVG8ryCES99aovJBKrQQMpQLwss1sSFuUZ1kdBCodtvxgTOXOugnZ1UNCmUNFXryQ6bn7wY7Punml/rwR/zTQ9j4SX07iFeQC5rgm9/zi29DBluegu+b8/G8oXrf6L4hugbMEKJfLRfKjNHCrjCooKtInoYxwNEfJyJ9mhqdBoeIBca9zgPpewdbwFLXVV82TYR+xZiywDcHKQ62IzQp07NOMCl4xArSJ3vIWUftSYpLIwomyjQEbY27oGiubUF4krEKgHnMYalCn0ruYOwFik2Pa6FEfIZo0TSXDC24UHQb5mJNPYpv2hny7U5CZPmBvjaRGMVnE+WgRUT19cwqlSL3pWAfeSn1Wro7lYBp/PmlRPgYIxl9GJwNlQ0G+NzP9cMSJbmI5fwErDNgJAaPaMwZbJ3y8ikmbBkkXNPKvQrWVGCJ4nP+/f8yYzMZq272EFx984pSoo2yAeBJnrxbW+AlZxyIo="
|
|
3117
1817
|
});
|
|
3118
|
-
const XSignatureKeyHeaderSchema = z
|
|
1818
|
+
const XSignatureKeyHeaderSchema = z.string().openapi({
|
|
3119
1819
|
description: "Signature key identifier header to specify which key was used for payload signing.",
|
|
3120
1820
|
example: "ixtal"
|
|
3121
1821
|
});
|
|
@@ -3124,30 +1824,30 @@ const ALLOWED_ID_DOCUMENTS_FILTERS = {
|
|
|
3124
1824
|
ISSUER: "filterIdDocumentIssuer"
|
|
3125
1825
|
};
|
|
3126
1826
|
|
|
3127
|
-
const idDocumentsListOutputSchema = z
|
|
3128
|
-
totalCount: z
|
|
3129
|
-
idDocuments: z
|
|
1827
|
+
const idDocumentsListOutputSchema = z.object({
|
|
1828
|
+
totalCount: z.number(),
|
|
1829
|
+
idDocuments: z.array(idDocumentOutputSchema)
|
|
3130
1830
|
});
|
|
3131
|
-
const paramsSchema$1 = z
|
|
3132
|
-
partyId: z
|
|
1831
|
+
const paramsSchema$1 = z.object({
|
|
1832
|
+
partyId: z.uuid()
|
|
3133
1833
|
});
|
|
3134
|
-
const arrayQuery = (schema) => z
|
|
1834
|
+
const arrayQuery = (schema) => z.preprocess((val) => {
|
|
3135
1835
|
if (typeof val === "string") {
|
|
3136
1836
|
return val.includes(",") ? val.split(",") : [val];
|
|
3137
1837
|
}
|
|
3138
1838
|
return val;
|
|
3139
1839
|
}, schema.array()).optional();
|
|
3140
|
-
const querySchema = z
|
|
3141
|
-
page: z
|
|
3142
|
-
limit: z
|
|
3143
|
-
sortColumn: z
|
|
3144
|
-
sortDirection: z
|
|
3145
|
-
[ALLOWED_ID_DOCUMENTS_FILTERS.PARTY_ID]: arrayQuery(z
|
|
3146
|
-
[ALLOWED_ID_DOCUMENTS_FILTERS.ISSUER]: arrayQuery(z
|
|
3147
|
-
search: z
|
|
3148
|
-
});
|
|
3149
|
-
const responseBodySchema$1 = z
|
|
3150
|
-
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(),
|
|
3151
1851
|
idDocumentsList: idDocumentsListOutputSchema
|
|
3152
1852
|
});
|
|
3153
1853
|
const getIdDocumentsListRoute = createRoute({
|
|
@@ -3173,7 +1873,7 @@ const getIdDocumentsListRoute = createRoute({
|
|
|
3173
1873
|
description: "ID documents not found",
|
|
3174
1874
|
content: {
|
|
3175
1875
|
"application/json": {
|
|
3176
|
-
schema: z
|
|
1876
|
+
schema: z.object({ message: z.string() })
|
|
3177
1877
|
}
|
|
3178
1878
|
}
|
|
3179
1879
|
},
|
|
@@ -3181,7 +1881,7 @@ const getIdDocumentsListRoute = createRoute({
|
|
|
3181
1881
|
description: "Internal server error",
|
|
3182
1882
|
content: {
|
|
3183
1883
|
"application/json": {
|
|
3184
|
-
schema: z
|
|
1884
|
+
schema: z.object({ message: z.string() })
|
|
3185
1885
|
}
|
|
3186
1886
|
}
|
|
3187
1887
|
}
|
|
@@ -3217,24 +1917,24 @@ new OpenAPIHono().openapi(
|
|
|
3217
1917
|
}
|
|
3218
1918
|
);
|
|
3219
1919
|
|
|
3220
|
-
const paramsSchema = z
|
|
3221
|
-
id: z
|
|
3222
|
-
});
|
|
3223
|
-
const idDocumentUpdateInputSchema = z
|
|
3224
|
-
partyId: z
|
|
3225
|
-
idDocType: z
|
|
3226
|
-
idDocNumber: z
|
|
3227
|
-
idDocHolderName: z
|
|
3228
|
-
issueDate: z
|
|
3229
|
-
expirationDate: z
|
|
3230
|
-
issuer: z
|
|
3231
|
-
countryOfIssue: z
|
|
3232
|
-
frontImageUri: z
|
|
3233
|
-
backImageUri: z
|
|
3234
|
-
idDocStatus: z
|
|
3235
|
-
});
|
|
3236
|
-
const responseBodySchema = z
|
|
3237
|
-
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(),
|
|
3238
1938
|
idDocument: idDocumentOutputSchema
|
|
3239
1939
|
});
|
|
3240
1940
|
const updateIdDocumentRoute = createRoute({
|
|
@@ -3246,7 +1946,7 @@ const updateIdDocumentRoute = createRoute({
|
|
|
3246
1946
|
middleware: [jwt, signature(), idempotency()],
|
|
3247
1947
|
security: [{ JwtAuth: [] }],
|
|
3248
1948
|
request: {
|
|
3249
|
-
headers: z
|
|
1949
|
+
headers: z.object({
|
|
3250
1950
|
"X-Idempotency-Key": XIdempotencyKeyHeaderSchema,
|
|
3251
1951
|
"X-Signature": XSignatureHeaderSchema,
|
|
3252
1952
|
"X-Signature-Key": XSignatureKeyHeaderSchema
|
|
@@ -3274,7 +1974,7 @@ const updateIdDocumentRoute = createRoute({
|
|
|
3274
1974
|
description: "ID document not found",
|
|
3275
1975
|
content: {
|
|
3276
1976
|
"application/json": {
|
|
3277
|
-
schema: z
|
|
1977
|
+
schema: z.object({ message: z.string() })
|
|
3278
1978
|
}
|
|
3279
1979
|
}
|
|
3280
1980
|
},
|
|
@@ -3282,7 +1982,7 @@ const updateIdDocumentRoute = createRoute({
|
|
|
3282
1982
|
description: "Internal server error",
|
|
3283
1983
|
content: {
|
|
3284
1984
|
"application/json": {
|
|
3285
|
-
schema: z
|
|
1985
|
+
schema: z.object({ message: z.string() })
|
|
3286
1986
|
}
|
|
3287
1987
|
}
|
|
3288
1988
|
}
|
|
@@ -3318,8 +2018,8 @@ new OpenAPIHono().openapi(
|
|
|
3318
2018
|
}
|
|
3319
2019
|
);
|
|
3320
2020
|
|
|
3321
|
-
const messageResponseSchema = z
|
|
3322
|
-
message: z
|
|
2021
|
+
const messageResponseSchema = z.object({
|
|
2022
|
+
message: z.string()
|
|
3323
2023
|
});
|
|
3324
2024
|
|
|
3325
|
-
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 };
|