@devizovaburza/mdm-sdk 0.0.19 → 1.0.0
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.cjs +546 -337
- package/dist/v1/index.d.cts +1584 -371
- package/dist/v1/index.d.mts +1584 -371
- package/dist/v1/index.d.ts +1584 -371
- package/dist/v1/index.mjs +546 -337
- package/package.json +3 -4
package/dist/v1/index.cjs
CHANGED
|
@@ -12639,7 +12639,8 @@ const organization = sqliteTable("organization", {
|
|
|
12639
12639
|
enum: generalCodes.COUNTRY_CODES_2
|
|
12640
12640
|
}),
|
|
12641
12641
|
vatId: text("vat_id"),
|
|
12642
|
-
court: text("court", { enum: COURT })
|
|
12642
|
+
court: text("court", { enum: COURT }),
|
|
12643
|
+
registerUri: text("register_uri")
|
|
12643
12644
|
});
|
|
12644
12645
|
|
|
12645
12646
|
const partyRelationship = sqliteTable("party_relationship", {
|
|
@@ -12684,7 +12685,8 @@ const bankAccount = sqliteTable("bank_account", {
|
|
|
12684
12685
|
...base,
|
|
12685
12686
|
internalId: text("internal_id"),
|
|
12686
12687
|
...bankAccount$1,
|
|
12687
|
-
partyId: text("party_id").notNull().references(() => party.id)
|
|
12688
|
+
partyId: text("party_id").notNull().references(() => party.id),
|
|
12689
|
+
statementUri: text("statement_uri")
|
|
12688
12690
|
});
|
|
12689
12691
|
|
|
12690
12692
|
const aml = sqliteTable("aml", {
|
|
@@ -12996,7 +12998,8 @@ const bankAccountUpsertSchema = bankAccountBaseInsertSchema.required({
|
|
|
12996
12998
|
id: true
|
|
12997
12999
|
});
|
|
12998
13000
|
const bankAccountSelectSchema = bankAccountUpdateSchema.required().extend({
|
|
12999
|
-
bankCode: zodOpenapi.z.string().nullable()
|
|
13001
|
+
bankCode: zodOpenapi.z.string().nullable(),
|
|
13002
|
+
statementUri: zodOpenapi.z.string().nullable()
|
|
13000
13003
|
});
|
|
13001
13004
|
zodOpenapi.z.array(bankAccountSelectSchema);
|
|
13002
13005
|
|
|
@@ -13084,7 +13087,8 @@ const organizationInsertSchema = zodOpenapi.z.object({
|
|
|
13084
13087
|
operationCountries: zodOpenapi.z.string(),
|
|
13085
13088
|
riskyBusinessType: zodOpenapi.z.string().optional().nullable(),
|
|
13086
13089
|
vatId: zodOpenapi.z.string().optional().nullable(),
|
|
13087
|
-
court: zodOpenapi.z.enum(COURT).optional().nullable()
|
|
13090
|
+
court: zodOpenapi.z.enum(COURT).optional().nullable(),
|
|
13091
|
+
registerUri: zodOpenapi.z.string().optional().nullable()
|
|
13088
13092
|
});
|
|
13089
13093
|
const organizationUpdateSchema$1 = zodOpenapi.z.object({
|
|
13090
13094
|
partyId: zodOpenapi.z.uuid().optional(),
|
|
@@ -13112,7 +13116,8 @@ const organizationUpdateSchema$1 = zodOpenapi.z.object({
|
|
|
13112
13116
|
operationCountries: zodOpenapi.z.string(),
|
|
13113
13117
|
riskyBusinessType: zodOpenapi.z.string().optional().nullable(),
|
|
13114
13118
|
vatId: zodOpenapi.z.string().optional().nullable(),
|
|
13115
|
-
court: zodOpenapi.z.enum(COURT).optional().nullable()
|
|
13119
|
+
court: zodOpenapi.z.enum(COURT).optional().nullable(),
|
|
13120
|
+
registerUri: zodOpenapi.z.string().optional().nullable()
|
|
13116
13121
|
});
|
|
13117
13122
|
const organizationOutputSchema = zodOpenapi.z.object({
|
|
13118
13123
|
id: zodOpenapi.z.uuid(),
|
|
@@ -13144,12 +13149,48 @@ const organizationOutputSchema = zodOpenapi.z.object({
|
|
|
13144
13149
|
stayAbroadCountries: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable(),
|
|
13145
13150
|
vatId: zodOpenapi.z.string().nullable(),
|
|
13146
13151
|
court: zodOpenapi.z.enum(COURT).nullable(),
|
|
13152
|
+
registerUri: zodOpenapi.z.string().nullable(),
|
|
13147
13153
|
createdAt: zodOpenapi.z.coerce.date().nullable(),
|
|
13148
13154
|
updatedAt: zodOpenapi.z.coerce.date().nullable()
|
|
13149
13155
|
});
|
|
13150
13156
|
const organizationSelectSchema = organizationOutputSchema;
|
|
13151
13157
|
zodOpenapi.z.array(organizationOutputSchema);
|
|
13152
13158
|
|
|
13159
|
+
createInsertSchema(idDocument);
|
|
13160
|
+
createUpdateSchema(idDocument);
|
|
13161
|
+
const idDocumentBaseSelectSchema = createSelectSchema(idDocument);
|
|
13162
|
+
const idDocumentInsertSchema = zodOpenapi.z.object({
|
|
13163
|
+
partyId: zodOpenapi.z.uuid(),
|
|
13164
|
+
internalId: zodOpenapi.z.string().optional().nullable(),
|
|
13165
|
+
idDocType: zodOpenapi.z.enum(ID_DOC_TYPE),
|
|
13166
|
+
idDocNumber: zodOpenapi.z.string(),
|
|
13167
|
+
idDocHolderName: zodOpenapi.z.string(),
|
|
13168
|
+
issueDate: zodOpenapi.z.date().optional().nullable(),
|
|
13169
|
+
expirationDate: zodOpenapi.z.date().optional().nullable(),
|
|
13170
|
+
issuer: zodOpenapi.z.string().optional().nullable(),
|
|
13171
|
+
countryOfIssue: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional().nullable(),
|
|
13172
|
+
frontImageUri: zodOpenapi.z.url().optional().nullable(),
|
|
13173
|
+
backImageUri: zodOpenapi.z.url().optional().nullable(),
|
|
13174
|
+
idDocStatus: zodOpenapi.z.enum(ID_DOC_STATUS).optional().nullable()
|
|
13175
|
+
});
|
|
13176
|
+
const idDocumentUpdateSchema = zodOpenapi.z.object({
|
|
13177
|
+
id: zodOpenapi.z.uuid(),
|
|
13178
|
+
partyId: zodOpenapi.z.uuid().optional(),
|
|
13179
|
+
internalId: zodOpenapi.z.string().optional().nullable(),
|
|
13180
|
+
idDocType: zodOpenapi.z.enum(ID_DOC_TYPE).optional(),
|
|
13181
|
+
idDocNumber: zodOpenapi.z.string().optional(),
|
|
13182
|
+
idDocHolderName: zodOpenapi.z.string().optional(),
|
|
13183
|
+
issueDate: zodOpenapi.z.date().optional().nullable(),
|
|
13184
|
+
expirationDate: zodOpenapi.z.date().optional().nullable(),
|
|
13185
|
+
issuer: zodOpenapi.z.string().optional().nullable(),
|
|
13186
|
+
countryOfIssue: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional().nullable(),
|
|
13187
|
+
frontImageUri: zodOpenapi.z.url("Invalid URL format").optional().nullable(),
|
|
13188
|
+
backImageUri: zodOpenapi.z.url("Invalid URL format").optional().nullable(),
|
|
13189
|
+
idDocStatus: zodOpenapi.z.enum(ID_DOC_STATUS).optional().nullable()
|
|
13190
|
+
});
|
|
13191
|
+
const idDocumentSelectSchema = idDocumentBaseSelectSchema;
|
|
13192
|
+
const idDocumentSyncSchema = idDocumentInsertSchema.omit({ partyId: true }).extend({ id: zodOpenapi.z.uuid().optional(), idDocHolderName: zodOpenapi.z.string().optional() });
|
|
13193
|
+
|
|
13153
13194
|
zodOpenapi.z.discriminatedUnion("partyType", [
|
|
13154
13195
|
zodOpenapi.z.object({
|
|
13155
13196
|
partyType: zodOpenapi.z.literal("INDIVIDUAL"),
|
|
@@ -13164,7 +13205,9 @@ const disponentCreateSchema = zodOpenapi.z.discriminatedUnion("partyType", [
|
|
|
13164
13205
|
zodOpenapi.z.object({
|
|
13165
13206
|
partyType: zodOpenapi.z.literal("INDIVIDUAL"),
|
|
13166
13207
|
relationshipType: zodOpenapi.z.enum(PARTY_RELATIONSHIP_TYPE).optional(),
|
|
13167
|
-
data: individualInsertSchema$1.omit({ partyId: true })
|
|
13208
|
+
data: individualInsertSchema$1.omit({ partyId: true }).extend({
|
|
13209
|
+
identityDocuments: zodOpenapi.z.array(idDocumentSyncSchema).nullable().optional()
|
|
13210
|
+
})
|
|
13168
13211
|
}),
|
|
13169
13212
|
zodOpenapi.z.object({
|
|
13170
13213
|
partyType: zodOpenapi.z.literal("ORGANIZATION"),
|
|
@@ -13186,7 +13229,10 @@ const disponentSyncSchema$1 = zodOpenapi.z.discriminatedUnion("partyType", [
|
|
|
13186
13229
|
zodOpenapi.z.object({
|
|
13187
13230
|
partyType: zodOpenapi.z.literal("INDIVIDUAL"),
|
|
13188
13231
|
relationshipType: zodOpenapi.z.enum(PARTY_RELATIONSHIP_TYPE).optional(),
|
|
13189
|
-
data: individualInsertSchema$1.omit({ partyId: true }).extend({
|
|
13232
|
+
data: individualInsertSchema$1.omit({ partyId: true }).extend({
|
|
13233
|
+
id: zodOpenapi.z.uuid().optional(),
|
|
13234
|
+
identityDocuments: zodOpenapi.z.array(idDocumentSyncSchema).nullable().optional()
|
|
13235
|
+
})
|
|
13190
13236
|
}),
|
|
13191
13237
|
zodOpenapi.z.object({
|
|
13192
13238
|
partyType: zodOpenapi.z.literal("ORGANIZATION"),
|
|
@@ -13197,7 +13243,9 @@ const disponentSyncSchema$1 = zodOpenapi.z.discriminatedUnion("partyType", [
|
|
|
13197
13243
|
const disponentSelectSchema = zodOpenapi.z.discriminatedUnion("partyType", [
|
|
13198
13244
|
zodOpenapi.z.object({
|
|
13199
13245
|
partyType: zodOpenapi.z.literal("INDIVIDUAL"),
|
|
13200
|
-
data: individualSelectSchema
|
|
13246
|
+
data: individualSelectSchema.extend({
|
|
13247
|
+
identityDocuments: zodOpenapi.z.array(idDocumentSelectSchema).nullable()
|
|
13248
|
+
})
|
|
13201
13249
|
}),
|
|
13202
13250
|
zodOpenapi.z.object({
|
|
13203
13251
|
partyType: zodOpenapi.z.literal("ORGANIZATION"),
|
|
@@ -13207,39 +13255,6 @@ const disponentSelectSchema = zodOpenapi.z.discriminatedUnion("partyType", [
|
|
|
13207
13255
|
zodOpenapi.z.array(disponentSelectSchema).optional();
|
|
13208
13256
|
zodOpenapi.z.array(disponentUpdateSchema).optional();
|
|
13209
13257
|
|
|
13210
|
-
createInsertSchema(idDocument);
|
|
13211
|
-
createUpdateSchema(idDocument);
|
|
13212
|
-
createSelectSchema(idDocument);
|
|
13213
|
-
const idDocumentInsertSchema = zodOpenapi.z.object({
|
|
13214
|
-
partyId: zodOpenapi.z.uuid(),
|
|
13215
|
-
internalId: zodOpenapi.z.string().optional().nullable(),
|
|
13216
|
-
idDocType: zodOpenapi.z.enum(ID_DOC_TYPE),
|
|
13217
|
-
idDocNumber: zodOpenapi.z.string(),
|
|
13218
|
-
idDocHolderName: zodOpenapi.z.string(),
|
|
13219
|
-
issueDate: zodOpenapi.z.date().optional().nullable(),
|
|
13220
|
-
expirationDate: zodOpenapi.z.date().optional().nullable(),
|
|
13221
|
-
issuer: zodOpenapi.z.string().optional().nullable(),
|
|
13222
|
-
countryOfIssue: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional().nullable(),
|
|
13223
|
-
frontImageUri: zodOpenapi.z.url().optional().nullable(),
|
|
13224
|
-
backImageUri: zodOpenapi.z.url().optional().nullable(),
|
|
13225
|
-
idDocStatus: zodOpenapi.z.enum(ID_DOC_STATUS).optional().nullable()
|
|
13226
|
-
});
|
|
13227
|
-
const idDocumentUpdateSchema = zodOpenapi.z.object({
|
|
13228
|
-
id: zodOpenapi.z.uuid(),
|
|
13229
|
-
partyId: zodOpenapi.z.uuid().optional(),
|
|
13230
|
-
internalId: zodOpenapi.z.string().optional().nullable(),
|
|
13231
|
-
idDocType: zodOpenapi.z.enum(ID_DOC_TYPE).optional(),
|
|
13232
|
-
idDocNumber: zodOpenapi.z.string().optional(),
|
|
13233
|
-
idDocHolderName: zodOpenapi.z.string().optional(),
|
|
13234
|
-
issueDate: zodOpenapi.z.date().optional().nullable(),
|
|
13235
|
-
expirationDate: zodOpenapi.z.date().optional().nullable(),
|
|
13236
|
-
issuer: zodOpenapi.z.string().optional().nullable(),
|
|
13237
|
-
countryOfIssue: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional().nullable(),
|
|
13238
|
-
frontImageUri: zodOpenapi.z.url("Invalid URL format").optional().nullable(),
|
|
13239
|
-
backImageUri: zodOpenapi.z.url("Invalid URL format").optional().nullable(),
|
|
13240
|
-
idDocStatus: zodOpenapi.z.enum(ID_DOC_STATUS).optional().nullable()
|
|
13241
|
-
});
|
|
13242
|
-
|
|
13243
13258
|
const recipientBaseInsertSchema = createInsertSchema(recipient);
|
|
13244
13259
|
const recipientBaseUpdateSchema = createUpdateSchema(recipient);
|
|
13245
13260
|
createSelectSchema(recipient);
|
|
@@ -13250,7 +13265,9 @@ const recipientInsertSchema = bankAccountInsertSchema;
|
|
|
13250
13265
|
const recipientUpdateSchema = recipientBaseUpdateSchema.required({
|
|
13251
13266
|
id: true
|
|
13252
13267
|
});
|
|
13253
|
-
const recipientSelectSchema = bankAccountSelectSchema
|
|
13268
|
+
const recipientSelectSchema = bankAccountSelectSchema.omit({
|
|
13269
|
+
statementUri: true
|
|
13270
|
+
});
|
|
13254
13271
|
|
|
13255
13272
|
const productTxsConfigSchema = zodOpenapi.z.object({
|
|
13256
13273
|
fee: zodOpenapi.z.number(),
|
|
@@ -13295,7 +13312,6 @@ const productsOutputSchema$1 = zodOpenapi.z.object({
|
|
|
13295
13312
|
cbs: productCbsConfigSchema.nullable()
|
|
13296
13313
|
});
|
|
13297
13314
|
|
|
13298
|
-
const idDocumentSyncSchema = idDocumentInsertSchema.omit({ partyId: true }).extend({ id: zodOpenapi.z.uuid().optional(), idDocHolderName: zodOpenapi.z.string().optional() });
|
|
13299
13315
|
const legalRepresentativeSyncSchema$1 = individualInsertSchema$1.omit({ partyId: true }).extend({
|
|
13300
13316
|
id: zodOpenapi.z.uuid().optional(),
|
|
13301
13317
|
dateOfEstablishment: zodOpenapi.z.string(),
|
|
@@ -13344,20 +13360,24 @@ const partyOutputSchema$1 = zodOpenapi.z.object({
|
|
|
13344
13360
|
const createPartySchema = partySchema$2.omit({ id: true });
|
|
13345
13361
|
zodOpenapi.z.object({
|
|
13346
13362
|
party: createPartySchema,
|
|
13347
|
-
personalData: individualInsertSchema$1.omit({ partyId: true }).
|
|
13363
|
+
personalData: individualInsertSchema$1.omit({ partyId: true }).extend({
|
|
13364
|
+
identityDocuments: zodOpenapi.z.array(idDocumentSyncSchema).nullable().optional()
|
|
13365
|
+
}).nullable(),
|
|
13348
13366
|
organizationData: organizationInsertSchema.omit({ partyId: true }).nullable(),
|
|
13349
13367
|
bankAccounts: zodOpenapi.z.array(bankAccountInsertSchema.omit({ partyId: true })).nullable(),
|
|
13350
13368
|
recipients: zodOpenapi.z.array(recipientInsertSchema.omit({ partyId: true })).nullable(),
|
|
13351
13369
|
disponents: zodOpenapi.z.array(disponentCreateSchema).nullable(),
|
|
13352
13370
|
addresses: zodOpenapi.z.array(addressInsertSchema.omit({ partyId: true })),
|
|
13353
|
-
aml: amlInsertSchema.omit({ partyId: true }),
|
|
13371
|
+
aml: amlInsertSchema.omit({ partyId: true }).optional().nullable(),
|
|
13354
13372
|
products: productsInputSchema$2.optional(),
|
|
13355
13373
|
traderIds: zodOpenapi.z.array(zodOpenapi.z.uuid()).optional()
|
|
13356
13374
|
});
|
|
13357
13375
|
zodOpenapi.z.object({
|
|
13358
13376
|
partyId: zodOpenapi.z.uuid(),
|
|
13359
13377
|
party: partySchema$2,
|
|
13360
|
-
personalData: individualUpdateSchema$1.
|
|
13378
|
+
personalData: individualUpdateSchema$1.extend({
|
|
13379
|
+
identityDocuments: zodOpenapi.z.array(idDocumentSyncSchema).nullable().optional()
|
|
13380
|
+
}).optional(),
|
|
13361
13381
|
organizationData: organizationUpdateSchema$1.optional(),
|
|
13362
13382
|
bankAccounts: zodOpenapi.z.array(bankAccountUpsertSchema.partial({ id: true })).optional(),
|
|
13363
13383
|
recipients: zodOpenapi.z.array(recipientUpsertSchema.partial({ id: true })).optional(),
|
|
@@ -13371,7 +13391,9 @@ zodOpenapi.z.object({
|
|
|
13371
13391
|
});
|
|
13372
13392
|
const partySelectOutputSchema = zodOpenapi.z.object({
|
|
13373
13393
|
party: partyOutputSchema$1.nullable(),
|
|
13374
|
-
personalData: individualSelectSchema.
|
|
13394
|
+
personalData: individualSelectSchema.extend({
|
|
13395
|
+
identityDocuments: zodOpenapi.z.array(idDocumentSelectSchema).nullable()
|
|
13396
|
+
}).nullable(),
|
|
13375
13397
|
organizationData: organizationSelectSchema.nullable(),
|
|
13376
13398
|
aml: amlSelectSchema.nullable(),
|
|
13377
13399
|
bankAccounts: zodOpenapi.z.array(bankAccountSelectSchema).nullable(),
|
|
@@ -13386,7 +13408,9 @@ const partySelectOutputSchema = zodOpenapi.z.object({
|
|
|
13386
13408
|
zodOpenapi.z.array(partySelectOutputSchema);
|
|
13387
13409
|
const partySelectDataSchema = zodOpenapi.z.object({
|
|
13388
13410
|
party: partyOutputSchema$1.nullable(),
|
|
13389
|
-
personalData: individualSelectSchema.
|
|
13411
|
+
personalData: individualSelectSchema.extend({
|
|
13412
|
+
identityDocuments: zodOpenapi.z.array(idDocumentSelectSchema).nullable()
|
|
13413
|
+
}).nullable(),
|
|
13390
13414
|
organizationData: organizationSelectSchema.nullable(),
|
|
13391
13415
|
aml: amlSelectSchema.nullable()
|
|
13392
13416
|
});
|
|
@@ -13741,6 +13765,15 @@ const partySchema$1 = zodOpenapi.z.object({
|
|
|
13741
13765
|
note: zodOpenapi.z.string().optional(),
|
|
13742
13766
|
countryCode: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional()
|
|
13743
13767
|
});
|
|
13768
|
+
const idDocumentInputSchema$1 = zodOpenapi.z.object({
|
|
13769
|
+
idDocType: zodOpenapi.z.enum(ID_DOC_TYPE),
|
|
13770
|
+
idDocNumber: zodOpenapi.z.string(),
|
|
13771
|
+
issueDate: zodOpenapi.z.date().optional(),
|
|
13772
|
+
expirationDate: zodOpenapi.z.date().optional(),
|
|
13773
|
+
issuer: zodOpenapi.z.string().optional(),
|
|
13774
|
+
frontImageUri: zodOpenapi.z.string().optional(),
|
|
13775
|
+
backImageUri: zodOpenapi.z.string().optional()
|
|
13776
|
+
});
|
|
13744
13777
|
const individualInsertSchema = zodOpenapi.z.object({
|
|
13745
13778
|
internalId: zodOpenapi.z.string().optional(),
|
|
13746
13779
|
name: zodOpenapi.z.string().min(1, "Jm\xE9no je povinn\xE9"),
|
|
@@ -13766,7 +13799,8 @@ const individualInsertSchema = zodOpenapi.z.object({
|
|
|
13766
13799
|
deathNotification: zodOpenapi.z.date().optional(),
|
|
13767
13800
|
pin: zodOpenapi.z.string().optional(),
|
|
13768
13801
|
stayAbroad: zodOpenapi.z.boolean().optional(),
|
|
13769
|
-
stayAbroadCountries: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional()
|
|
13802
|
+
stayAbroadCountries: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional(),
|
|
13803
|
+
identityDocuments: zodOpenapi.z.array(idDocumentInputSchema$1).optional()
|
|
13770
13804
|
});
|
|
13771
13805
|
const createOrganizationInputSchema = zodOpenapi.z.object({
|
|
13772
13806
|
internalId: zodOpenapi.z.string().optional(),
|
|
@@ -13793,7 +13827,8 @@ const createOrganizationInputSchema = zodOpenapi.z.object({
|
|
|
13793
13827
|
operationCountries: zodOpenapi.z.string(),
|
|
13794
13828
|
riskyBusinessType: zodOpenapi.z.string().optional(),
|
|
13795
13829
|
vatId: zodOpenapi.z.string().optional(),
|
|
13796
|
-
court: zodOpenapi.z.enum(COURT).optional()
|
|
13830
|
+
court: zodOpenapi.z.enum(COURT).optional(),
|
|
13831
|
+
registerUri: zodOpenapi.z.string().optional()
|
|
13797
13832
|
});
|
|
13798
13833
|
const updateBankAccountSchema = zodOpenapi.z.object({
|
|
13799
13834
|
...bankAccountMetadataSchema.shape,
|
|
@@ -13806,7 +13841,8 @@ const updateBankAccountSchema = zodOpenapi.z.object({
|
|
|
13806
13841
|
number: zodOpenapi.z.string().min(1, "\u010C\xEDslo \xFA\u010Dtu je povinn\xE9").optional(),
|
|
13807
13842
|
currency: zodOpenapi.z.enum(generalCodes.CURRENCY_CODES, "M\u011Bna je povinn\xE1"),
|
|
13808
13843
|
countryCode: bankAccountMetadataSchema.shape.countryCode.nonoptional(),
|
|
13809
|
-
id: bankAccountMetadataSchema.shape.id.nonoptional()
|
|
13844
|
+
id: bankAccountMetadataSchema.shape.id.nonoptional(),
|
|
13845
|
+
statementUri: zodOpenapi.z.string().optional()
|
|
13810
13846
|
});
|
|
13811
13847
|
const bankAccountInputSchema = updateBankAccountSchema.required({
|
|
13812
13848
|
holderName: true,
|
|
@@ -13934,15 +13970,6 @@ const ownerInputSchema = zodOpenapi.z.object({
|
|
|
13934
13970
|
sharePercentage: zodOpenapi.z.number({ error: "Pod\xEDl na spole\u010Dnosti je povinn\xFD" }).min(1, "Pod\xEDl na spole\u010Dnosti je povinn\xFD").max(100),
|
|
13935
13971
|
shareEstablishedAt: zodOpenapi.z.string().min(1, "Datum vzniku pod\xEDlu je povinn\xFD")
|
|
13936
13972
|
});
|
|
13937
|
-
const idDocumentInputSchema$1 = zodOpenapi.z.object({
|
|
13938
|
-
idDocType: zodOpenapi.z.enum(ID_DOC_TYPE),
|
|
13939
|
-
idDocNumber: zodOpenapi.z.string(),
|
|
13940
|
-
issueDate: zodOpenapi.z.date().optional(),
|
|
13941
|
-
expirationDate: zodOpenapi.z.date().optional(),
|
|
13942
|
-
issuer: zodOpenapi.z.string().optional(),
|
|
13943
|
-
frontImageUri: zodOpenapi.z.string().optional(),
|
|
13944
|
-
backImageUri: zodOpenapi.z.string().optional()
|
|
13945
|
-
});
|
|
13946
13973
|
const legalRepresentativeInputSchema = zodOpenapi.z.object({
|
|
13947
13974
|
titleBefore: zodOpenapi.z.string().optional(),
|
|
13948
13975
|
name: zodOpenapi.z.string().min(1, "Jm\xE9no je povinn\xE9"),
|
|
@@ -14022,8 +14049,15 @@ new zodOpenapi.OpenAPIHono().openapi(
|
|
|
14022
14049
|
createPartyRoute,
|
|
14023
14050
|
async (context) => {
|
|
14024
14051
|
const { owners, legalRepresentatives, ...partyInput } = context.req.valid("json");
|
|
14052
|
+
const disponentsWithDocs = (partyInput.disponents ?? []).filter(
|
|
14053
|
+
(d) => d.partyType === "INDIVIDUAL" && !!d.data.identityDocuments?.length
|
|
14054
|
+
);
|
|
14055
|
+
const disponentsForBatch = (partyInput.disponents ?? []).filter(
|
|
14056
|
+
(d) => !(d.partyType === "INDIVIDUAL" && !!d.data.identityDocuments?.length)
|
|
14057
|
+
);
|
|
14025
14058
|
const { data: partyData, error } = await context.env.MASTER_DATA_MANAGEMENT_SERVICE.createParty({
|
|
14026
14059
|
...partyInput,
|
|
14060
|
+
disponents: disponentsForBatch,
|
|
14027
14061
|
party: { ...partyInput.party, isRoot: true }
|
|
14028
14062
|
});
|
|
14029
14063
|
if (!partyData || error) {
|
|
@@ -14035,6 +14069,104 @@ new zodOpenapi.OpenAPIHono().openapi(
|
|
|
14035
14069
|
);
|
|
14036
14070
|
}
|
|
14037
14071
|
const mdm = context.env.MASTER_DATA_MANAGEMENT_SERVICE;
|
|
14072
|
+
const docService = context.env.DOCUMENT_SERVICE;
|
|
14073
|
+
if (partyInput.organizationData?.registerUri) {
|
|
14074
|
+
await docService.acknowledgeDocument({
|
|
14075
|
+
storageUrl: partyInput.organizationData.registerUri,
|
|
14076
|
+
entityId: partyData.id
|
|
14077
|
+
});
|
|
14078
|
+
}
|
|
14079
|
+
for (const ba of partyInput.bankAccounts ?? []) {
|
|
14080
|
+
if (ba.statementUri) {
|
|
14081
|
+
await docService.acknowledgeDocument({
|
|
14082
|
+
storageUrl: ba.statementUri,
|
|
14083
|
+
entityId: partyData.id
|
|
14084
|
+
});
|
|
14085
|
+
}
|
|
14086
|
+
}
|
|
14087
|
+
for (const [i, doc] of (partyInput.personalData?.identityDocuments ?? []).entries()) {
|
|
14088
|
+
const idDocId = partyData.personalIdDocIds?.[i] ?? partyData.id;
|
|
14089
|
+
if (doc.frontImageUri) {
|
|
14090
|
+
await docService.acknowledgeDocument({
|
|
14091
|
+
storageUrl: doc.frontImageUri,
|
|
14092
|
+
entityId: idDocId
|
|
14093
|
+
});
|
|
14094
|
+
}
|
|
14095
|
+
if (doc.backImageUri) {
|
|
14096
|
+
await docService.acknowledgeDocument({
|
|
14097
|
+
storageUrl: doc.backImageUri,
|
|
14098
|
+
entityId: idDocId
|
|
14099
|
+
});
|
|
14100
|
+
}
|
|
14101
|
+
}
|
|
14102
|
+
for (const disponent of disponentsWithDocs) {
|
|
14103
|
+
const { identityDocuments, ...individualData } = disponent.data;
|
|
14104
|
+
const { data: disponentParty, error: disponentError } = await mdm.createParty({
|
|
14105
|
+
party: {
|
|
14106
|
+
partyType: "INDIVIDUAL",
|
|
14107
|
+
language: partyInput.party.language,
|
|
14108
|
+
customerStatus: "NEW"
|
|
14109
|
+
},
|
|
14110
|
+
personalData: individualData,
|
|
14111
|
+
organizationData: null,
|
|
14112
|
+
bankAccounts: null,
|
|
14113
|
+
recipients: null,
|
|
14114
|
+
disponents: null,
|
|
14115
|
+
addresses: [],
|
|
14116
|
+
aml: null
|
|
14117
|
+
});
|
|
14118
|
+
if (!disponentParty || disponentError) {
|
|
14119
|
+
return context.json(
|
|
14120
|
+
{ message: "Could not create disponent party" },
|
|
14121
|
+
500
|
|
14122
|
+
);
|
|
14123
|
+
}
|
|
14124
|
+
const { error: linkDisponentError } = await mdm.linkPartyToParty({
|
|
14125
|
+
fromPartyId: disponentParty.id,
|
|
14126
|
+
toPartyId: partyData.id,
|
|
14127
|
+
relationshipType: "AUTHORIZED_SIGNATORY"
|
|
14128
|
+
});
|
|
14129
|
+
if (linkDisponentError) {
|
|
14130
|
+
return context.json(
|
|
14131
|
+
{ message: "Could not link disponent to party" },
|
|
14132
|
+
500
|
|
14133
|
+
);
|
|
14134
|
+
}
|
|
14135
|
+
for (const doc of identityDocuments ?? []) {
|
|
14136
|
+
const { data: createdIdDoc, error: idDocError } = await mdm.createIdDocument({
|
|
14137
|
+
partyId: disponentParty.id,
|
|
14138
|
+
idDocument: {
|
|
14139
|
+
partyId: disponentParty.id,
|
|
14140
|
+
idDocType: doc.idDocType,
|
|
14141
|
+
idDocNumber: doc.idDocNumber,
|
|
14142
|
+
idDocHolderName: `${individualData.name} ${individualData.surname}`,
|
|
14143
|
+
issueDate: doc.issueDate,
|
|
14144
|
+
expirationDate: doc.expirationDate,
|
|
14145
|
+
issuer: doc.issuer,
|
|
14146
|
+
frontImageUri: doc.frontImageUri,
|
|
14147
|
+
backImageUri: doc.backImageUri
|
|
14148
|
+
}
|
|
14149
|
+
});
|
|
14150
|
+
if (!createdIdDoc || idDocError) {
|
|
14151
|
+
return context.json(
|
|
14152
|
+
{ message: "Could not create disponent identity document" },
|
|
14153
|
+
500
|
|
14154
|
+
);
|
|
14155
|
+
}
|
|
14156
|
+
if (doc.frontImageUri) {
|
|
14157
|
+
await docService.acknowledgeDocument({
|
|
14158
|
+
storageUrl: doc.frontImageUri,
|
|
14159
|
+
entityId: createdIdDoc.id
|
|
14160
|
+
});
|
|
14161
|
+
}
|
|
14162
|
+
if (doc.backImageUri) {
|
|
14163
|
+
await docService.acknowledgeDocument({
|
|
14164
|
+
storageUrl: doc.backImageUri,
|
|
14165
|
+
entityId: createdIdDoc.id
|
|
14166
|
+
});
|
|
14167
|
+
}
|
|
14168
|
+
}
|
|
14169
|
+
}
|
|
14038
14170
|
if (owners?.length) {
|
|
14039
14171
|
for (const owner of owners) {
|
|
14040
14172
|
const { address, sharePercentage, shareEstablishedAt, ...individual } = owner;
|
|
@@ -14050,7 +14182,7 @@ new zodOpenapi.OpenAPIHono().openapi(
|
|
|
14050
14182
|
recipients: null,
|
|
14051
14183
|
disponents: null,
|
|
14052
14184
|
addresses: [{ ...address, addressType: "PERMANENT_ADDRESS" }],
|
|
14053
|
-
aml:
|
|
14185
|
+
aml: null
|
|
14054
14186
|
});
|
|
14055
14187
|
if (ownerParty && !ownerError) {
|
|
14056
14188
|
await mdm.linkPartyToParty({
|
|
@@ -14083,45 +14215,60 @@ new zodOpenapi.OpenAPIHono().openapi(
|
|
|
14083
14215
|
recipients: null,
|
|
14084
14216
|
disponents: null,
|
|
14085
14217
|
addresses: [{ ...address, addressType: "PERMANENT_ADDRESS" }],
|
|
14086
|
-
aml:
|
|
14218
|
+
aml: null
|
|
14087
14219
|
});
|
|
14088
|
-
if (repParty
|
|
14089
|
-
|
|
14090
|
-
|
|
14091
|
-
|
|
14092
|
-
|
|
14093
|
-
|
|
14094
|
-
|
|
14095
|
-
|
|
14096
|
-
|
|
14097
|
-
|
|
14098
|
-
|
|
14099
|
-
|
|
14100
|
-
|
|
14101
|
-
|
|
14102
|
-
|
|
14103
|
-
|
|
14104
|
-
|
|
14105
|
-
|
|
14106
|
-
|
|
14107
|
-
|
|
14108
|
-
|
|
14109
|
-
|
|
14110
|
-
|
|
14111
|
-
|
|
14112
|
-
|
|
14113
|
-
|
|
14114
|
-
|
|
14115
|
-
|
|
14116
|
-
|
|
14117
|
-
|
|
14118
|
-
|
|
14119
|
-
await docService.acknowledgeDocument({
|
|
14120
|
-
storageUrl: doc.backImageUri,
|
|
14121
|
-
entityId: repParty.id
|
|
14122
|
-
});
|
|
14123
|
-
}
|
|
14220
|
+
if (!repParty || repError) {
|
|
14221
|
+
return context.json(
|
|
14222
|
+
{ message: "Could not create legal representative party" },
|
|
14223
|
+
500
|
|
14224
|
+
);
|
|
14225
|
+
}
|
|
14226
|
+
const { error: linkRepError } = await mdm.linkPartyToParty({
|
|
14227
|
+
fromPartyId: repParty.id,
|
|
14228
|
+
toPartyId: partyData.id,
|
|
14229
|
+
relationshipType: "BOARD_MEMBER",
|
|
14230
|
+
fromDate: new Date(dateOfEstablishment)
|
|
14231
|
+
});
|
|
14232
|
+
if (linkRepError) {
|
|
14233
|
+
return context.json(
|
|
14234
|
+
{ message: "Could not link legal representative to party" },
|
|
14235
|
+
500
|
|
14236
|
+
);
|
|
14237
|
+
}
|
|
14238
|
+
for (const doc of identityDocuments ?? []) {
|
|
14239
|
+
const { data: createdIdDoc, error: idDocError } = await mdm.createIdDocument({
|
|
14240
|
+
partyId: repParty.id,
|
|
14241
|
+
idDocument: {
|
|
14242
|
+
partyId: repParty.id,
|
|
14243
|
+
idDocType: doc.idDocType,
|
|
14244
|
+
idDocNumber: doc.idDocNumber,
|
|
14245
|
+
idDocHolderName: `${individual.name} ${individual.surname}`,
|
|
14246
|
+
issueDate: doc.issueDate,
|
|
14247
|
+
expirationDate: doc.expirationDate,
|
|
14248
|
+
issuer: doc.issuer,
|
|
14249
|
+
frontImageUri: doc.frontImageUri,
|
|
14250
|
+
backImageUri: doc.backImageUri
|
|
14124
14251
|
}
|
|
14252
|
+
});
|
|
14253
|
+
if (!createdIdDoc || idDocError) {
|
|
14254
|
+
return context.json(
|
|
14255
|
+
{
|
|
14256
|
+
message: "Could not create legal representative identity document"
|
|
14257
|
+
},
|
|
14258
|
+
500
|
|
14259
|
+
);
|
|
14260
|
+
}
|
|
14261
|
+
if (doc.frontImageUri) {
|
|
14262
|
+
await docService.acknowledgeDocument({
|
|
14263
|
+
storageUrl: doc.frontImageUri,
|
|
14264
|
+
entityId: createdIdDoc.id
|
|
14265
|
+
});
|
|
14266
|
+
}
|
|
14267
|
+
if (doc.backImageUri) {
|
|
14268
|
+
await docService.acknowledgeDocument({
|
|
14269
|
+
storageUrl: doc.backImageUri,
|
|
14270
|
+
entityId: createdIdDoc.id
|
|
14271
|
+
});
|
|
14125
14272
|
}
|
|
14126
14273
|
}
|
|
14127
14274
|
}
|
|
@@ -14144,6 +14291,16 @@ const partySchema = zodOpenapi.z.object({
|
|
|
14144
14291
|
note: zodOpenapi.z.string().optional(),
|
|
14145
14292
|
countryCode: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional()
|
|
14146
14293
|
});
|
|
14294
|
+
const idDocumentInputSchema = zodOpenapi.z.object({
|
|
14295
|
+
id: zodOpenapi.z.uuid().optional(),
|
|
14296
|
+
idDocType: zodOpenapi.z.enum(ID_DOC_TYPE),
|
|
14297
|
+
idDocNumber: zodOpenapi.z.string(),
|
|
14298
|
+
issueDate: zodOpenapi.z.date().optional(),
|
|
14299
|
+
expirationDate: zodOpenapi.z.date().optional(),
|
|
14300
|
+
issuer: zodOpenapi.z.string().optional(),
|
|
14301
|
+
frontImageUri: zodOpenapi.z.string().optional(),
|
|
14302
|
+
backImageUri: zodOpenapi.z.string().optional()
|
|
14303
|
+
});
|
|
14147
14304
|
const individualUpdateSchema = zodOpenapi.z.object({
|
|
14148
14305
|
id: zodOpenapi.z.uuid(),
|
|
14149
14306
|
partyId: zodOpenapi.z.uuid(),
|
|
@@ -14171,7 +14328,8 @@ const individualUpdateSchema = zodOpenapi.z.object({
|
|
|
14171
14328
|
deathNotification: zodOpenapi.z.date().optional(),
|
|
14172
14329
|
pin: zodOpenapi.z.string().optional(),
|
|
14173
14330
|
stayAbroad: zodOpenapi.z.boolean().optional(),
|
|
14174
|
-
stayAbroadCountries: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional()
|
|
14331
|
+
stayAbroadCountries: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional(),
|
|
14332
|
+
identityDocuments: zodOpenapi.z.array(idDocumentInputSchema).optional()
|
|
14175
14333
|
});
|
|
14176
14334
|
const organizationUpdateSchema = zodOpenapi.z.object({
|
|
14177
14335
|
id: zodOpenapi.z.uuid(),
|
|
@@ -14200,7 +14358,8 @@ const organizationUpdateSchema = zodOpenapi.z.object({
|
|
|
14200
14358
|
operationCountries: zodOpenapi.z.string(),
|
|
14201
14359
|
riskyBusinessType: zodOpenapi.z.string().optional(),
|
|
14202
14360
|
vatId: zodOpenapi.z.string().nullable().optional(),
|
|
14203
|
-
court: zodOpenapi.z.enum(COURT).nullable().optional()
|
|
14361
|
+
court: zodOpenapi.z.enum(COURT).nullable().optional(),
|
|
14362
|
+
registerUri: zodOpenapi.z.string().optional()
|
|
14204
14363
|
});
|
|
14205
14364
|
const syncBankAccountSchema = zodOpenapi.z.object({
|
|
14206
14365
|
...bankAccountMetadataSchema.shape,
|
|
@@ -14210,7 +14369,8 @@ const syncBankAccountSchema = zodOpenapi.z.object({
|
|
|
14210
14369
|
number: zodOpenapi.z.string().optional(),
|
|
14211
14370
|
currency: bankAccountMetadataSchema.shape.currency.nonoptional(),
|
|
14212
14371
|
countryCode: bankAccountMetadataSchema.shape.countryCode.nonoptional(),
|
|
14213
|
-
id: zodOpenapi.z.uuid().optional()
|
|
14372
|
+
id: zodOpenapi.z.uuid().optional(),
|
|
14373
|
+
statementUri: zodOpenapi.z.string().optional()
|
|
14214
14374
|
});
|
|
14215
14375
|
const disponentIndividualSyncDataSchema = zodOpenapi.z.object({
|
|
14216
14376
|
id: zodOpenapi.z.uuid().optional(),
|
|
@@ -14237,7 +14397,8 @@ const disponentIndividualSyncDataSchema = zodOpenapi.z.object({
|
|
|
14237
14397
|
deathNotification: zodOpenapi.z.date().optional(),
|
|
14238
14398
|
pin: zodOpenapi.z.string().optional(),
|
|
14239
14399
|
stayAbroad: zodOpenapi.z.boolean().optional(),
|
|
14240
|
-
stayAbroadCountries: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional()
|
|
14400
|
+
stayAbroadCountries: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional(),
|
|
14401
|
+
identityDocuments: zodOpenapi.z.array(idDocumentInputSchema).optional()
|
|
14241
14402
|
});
|
|
14242
14403
|
const disponentOrganizationSyncDataSchema = zodOpenapi.z.object({
|
|
14243
14404
|
id: zodOpenapi.z.uuid().optional(),
|
|
@@ -14262,7 +14423,8 @@ const disponentOrganizationSyncDataSchema = zodOpenapi.z.object({
|
|
|
14262
14423
|
companyObjectsDescription: zodOpenapi.z.string(),
|
|
14263
14424
|
turnover3years: zodOpenapi.z.number(),
|
|
14264
14425
|
operationCountries: zodOpenapi.z.string(),
|
|
14265
|
-
riskyBusinessType: zodOpenapi.z.string().optional()
|
|
14426
|
+
riskyBusinessType: zodOpenapi.z.string().optional(),
|
|
14427
|
+
registerUri: zodOpenapi.z.string().optional()
|
|
14266
14428
|
});
|
|
14267
14429
|
const disponentSyncSchema = zodOpenapi.z.discriminatedUnion("partyType", [
|
|
14268
14430
|
zodOpenapi.z.object({
|
|
@@ -14377,15 +14539,6 @@ const ownerSyncSchema = zodOpenapi.z.object({
|
|
|
14377
14539
|
sharePercentage: zodOpenapi.z.number().max(100),
|
|
14378
14540
|
shareEstablishedAt: zodOpenapi.z.string().min(1, "Datum vzniku pod\xEDlu je povinn\xFD")
|
|
14379
14541
|
});
|
|
14380
|
-
const idDocumentInputSchema = zodOpenapi.z.object({
|
|
14381
|
-
idDocType: zodOpenapi.z.enum(ID_DOC_TYPE),
|
|
14382
|
-
idDocNumber: zodOpenapi.z.string(),
|
|
14383
|
-
issueDate: zodOpenapi.z.date().optional(),
|
|
14384
|
-
expirationDate: zodOpenapi.z.date().optional(),
|
|
14385
|
-
issuer: zodOpenapi.z.string().optional(),
|
|
14386
|
-
frontImageUri: zodOpenapi.z.string().optional(),
|
|
14387
|
-
backImageUri: zodOpenapi.z.string().optional()
|
|
14388
|
-
});
|
|
14389
14542
|
const legalRepresentativeSyncSchema = zodOpenapi.z.object({
|
|
14390
14543
|
id: zodOpenapi.z.uuid().optional(),
|
|
14391
14544
|
titleBefore: zodOpenapi.z.string().optional(),
|
|
@@ -14488,24 +14641,74 @@ new zodOpenapi.OpenAPIHono().openapi(
|
|
|
14488
14641
|
if (!updatedParty || partyError) {
|
|
14489
14642
|
return context.json({ message: "Could not update a Party" }, 404);
|
|
14490
14643
|
}
|
|
14644
|
+
const docService = context.env.DOCUMENT_SERVICE;
|
|
14645
|
+
if (party.organizationData?.registerUri) {
|
|
14646
|
+
await docService.acknowledgeDocument({
|
|
14647
|
+
storageUrl: party.organizationData.registerUri,
|
|
14648
|
+
entityId: partyId
|
|
14649
|
+
});
|
|
14650
|
+
}
|
|
14651
|
+
for (const ba of party.bankAccounts ?? []) {
|
|
14652
|
+
if (ba.statementUri) {
|
|
14653
|
+
await docService.acknowledgeDocument({
|
|
14654
|
+
storageUrl: ba.statementUri,
|
|
14655
|
+
entityId: partyId
|
|
14656
|
+
});
|
|
14657
|
+
}
|
|
14658
|
+
}
|
|
14659
|
+
if (party.personalData?.identityDocuments?.length) {
|
|
14660
|
+
let newDocIdx = 0;
|
|
14661
|
+
for (const doc of party.personalData.identityDocuments) {
|
|
14662
|
+
const idDocEntityId = doc.id ? doc.id : updatedParty.newPersonalIdDocIds?.[newDocIdx++] ?? partyId;
|
|
14663
|
+
if (doc.frontImageUri) {
|
|
14664
|
+
await docService.acknowledgeDocument({
|
|
14665
|
+
storageUrl: doc.frontImageUri,
|
|
14666
|
+
entityId: idDocEntityId
|
|
14667
|
+
});
|
|
14668
|
+
}
|
|
14669
|
+
if (doc.backImageUri) {
|
|
14670
|
+
await docService.acknowledgeDocument({
|
|
14671
|
+
storageUrl: doc.backImageUri,
|
|
14672
|
+
entityId: idDocEntityId
|
|
14673
|
+
});
|
|
14674
|
+
}
|
|
14675
|
+
}
|
|
14676
|
+
}
|
|
14491
14677
|
if (party.legalRepresentatives?.length) {
|
|
14492
|
-
|
|
14678
|
+
let newBmDocIdx = 0;
|
|
14493
14679
|
for (const rep of party.legalRepresentatives) {
|
|
14494
|
-
|
|
14495
|
-
|
|
14496
|
-
|
|
14497
|
-
|
|
14498
|
-
|
|
14499
|
-
|
|
14500
|
-
|
|
14501
|
-
|
|
14502
|
-
|
|
14503
|
-
|
|
14504
|
-
|
|
14505
|
-
|
|
14506
|
-
|
|
14507
|
-
|
|
14508
|
-
|
|
14680
|
+
if (rep.id) continue;
|
|
14681
|
+
for (const doc of rep.identityDocuments ?? []) {
|
|
14682
|
+
const idDocEntityId = updatedParty.newBoardMemberIdDocIds?.[newBmDocIdx++] ?? partyId;
|
|
14683
|
+
if (doc.frontImageUri) {
|
|
14684
|
+
await docService.acknowledgeDocument({
|
|
14685
|
+
storageUrl: doc.frontImageUri,
|
|
14686
|
+
entityId: idDocEntityId
|
|
14687
|
+
});
|
|
14688
|
+
}
|
|
14689
|
+
if (doc.backImageUri) {
|
|
14690
|
+
await docService.acknowledgeDocument({
|
|
14691
|
+
storageUrl: doc.backImageUri,
|
|
14692
|
+
entityId: idDocEntityId
|
|
14693
|
+
});
|
|
14694
|
+
}
|
|
14695
|
+
}
|
|
14696
|
+
}
|
|
14697
|
+
for (const rep of party.legalRepresentatives) {
|
|
14698
|
+
if (!rep.id) continue;
|
|
14699
|
+
for (const doc of rep.identityDocuments ?? []) {
|
|
14700
|
+
const idDocEntityId = doc.id ? doc.id : updatedParty.newBoardMemberIdDocIds?.[newBmDocIdx++] ?? partyId;
|
|
14701
|
+
if (doc.frontImageUri) {
|
|
14702
|
+
await docService.acknowledgeDocument({
|
|
14703
|
+
storageUrl: doc.frontImageUri,
|
|
14704
|
+
entityId: idDocEntityId
|
|
14705
|
+
});
|
|
14706
|
+
}
|
|
14707
|
+
if (doc.backImageUri) {
|
|
14708
|
+
await docService.acknowledgeDocument({
|
|
14709
|
+
storageUrl: doc.backImageUri,
|
|
14710
|
+
entityId: idDocEntityId
|
|
14711
|
+
});
|
|
14509
14712
|
}
|
|
14510
14713
|
}
|
|
14511
14714
|
}
|
|
@@ -14520,53 +14723,215 @@ new zodOpenapi.OpenAPIHono().openapi(
|
|
|
14520
14723
|
}
|
|
14521
14724
|
);
|
|
14522
14725
|
|
|
14523
|
-
const
|
|
14524
|
-
|
|
14525
|
-
|
|
14526
|
-
language: zodOpenapi.z.enum(generalCodes.LANGUAGE_CODES),
|
|
14527
|
-
id: zodOpenapi.z.uuid(),
|
|
14528
|
-
internalId: zodOpenapi.z.string().nullable(),
|
|
14529
|
-
note: zodOpenapi.z.string().nullable(),
|
|
14530
|
-
countryCode: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable(),
|
|
14531
|
-
createdAt: zodOpenapi.z.date().nullable(),
|
|
14532
|
-
updatedAt: zodOpenapi.z.date().nullable(),
|
|
14533
|
-
isRoot: zodOpenapi.z.boolean()
|
|
14726
|
+
const DOCUMENT_SIDE = ["front", "back"];
|
|
14727
|
+
const paramsSchema$2 = zodOpenapi.z.object({
|
|
14728
|
+
partyId: zodOpenapi.z.uuid()
|
|
14534
14729
|
});
|
|
14535
|
-
const
|
|
14536
|
-
id: zodOpenapi.z.uuid(),
|
|
14730
|
+
const idDocumentCreateInputSchema = zodOpenapi.z.object({
|
|
14537
14731
|
partyId: zodOpenapi.z.uuid(),
|
|
14538
|
-
|
|
14539
|
-
|
|
14540
|
-
|
|
14541
|
-
|
|
14542
|
-
|
|
14543
|
-
|
|
14544
|
-
|
|
14545
|
-
|
|
14546
|
-
personalId: zodOpenapi.z.string(),
|
|
14547
|
-
gender: zodOpenapi.z.enum(GENDER),
|
|
14548
|
-
citizenship: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
14549
|
-
citizenshipOther: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable(),
|
|
14550
|
-
employer: zodOpenapi.z.string().nullable(),
|
|
14551
|
-
employerCountry: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable(),
|
|
14552
|
-
registeredNumber: zodOpenapi.z.string().nullable(),
|
|
14553
|
-
isPep: zodOpenapi.z.boolean(),
|
|
14554
|
-
titleBefore: zodOpenapi.z.string().nullable(),
|
|
14555
|
-
titleAfter: zodOpenapi.z.string().nullable(),
|
|
14556
|
-
birthSurname: zodOpenapi.z.string().nullable(),
|
|
14557
|
-
vocativeTitle: zodOpenapi.z.string().nullable(),
|
|
14558
|
-
deathDate: zodOpenapi.z.coerce.date().nullable(),
|
|
14559
|
-
deathNotification: zodOpenapi.z.coerce.date().nullable(),
|
|
14560
|
-
pin: zodOpenapi.z.string().nullable(),
|
|
14561
|
-
stayAbroad: zodOpenapi.z.boolean().nullable(),
|
|
14562
|
-
stayAbroadCountries: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable(),
|
|
14563
|
-
createdAt: zodOpenapi.z.coerce.date().nullable(),
|
|
14564
|
-
updatedAt: zodOpenapi.z.coerce.date().nullable()
|
|
14732
|
+
idDocType: zodOpenapi.z.enum(ID_DOC_TYPE),
|
|
14733
|
+
idDocNumber: zodOpenapi.z.string(),
|
|
14734
|
+
idDocHolderName: zodOpenapi.z.string(),
|
|
14735
|
+
issueDate: zodOpenapi.z.coerce.date().optional(),
|
|
14736
|
+
expirationDate: zodOpenapi.z.coerce.date().optional(),
|
|
14737
|
+
issuer: zodOpenapi.z.string().optional(),
|
|
14738
|
+
countryOfIssue: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional(),
|
|
14739
|
+
idDocStatus: zodOpenapi.z.enum(ID_DOC_STATUS).optional()
|
|
14565
14740
|
});
|
|
14566
|
-
const
|
|
14741
|
+
const idDocumentMultipartSchema = zodOpenapi.z.object({
|
|
14742
|
+
idDocument: zodOpenapi.z.string(),
|
|
14743
|
+
documentSide: zodOpenapi.z.enum(DOCUMENT_SIDE),
|
|
14744
|
+
file: zodOpenapi.z.any()
|
|
14745
|
+
});
|
|
14746
|
+
const multipartOpenApiSchema = zodOpenapi.z.object({
|
|
14747
|
+
idDocument: zodOpenapi.z.string().openapi({
|
|
14748
|
+
description: "JSON stringified IdDocument payload"
|
|
14749
|
+
}),
|
|
14750
|
+
documentSide: zodOpenapi.z.enum(DOCUMENT_SIDE),
|
|
14751
|
+
file: zodOpenapi.z.any().openapi({
|
|
14752
|
+
type: "string",
|
|
14753
|
+
format: "binary"
|
|
14754
|
+
})
|
|
14755
|
+
});
|
|
14756
|
+
const idDocumentOutputSchema = zodOpenapi.z.object({
|
|
14757
|
+
id: zodOpenapi.z.uuid(),
|
|
14758
|
+
createdAt: zodOpenapi.z.iso.datetime().nullable(),
|
|
14759
|
+
updatedAt: zodOpenapi.z.iso.datetime().nullable(),
|
|
14760
|
+
deletedAt: zodOpenapi.z.iso.datetime().nullable(),
|
|
14567
14761
|
partyId: zodOpenapi.z.uuid(),
|
|
14568
|
-
|
|
14569
|
-
|
|
14762
|
+
idDocType: zodOpenapi.z.enum(ID_DOC_TYPE),
|
|
14763
|
+
idDocNumber: zodOpenapi.z.string(),
|
|
14764
|
+
idDocHolderName: zodOpenapi.z.string(),
|
|
14765
|
+
issueDate: zodOpenapi.z.iso.datetime().nullable(),
|
|
14766
|
+
expirationDate: zodOpenapi.z.iso.datetime().nullable(),
|
|
14767
|
+
issuer: zodOpenapi.z.string().nullable(),
|
|
14768
|
+
countryOfIssue: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable(),
|
|
14769
|
+
frontImageUri: zodOpenapi.z.string().nullable(),
|
|
14770
|
+
backImageUri: zodOpenapi.z.string().nullable(),
|
|
14771
|
+
idDocStatus: zodOpenapi.z.enum(ID_DOC_STATUS).nullable()
|
|
14772
|
+
});
|
|
14773
|
+
const responseBodySchema$3 = zodOpenapi.z.object({
|
|
14774
|
+
message: zodOpenapi.z.string(),
|
|
14775
|
+
idDocument: idDocumentOutputSchema
|
|
14776
|
+
});
|
|
14777
|
+
const createDocumentRoute = zodOpenapi.createRoute({
|
|
14778
|
+
method: "post",
|
|
14779
|
+
path: "/",
|
|
14780
|
+
summary: "Create ID Document",
|
|
14781
|
+
tags: ["ID Documents"],
|
|
14782
|
+
description: "Creates a new identification document for the specified party and uploads the document image (front or back side). Accepts multipart form data with the document metadata as a JSON string and the file as a binary attachment.",
|
|
14783
|
+
// middleware: [jwt, signature(), idempotency()],
|
|
14784
|
+
// security: [{ JwtAuth: [] }],
|
|
14785
|
+
request: {
|
|
14786
|
+
// headers: z.object({
|
|
14787
|
+
// 'X-Idempotency-Key': XIdempotencyKeyHeaderSchema,
|
|
14788
|
+
// 'X-Signature': XSignatureHeaderSchema,
|
|
14789
|
+
// 'X-Signature-Key': XSignatureKeyHeaderSchema,
|
|
14790
|
+
// }),
|
|
14791
|
+
body: {
|
|
14792
|
+
content: {
|
|
14793
|
+
"multipart/form-data": {
|
|
14794
|
+
schema: multipartOpenApiSchema
|
|
14795
|
+
}
|
|
14796
|
+
},
|
|
14797
|
+
required: true
|
|
14798
|
+
},
|
|
14799
|
+
params: paramsSchema$2
|
|
14800
|
+
},
|
|
14801
|
+
responses: {
|
|
14802
|
+
200: {
|
|
14803
|
+
description: "Document created and file uploaded",
|
|
14804
|
+
content: {
|
|
14805
|
+
"application/json": {
|
|
14806
|
+
schema: responseBodySchema$3
|
|
14807
|
+
}
|
|
14808
|
+
}
|
|
14809
|
+
},
|
|
14810
|
+
400: {
|
|
14811
|
+
description: "Invalid request",
|
|
14812
|
+
content: {
|
|
14813
|
+
"application/json": {
|
|
14814
|
+
schema: zodOpenapi.z.object({ message: zodOpenapi.z.string() })
|
|
14815
|
+
}
|
|
14816
|
+
}
|
|
14817
|
+
},
|
|
14818
|
+
500: {
|
|
14819
|
+
description: "Internal server error",
|
|
14820
|
+
content: {
|
|
14821
|
+
"application/json": {
|
|
14822
|
+
schema: zodOpenapi.z.object({ message: zodOpenapi.z.string() })
|
|
14823
|
+
}
|
|
14824
|
+
}
|
|
14825
|
+
}
|
|
14826
|
+
}
|
|
14827
|
+
});
|
|
14828
|
+
new zodOpenapi.OpenAPIHono().openapi(
|
|
14829
|
+
createDocumentRoute,
|
|
14830
|
+
async (context) => {
|
|
14831
|
+
const rawBody = await context.req.parseBody();
|
|
14832
|
+
const { partyId } = context.req.valid("param");
|
|
14833
|
+
const idDocumentRaw = rawBody.idDocument;
|
|
14834
|
+
const documentSide = rawBody.documentSide;
|
|
14835
|
+
const file = rawBody.file;
|
|
14836
|
+
if (typeof idDocumentRaw !== "string" || !DOCUMENT_SIDE.includes(documentSide) || !(file instanceof File)) {
|
|
14837
|
+
return context.json({ message: "Invalid multipart payload" }, 400);
|
|
14838
|
+
}
|
|
14839
|
+
const idDocumentJson = JSON.parse(JSON.parse(idDocumentRaw));
|
|
14840
|
+
const idDocumentResult = idDocumentCreateInputSchema.safeParse(idDocumentJson);
|
|
14841
|
+
if (!idDocumentResult.success) {
|
|
14842
|
+
console.error(idDocumentResult.error);
|
|
14843
|
+
return context.json({ message: "Could not parse IdDocument" }, 400);
|
|
14844
|
+
}
|
|
14845
|
+
const {
|
|
14846
|
+
data: createdIdDocument,
|
|
14847
|
+
error: createError,
|
|
14848
|
+
message
|
|
14849
|
+
} = await context.env.MASTER_DATA_MANAGEMENT_SERVICE.createIdDocument({
|
|
14850
|
+
idDocument: idDocumentResult.data,
|
|
14851
|
+
partyId
|
|
14852
|
+
});
|
|
14853
|
+
if (!createdIdDocument || createError) {
|
|
14854
|
+
console.error(message);
|
|
14855
|
+
return context.json({ message: "Could not create IdDocument" }, 500);
|
|
14856
|
+
}
|
|
14857
|
+
const bytes = new Uint8Array(await file.arrayBuffer());
|
|
14858
|
+
const { data: uploadResult, error: uploadError } = await context.env.DOCUMENT_SERVICE.uploadDocument({
|
|
14859
|
+
entityType: "client",
|
|
14860
|
+
entityId: createdIdDocument.id,
|
|
14861
|
+
type: "kyc",
|
|
14862
|
+
metadata: {},
|
|
14863
|
+
file: {
|
|
14864
|
+
bytes,
|
|
14865
|
+
type: file.type,
|
|
14866
|
+
name: file.name,
|
|
14867
|
+
size: file.size
|
|
14868
|
+
}
|
|
14869
|
+
});
|
|
14870
|
+
if (!uploadResult || uploadError) {
|
|
14871
|
+
return context.json({ message: "File upload failed" }, 500);
|
|
14872
|
+
}
|
|
14873
|
+
return context.json(
|
|
14874
|
+
{
|
|
14875
|
+
message: "IdDocument created successfully",
|
|
14876
|
+
idDocument: {
|
|
14877
|
+
...createdIdDocument,
|
|
14878
|
+
frontImageUri: documentSide === "front" ? uploadResult.storageUrl : createdIdDocument.frontImageUri,
|
|
14879
|
+
backImageUri: documentSide === "back" ? uploadResult.storageUrl : createdIdDocument.backImageUri
|
|
14880
|
+
}
|
|
14881
|
+
},
|
|
14882
|
+
200
|
|
14883
|
+
);
|
|
14884
|
+
}
|
|
14885
|
+
);
|
|
14886
|
+
|
|
14887
|
+
const partyBaseOutputSchema = zodOpenapi.z.object({
|
|
14888
|
+
customerStatus: zodOpenapi.z.enum(CUSTOMER_STATUS),
|
|
14889
|
+
partyType: zodOpenapi.z.enum(PARTY_TYPE),
|
|
14890
|
+
language: zodOpenapi.z.enum(generalCodes.LANGUAGE_CODES),
|
|
14891
|
+
id: zodOpenapi.z.uuid(),
|
|
14892
|
+
internalId: zodOpenapi.z.string().nullable(),
|
|
14893
|
+
note: zodOpenapi.z.string().nullable(),
|
|
14894
|
+
countryCode: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable(),
|
|
14895
|
+
createdAt: zodOpenapi.z.date().nullable(),
|
|
14896
|
+
updatedAt: zodOpenapi.z.date().nullable(),
|
|
14897
|
+
isRoot: zodOpenapi.z.boolean()
|
|
14898
|
+
});
|
|
14899
|
+
const individualOutputSchema = zodOpenapi.z.object({
|
|
14900
|
+
id: zodOpenapi.z.uuid(),
|
|
14901
|
+
partyId: zodOpenapi.z.uuid(),
|
|
14902
|
+
internalId: zodOpenapi.z.string().nullable(),
|
|
14903
|
+
name: zodOpenapi.z.string(),
|
|
14904
|
+
surname: zodOpenapi.z.string(),
|
|
14905
|
+
email: zodOpenapi.z.string().nullable(),
|
|
14906
|
+
phone: zodOpenapi.z.string().nullable(),
|
|
14907
|
+
birthDate: zodOpenapi.z.string().nullable(),
|
|
14908
|
+
birthPlace: zodOpenapi.z.string(),
|
|
14909
|
+
countryOfBirth: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable(),
|
|
14910
|
+
personalId: zodOpenapi.z.string(),
|
|
14911
|
+
gender: zodOpenapi.z.enum(GENDER),
|
|
14912
|
+
citizenship: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
14913
|
+
citizenshipOther: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable(),
|
|
14914
|
+
employer: zodOpenapi.z.string().nullable(),
|
|
14915
|
+
employerCountry: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable(),
|
|
14916
|
+
registeredNumber: zodOpenapi.z.string().nullable(),
|
|
14917
|
+
isPep: zodOpenapi.z.boolean(),
|
|
14918
|
+
titleBefore: zodOpenapi.z.string().nullable(),
|
|
14919
|
+
titleAfter: zodOpenapi.z.string().nullable(),
|
|
14920
|
+
birthSurname: zodOpenapi.z.string().nullable(),
|
|
14921
|
+
vocativeTitle: zodOpenapi.z.string().nullable(),
|
|
14922
|
+
deathDate: zodOpenapi.z.coerce.date().nullable(),
|
|
14923
|
+
deathNotification: zodOpenapi.z.coerce.date().nullable(),
|
|
14924
|
+
pin: zodOpenapi.z.string().nullable(),
|
|
14925
|
+
stayAbroad: zodOpenapi.z.boolean().nullable(),
|
|
14926
|
+
stayAbroadCountries: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable(),
|
|
14927
|
+
createdAt: zodOpenapi.z.coerce.date().nullable(),
|
|
14928
|
+
updatedAt: zodOpenapi.z.coerce.date().nullable(),
|
|
14929
|
+
identityDocuments: zodOpenapi.z.array(idDocumentOutputSchema).nullable()
|
|
14930
|
+
});
|
|
14931
|
+
const createOrganizationOutputSchema = zodOpenapi.z.object({
|
|
14932
|
+
partyId: zodOpenapi.z.uuid(),
|
|
14933
|
+
internalId: zodOpenapi.z.string().nullable(),
|
|
14934
|
+
businessName: zodOpenapi.z.string(),
|
|
14570
14935
|
email: zodOpenapi.z.string().nullable(),
|
|
14571
14936
|
phone: zodOpenapi.z.string().nullable(),
|
|
14572
14937
|
registeredNumber: zodOpenapi.z.string(),
|
|
@@ -14589,7 +14954,8 @@ const createOrganizationOutputSchema = zodOpenapi.z.object({
|
|
|
14589
14954
|
operationCountries: zodOpenapi.z.string(),
|
|
14590
14955
|
riskyBusinessType: zodOpenapi.z.string().nullable(),
|
|
14591
14956
|
vatId: zodOpenapi.z.string().nullable(),
|
|
14592
|
-
court: zodOpenapi.z.enum(COURT).nullable()
|
|
14957
|
+
court: zodOpenapi.z.enum(COURT).nullable(),
|
|
14958
|
+
registerUri: zodOpenapi.z.string().nullable()
|
|
14593
14959
|
});
|
|
14594
14960
|
const bankAccountOutputSchema = zodOpenapi.z.object({
|
|
14595
14961
|
id: zodOpenapi.z.string(),
|
|
@@ -14609,7 +14975,8 @@ const bankAccountOutputSchema = zodOpenapi.z.object({
|
|
|
14609
14975
|
clabe: zodOpenapi.z.string().nullable(),
|
|
14610
14976
|
bsb: zodOpenapi.z.string().nullable(),
|
|
14611
14977
|
brBankNumber: zodOpenapi.z.string().nullable(),
|
|
14612
|
-
updatedAt: zodOpenapi.z.coerce.date().nullable()
|
|
14978
|
+
updatedAt: zodOpenapi.z.coerce.date().nullable(),
|
|
14979
|
+
statementUri: zodOpenapi.z.string().nullable()
|
|
14613
14980
|
});
|
|
14614
14981
|
const disponentOutputSchema = zodOpenapi.z.discriminatedUnion("partyType", [
|
|
14615
14982
|
zodOpenapi.z.object({
|
|
@@ -14746,6 +15113,9 @@ const productsOutputSchema = zodOpenapi.z.object({
|
|
|
14746
15113
|
}).nullable(),
|
|
14747
15114
|
cbs: zodOpenapi.z.object({}).nullable()
|
|
14748
15115
|
});
|
|
15116
|
+
const recipientOutputSchema = bankAccountOutputSchema.omit({
|
|
15117
|
+
statementUri: true
|
|
15118
|
+
});
|
|
14749
15119
|
const partyOutputSchema = zodOpenapi.z.object({
|
|
14750
15120
|
party: partyBaseOutputSchema.nullable(),
|
|
14751
15121
|
personalData: individualOutputSchema.nullable(),
|
|
@@ -14754,13 +15124,13 @@ const partyOutputSchema = zodOpenapi.z.object({
|
|
|
14754
15124
|
disponents: zodOpenapi.z.array(disponentOutputSchema).nullable(),
|
|
14755
15125
|
addresses: zodOpenapi.z.array(createAddressOutputSchema).nullable(),
|
|
14756
15126
|
aml: createAmlOutputSchema.nullable(),
|
|
14757
|
-
recipients: zodOpenapi.z.array(
|
|
15127
|
+
recipients: zodOpenapi.z.array(recipientOutputSchema).nullable(),
|
|
14758
15128
|
products: productsOutputSchema.nullable(),
|
|
14759
15129
|
traderIds: zodOpenapi.z.array(zodOpenapi.z.uuid()).nullable(),
|
|
14760
15130
|
owners: zodOpenapi.z.array(ownerOutputSchema).nullable(),
|
|
14761
15131
|
legalRepresentatives: zodOpenapi.z.array(legalRepresentativeOutputSchema).nullable()
|
|
14762
15132
|
});
|
|
14763
|
-
const responseBodySchema$
|
|
15133
|
+
const responseBodySchema$2 = zodOpenapi.z.object({
|
|
14764
15134
|
message: zodOpenapi.z.string(),
|
|
14765
15135
|
party: partyOutputSchema
|
|
14766
15136
|
});
|
|
@@ -14777,7 +15147,7 @@ const getPartyByPartyIdRoute = zodOpenapi.createRoute({
|
|
|
14777
15147
|
200: {
|
|
14778
15148
|
content: {
|
|
14779
15149
|
"application/json": {
|
|
14780
|
-
schema: responseBodySchema$
|
|
15150
|
+
schema: responseBodySchema$2
|
|
14781
15151
|
}
|
|
14782
15152
|
},
|
|
14783
15153
|
description: "Get party by party Id"
|
|
@@ -14894,167 +15264,6 @@ new zodOpenapi.OpenAPIHono().openapi(
|
|
|
14894
15264
|
}
|
|
14895
15265
|
);
|
|
14896
15266
|
|
|
14897
|
-
const DOCUMENT_SIDE = ["front", "back"];
|
|
14898
|
-
const paramsSchema$2 = zodOpenapi.z.object({
|
|
14899
|
-
partyId: zodOpenapi.z.uuid()
|
|
14900
|
-
});
|
|
14901
|
-
const idDocumentCreateInputSchema = zodOpenapi.z.object({
|
|
14902
|
-
partyId: zodOpenapi.z.uuid(),
|
|
14903
|
-
idDocType: zodOpenapi.z.enum(ID_DOC_TYPE),
|
|
14904
|
-
idDocNumber: zodOpenapi.z.string(),
|
|
14905
|
-
idDocHolderName: zodOpenapi.z.string(),
|
|
14906
|
-
issueDate: zodOpenapi.z.coerce.date().optional(),
|
|
14907
|
-
expirationDate: zodOpenapi.z.coerce.date().optional(),
|
|
14908
|
-
issuer: zodOpenapi.z.string().optional(),
|
|
14909
|
-
countryOfIssue: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional(),
|
|
14910
|
-
idDocStatus: zodOpenapi.z.enum(ID_DOC_STATUS).optional()
|
|
14911
|
-
});
|
|
14912
|
-
const idDocumentMultipartSchema = zodOpenapi.z.object({
|
|
14913
|
-
idDocument: zodOpenapi.z.string(),
|
|
14914
|
-
documentSide: zodOpenapi.z.enum(DOCUMENT_SIDE),
|
|
14915
|
-
file: zodOpenapi.z.any()
|
|
14916
|
-
});
|
|
14917
|
-
const multipartOpenApiSchema = zodOpenapi.z.object({
|
|
14918
|
-
idDocument: zodOpenapi.z.string().openapi({
|
|
14919
|
-
description: "JSON stringified IdDocument payload"
|
|
14920
|
-
}),
|
|
14921
|
-
documentSide: zodOpenapi.z.enum(DOCUMENT_SIDE),
|
|
14922
|
-
file: zodOpenapi.z.any().openapi({
|
|
14923
|
-
type: "string",
|
|
14924
|
-
format: "binary"
|
|
14925
|
-
})
|
|
14926
|
-
});
|
|
14927
|
-
const idDocumentOutputSchema = zodOpenapi.z.object({
|
|
14928
|
-
id: zodOpenapi.z.uuid(),
|
|
14929
|
-
createdAt: zodOpenapi.z.iso.datetime().nullable(),
|
|
14930
|
-
updatedAt: zodOpenapi.z.iso.datetime().nullable(),
|
|
14931
|
-
deletedAt: zodOpenapi.z.iso.datetime().nullable(),
|
|
14932
|
-
partyId: zodOpenapi.z.uuid(),
|
|
14933
|
-
idDocType: zodOpenapi.z.enum(ID_DOC_TYPE),
|
|
14934
|
-
idDocNumber: zodOpenapi.z.string(),
|
|
14935
|
-
idDocHolderName: zodOpenapi.z.string(),
|
|
14936
|
-
issueDate: zodOpenapi.z.iso.datetime().nullable(),
|
|
14937
|
-
expirationDate: zodOpenapi.z.iso.datetime().nullable(),
|
|
14938
|
-
issuer: zodOpenapi.z.string().nullable(),
|
|
14939
|
-
countryOfIssue: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable(),
|
|
14940
|
-
frontImageUri: zodOpenapi.z.string().nullable(),
|
|
14941
|
-
backImageUri: zodOpenapi.z.string().nullable(),
|
|
14942
|
-
idDocStatus: zodOpenapi.z.enum(ID_DOC_STATUS).nullable()
|
|
14943
|
-
});
|
|
14944
|
-
const responseBodySchema$2 = zodOpenapi.z.object({
|
|
14945
|
-
message: zodOpenapi.z.string(),
|
|
14946
|
-
idDocument: idDocumentOutputSchema
|
|
14947
|
-
});
|
|
14948
|
-
const createDocumentRoute = zodOpenapi.createRoute({
|
|
14949
|
-
method: "post",
|
|
14950
|
-
path: "/",
|
|
14951
|
-
summary: "Create ID Document",
|
|
14952
|
-
tags: ["ID Documents"],
|
|
14953
|
-
description: "Creates a new identification document for the specified party and uploads the document image (front or back side). Accepts multipart form data with the document metadata as a JSON string and the file as a binary attachment.",
|
|
14954
|
-
// middleware: [jwt, signature(), idempotency()],
|
|
14955
|
-
// security: [{ JwtAuth: [] }],
|
|
14956
|
-
request: {
|
|
14957
|
-
// headers: z.object({
|
|
14958
|
-
// 'X-Idempotency-Key': XIdempotencyKeyHeaderSchema,
|
|
14959
|
-
// 'X-Signature': XSignatureHeaderSchema,
|
|
14960
|
-
// 'X-Signature-Key': XSignatureKeyHeaderSchema,
|
|
14961
|
-
// }),
|
|
14962
|
-
body: {
|
|
14963
|
-
content: {
|
|
14964
|
-
"multipart/form-data": {
|
|
14965
|
-
schema: multipartOpenApiSchema
|
|
14966
|
-
}
|
|
14967
|
-
},
|
|
14968
|
-
required: true
|
|
14969
|
-
},
|
|
14970
|
-
params: paramsSchema$2
|
|
14971
|
-
},
|
|
14972
|
-
responses: {
|
|
14973
|
-
200: {
|
|
14974
|
-
description: "Document created and file uploaded",
|
|
14975
|
-
content: {
|
|
14976
|
-
"application/json": {
|
|
14977
|
-
schema: responseBodySchema$2
|
|
14978
|
-
}
|
|
14979
|
-
}
|
|
14980
|
-
},
|
|
14981
|
-
400: {
|
|
14982
|
-
description: "Invalid request",
|
|
14983
|
-
content: {
|
|
14984
|
-
"application/json": {
|
|
14985
|
-
schema: zodOpenapi.z.object({ message: zodOpenapi.z.string() })
|
|
14986
|
-
}
|
|
14987
|
-
}
|
|
14988
|
-
},
|
|
14989
|
-
500: {
|
|
14990
|
-
description: "Internal server error",
|
|
14991
|
-
content: {
|
|
14992
|
-
"application/json": {
|
|
14993
|
-
schema: zodOpenapi.z.object({ message: zodOpenapi.z.string() })
|
|
14994
|
-
}
|
|
14995
|
-
}
|
|
14996
|
-
}
|
|
14997
|
-
}
|
|
14998
|
-
});
|
|
14999
|
-
new zodOpenapi.OpenAPIHono().openapi(
|
|
15000
|
-
createDocumentRoute,
|
|
15001
|
-
async (context) => {
|
|
15002
|
-
const rawBody = await context.req.parseBody();
|
|
15003
|
-
const { partyId } = context.req.valid("param");
|
|
15004
|
-
const idDocumentRaw = rawBody.idDocument;
|
|
15005
|
-
const documentSide = rawBody.documentSide;
|
|
15006
|
-
const file = rawBody.file;
|
|
15007
|
-
if (typeof idDocumentRaw !== "string" || !DOCUMENT_SIDE.includes(documentSide) || !(file instanceof File)) {
|
|
15008
|
-
return context.json({ message: "Invalid multipart payload" }, 400);
|
|
15009
|
-
}
|
|
15010
|
-
const idDocumentJson = JSON.parse(JSON.parse(idDocumentRaw));
|
|
15011
|
-
const idDocumentResult = idDocumentCreateInputSchema.safeParse(idDocumentJson);
|
|
15012
|
-
if (!idDocumentResult.success) {
|
|
15013
|
-
console.error(idDocumentResult.error);
|
|
15014
|
-
return context.json({ message: "Could not parse IdDocument" }, 400);
|
|
15015
|
-
}
|
|
15016
|
-
const {
|
|
15017
|
-
data: createdIdDocument,
|
|
15018
|
-
error: createError,
|
|
15019
|
-
message
|
|
15020
|
-
} = await context.env.MASTER_DATA_MANAGEMENT_SERVICE.createIdDocument({
|
|
15021
|
-
idDocument: idDocumentResult.data,
|
|
15022
|
-
partyId
|
|
15023
|
-
});
|
|
15024
|
-
if (!createdIdDocument || createError) {
|
|
15025
|
-
console.error(message);
|
|
15026
|
-
return context.json({ message: "Could not create IdDocument" }, 500);
|
|
15027
|
-
}
|
|
15028
|
-
const bytes = new Uint8Array(await file.arrayBuffer());
|
|
15029
|
-
const { data: uploadResult, error: uploadError } = await context.env.DOCUMENT_SERVICE.uploadDocument({
|
|
15030
|
-
entityType: "client",
|
|
15031
|
-
entityId: createdIdDocument.id,
|
|
15032
|
-
type: "kyc",
|
|
15033
|
-
metadata: {},
|
|
15034
|
-
file: {
|
|
15035
|
-
bytes,
|
|
15036
|
-
type: file.type,
|
|
15037
|
-
name: file.name,
|
|
15038
|
-
size: file.size
|
|
15039
|
-
}
|
|
15040
|
-
});
|
|
15041
|
-
if (!uploadResult || uploadError) {
|
|
15042
|
-
return context.json({ message: "File upload failed" }, 500);
|
|
15043
|
-
}
|
|
15044
|
-
return context.json(
|
|
15045
|
-
{
|
|
15046
|
-
message: "IdDocument created successfully",
|
|
15047
|
-
idDocument: {
|
|
15048
|
-
...createdIdDocument,
|
|
15049
|
-
frontImageUri: documentSide === "front" ? uploadResult.storageUrl : createdIdDocument.frontImageUri,
|
|
15050
|
-
backImageUri: documentSide === "back" ? uploadResult.storageUrl : createdIdDocument.backImageUri
|
|
15051
|
-
}
|
|
15052
|
-
},
|
|
15053
|
-
200
|
|
15054
|
-
);
|
|
15055
|
-
}
|
|
15056
|
-
);
|
|
15057
|
-
|
|
15058
15267
|
const XIdempotencyKeyHeaderSchema = zodOpenapi.z.string().openapi({
|
|
15059
15268
|
description: "Unique identifier header to ensure the request is processed only once.",
|
|
15060
15269
|
example: "4ac15c22-2bd3-426f-b915-bfd5febdb7df"
|