@devizovaburza/mdm-sdk 0.0.12 → 0.0.13
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 +1082 -336
- package/dist/v1/index.d.cts +5436 -5458
- package/dist/v1/index.d.mts +5436 -5458
- package/dist/v1/index.d.ts +5436 -5458
- package/dist/v1/index.mjs +1083 -337
- package/package.json +1 -1
package/dist/v1/index.cjs
CHANGED
|
@@ -9,6 +9,8 @@ const z = require('zod/v4/core');
|
|
|
9
9
|
require('node:fs');
|
|
10
10
|
require('node:crypto');
|
|
11
11
|
require('node:path');
|
|
12
|
+
const factory = require('hono/factory');
|
|
13
|
+
const httpException = require('hono/http-exception');
|
|
12
14
|
|
|
13
15
|
function _interopNamespaceCompat(e) {
|
|
14
16
|
if (e && typeof e === 'object' && 'default' in e) return e;
|
|
@@ -12904,7 +12906,7 @@ const recipientSelectSchema = bankAccountSelectSchema;
|
|
|
12904
12906
|
|
|
12905
12907
|
createInsertSchema(party);
|
|
12906
12908
|
createUpdateSchema(party);
|
|
12907
|
-
const partySchema$
|
|
12909
|
+
const partySchema$2 = zodOpenapi.z.object({
|
|
12908
12910
|
partyType: zodOpenapi.z.enum(PartyTypeZod),
|
|
12909
12911
|
language: zodOpenapi.z.enum(generalCodes.LANGUAGE_CODES),
|
|
12910
12912
|
id: zodOpenapi.z.uuid().nullable(),
|
|
@@ -12925,7 +12927,7 @@ const partyOutputSchema$1 = zodOpenapi.z.object({
|
|
|
12925
12927
|
createdAt: zodOpenapi.z.date().nullable(),
|
|
12926
12928
|
updatedAt: zodOpenapi.z.date().nullable()
|
|
12927
12929
|
});
|
|
12928
|
-
const createPartySchema = partySchema$
|
|
12930
|
+
const createPartySchema = partySchema$2.omit({ id: true });
|
|
12929
12931
|
zodOpenapi.z.object({
|
|
12930
12932
|
party: createPartySchema,
|
|
12931
12933
|
personalData: individualInsertSchema$1.omit({ partyId: true }).nullable(),
|
|
@@ -12938,7 +12940,7 @@ zodOpenapi.z.object({
|
|
|
12938
12940
|
});
|
|
12939
12941
|
zodOpenapi.z.object({
|
|
12940
12942
|
partyId: zodOpenapi.z.uuid(),
|
|
12941
|
-
party: partySchema$
|
|
12943
|
+
party: partySchema$2,
|
|
12942
12944
|
personalData: individualUpdateSchema$1.optional(),
|
|
12943
12945
|
organizationData: organizationUpdateSchema$1.optional(),
|
|
12944
12946
|
bankAccounts: zodOpenapi.z.array(bankAccountUpsertSchema).optional(),
|
|
@@ -13199,7 +13201,7 @@ zod.z.object({
|
|
|
13199
13201
|
id: zod.z.uuid()
|
|
13200
13202
|
});
|
|
13201
13203
|
|
|
13202
|
-
const ALLOWED_ID_DOCUMENTS_FILTERS = {
|
|
13204
|
+
const ALLOWED_ID_DOCUMENTS_FILTERS$1 = {
|
|
13203
13205
|
PARTY_ID: "filterIdDocumentPartyId",
|
|
13204
13206
|
ISSUER: "filterIdDocumentIssuer"
|
|
13205
13207
|
};
|
|
@@ -13211,8 +13213,8 @@ zod.z.object({
|
|
|
13211
13213
|
column: zod.z.string(),
|
|
13212
13214
|
direction: zod.z.enum(["asc", "desc"])
|
|
13213
13215
|
}),
|
|
13214
|
-
[ALLOWED_ID_DOCUMENTS_FILTERS.PARTY_ID]: zod.z.union([zod.z.uuid(), zod.z.uuid().array()]).optional(),
|
|
13215
|
-
[ALLOWED_ID_DOCUMENTS_FILTERS.ISSUER]: zod.z.union([zod.z.string(), zod.z.string().array()]).optional(),
|
|
13216
|
+
[ALLOWED_ID_DOCUMENTS_FILTERS$1.PARTY_ID]: zod.z.union([zod.z.uuid(), zod.z.uuid().array()]).optional(),
|
|
13217
|
+
[ALLOWED_ID_DOCUMENTS_FILTERS$1.ISSUER]: zod.z.union([zod.z.string(), zod.z.string().array()]).optional(),
|
|
13216
13218
|
search: zod.z.string().optional()
|
|
13217
13219
|
})
|
|
13218
13220
|
});
|
|
@@ -13269,8 +13271,49 @@ zod.z.object({
|
|
|
13269
13271
|
id: zod.z.uuid()
|
|
13270
13272
|
});
|
|
13271
13273
|
|
|
13274
|
+
const routeError = zodOpenapi.z.object({
|
|
13275
|
+
message: zodOpenapi.z.string(),
|
|
13276
|
+
data: zodOpenapi.z.null(),
|
|
13277
|
+
errorDetail: zodOpenapi.z.object({
|
|
13278
|
+
message: zodOpenapi.z.string(),
|
|
13279
|
+
code: zodOpenapi.z.number()
|
|
13280
|
+
}).optional(),
|
|
13281
|
+
error: zodOpenapi.z.boolean()
|
|
13282
|
+
});
|
|
13283
|
+
const errorResponse = (entityName, action = "creation") => ({
|
|
13284
|
+
404: {
|
|
13285
|
+
content: {
|
|
13286
|
+
"application/json": {
|
|
13287
|
+
schema: zodOpenapi.z.object({
|
|
13288
|
+
message: zodOpenapi.z.string(),
|
|
13289
|
+
stackTrace: zodOpenapi.z.string().optional()
|
|
13290
|
+
})
|
|
13291
|
+
}
|
|
13292
|
+
},
|
|
13293
|
+
description: `Not Found. This can occur when the ${entityName} is not found.`
|
|
13294
|
+
},
|
|
13295
|
+
500: {
|
|
13296
|
+
content: {
|
|
13297
|
+
"application/json": {
|
|
13298
|
+
schema: zodOpenapi.z.object({
|
|
13299
|
+
message: zodOpenapi.z.string(),
|
|
13300
|
+
stackTrace: zodOpenapi.z.string().optional()
|
|
13301
|
+
})
|
|
13302
|
+
}
|
|
13303
|
+
},
|
|
13304
|
+
description: `Internal Server Error. This can occur when the ${entityName} ${action} fails.`
|
|
13305
|
+
}
|
|
13306
|
+
});
|
|
13307
|
+
|
|
13308
|
+
const partySchema$1 = zodOpenapi.z.object({
|
|
13309
|
+
partyType: zodOpenapi.z.enum(PartyTypeZod),
|
|
13310
|
+
language: zodOpenapi.z.enum(generalCodes.LANGUAGE_CODES),
|
|
13311
|
+
id: zodOpenapi.z.uuid(),
|
|
13312
|
+
internalId: zodOpenapi.z.string().optional(),
|
|
13313
|
+
note: zodOpenapi.z.string().optional(),
|
|
13314
|
+
countryCode: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional()
|
|
13315
|
+
});
|
|
13272
13316
|
const individualInsertSchema = zodOpenapi.z.object({
|
|
13273
|
-
partyId: zodOpenapi.z.uuid(),
|
|
13274
13317
|
internalId: zodOpenapi.z.string().optional(),
|
|
13275
13318
|
name: zodOpenapi.z.string(),
|
|
13276
13319
|
surname: zodOpenapi.z.string(),
|
|
@@ -13297,6 +13340,173 @@ const individualInsertSchema = zodOpenapi.z.object({
|
|
|
13297
13340
|
stayAbroad: zodOpenapi.z.boolean().optional(),
|
|
13298
13341
|
stayAbroadCountries: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional()
|
|
13299
13342
|
});
|
|
13343
|
+
const createOrganizationInputSchema = zodOpenapi.z.object({
|
|
13344
|
+
internalId: zodOpenapi.z.string().optional(),
|
|
13345
|
+
businessName: zodOpenapi.z.string(),
|
|
13346
|
+
email: zodOpenapi.z.string().optional(),
|
|
13347
|
+
phone: zodOpenapi.z.string().optional(),
|
|
13348
|
+
registeredNumber: zodOpenapi.z.string(),
|
|
13349
|
+
registeredIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13350
|
+
operatesIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13351
|
+
presentIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13352
|
+
monthlyVolumeIn: zodOpenapi.z.number(),
|
|
13353
|
+
monthlyVolumeOut: zodOpenapi.z.number(),
|
|
13354
|
+
ownedBy: zodOpenapi.z.string(),
|
|
13355
|
+
companyObjects: zodOpenapi.z.string(),
|
|
13356
|
+
annualTurnover: zodOpenapi.z.number(),
|
|
13357
|
+
numberOfEmployees: zodOpenapi.z.number(),
|
|
13358
|
+
prosecuted: zodOpenapi.z.string().optional(),
|
|
13359
|
+
location: zodOpenapi.z.string().optional(),
|
|
13360
|
+
fileNumber: zodOpenapi.z.string().optional(),
|
|
13361
|
+
websiteUrl: zodOpenapi.z.string().optional(),
|
|
13362
|
+
vatPayer: zodOpenapi.z.boolean(),
|
|
13363
|
+
companyObjectsDescription: zodOpenapi.z.string(),
|
|
13364
|
+
turnover3years: zodOpenapi.z.number(),
|
|
13365
|
+
operationCountries: zodOpenapi.z.string(),
|
|
13366
|
+
riskyBusinessType: zodOpenapi.z.string().optional()
|
|
13367
|
+
});
|
|
13368
|
+
const updateBankAccountSchema$1 = zodOpenapi.z.object({
|
|
13369
|
+
...bankAccountMetadataSchema.shape,
|
|
13370
|
+
partyId: zodOpenapi.z.uuid(),
|
|
13371
|
+
internalId: zodOpenapi.z.string().optional(),
|
|
13372
|
+
holderName: zodOpenapi.z.string(),
|
|
13373
|
+
number: zodOpenapi.z.string().optional(),
|
|
13374
|
+
currency: bankAccountMetadataSchema.shape.currency.nonoptional(),
|
|
13375
|
+
countryCode: bankAccountMetadataSchema.shape.countryCode.nonoptional(),
|
|
13376
|
+
id: bankAccountMetadataSchema.shape.id.nonoptional()
|
|
13377
|
+
});
|
|
13378
|
+
const bankAccountInputSchema = updateBankAccountSchema$1.required({
|
|
13379
|
+
holderName: true,
|
|
13380
|
+
currency: true,
|
|
13381
|
+
countryCode: true
|
|
13382
|
+
}).omit({ id: true, partyId: true });
|
|
13383
|
+
const disponentSchema = zodOpenapi.z.discriminatedUnion("partyType", [
|
|
13384
|
+
zodOpenapi.z.object({
|
|
13385
|
+
partyType: zodOpenapi.z.literal("INDIVIDUAL"),
|
|
13386
|
+
data: individualInsertSchema
|
|
13387
|
+
}),
|
|
13388
|
+
zodOpenapi.z.object({
|
|
13389
|
+
partyType: zodOpenapi.z.literal("ORGANIZATION"),
|
|
13390
|
+
data: createOrganizationInputSchema
|
|
13391
|
+
})
|
|
13392
|
+
]);
|
|
13393
|
+
const createAddressInputSchema = zodOpenapi.z.object({
|
|
13394
|
+
addressType: zodOpenapi.z.enum(AddressTypeZod),
|
|
13395
|
+
internalId: zodOpenapi.z.string().optional(),
|
|
13396
|
+
street: zodOpenapi.z.string(),
|
|
13397
|
+
orientationNumber: zodOpenapi.z.string().optional(),
|
|
13398
|
+
descriptiveNumber: zodOpenapi.z.string().optional(),
|
|
13399
|
+
municipality: zodOpenapi.z.string().max(255),
|
|
13400
|
+
municipalityPart: zodOpenapi.z.string().optional(),
|
|
13401
|
+
zipCode: zodOpenapi.z.string().max(20),
|
|
13402
|
+
district: zodOpenapi.z.string().max(255),
|
|
13403
|
+
region: zodOpenapi.z.string().max(255),
|
|
13404
|
+
countryCode: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13405
|
+
ruianCode: zodOpenapi.z.string().optional()
|
|
13406
|
+
});
|
|
13407
|
+
const createAmlInputSchema = zodOpenapi.z.object({
|
|
13408
|
+
internalId: zodOpenapi.z.string().optional(),
|
|
13409
|
+
sourceOfWealth: zodOpenapi.z.string(),
|
|
13410
|
+
yearlyIncome: zodOpenapi.z.string(),
|
|
13411
|
+
tradesPurpose: zodOpenapi.z.string().optional(),
|
|
13412
|
+
sourceOfIncome: zodOpenapi.z.string(),
|
|
13413
|
+
transactionType: zodOpenapi.z.string().optional(),
|
|
13414
|
+
transactionTypeExpiry: zodOpenapi.z.date().optional(),
|
|
13415
|
+
isDistraint: zodOpenapi.z.boolean().default(false),
|
|
13416
|
+
estTxsVolumeMonth: zodOpenapi.z.string(),
|
|
13417
|
+
estTxsVolumeYear: zodOpenapi.z.string(),
|
|
13418
|
+
tradingCountries: zodOpenapi.z.string(),
|
|
13419
|
+
tradingSide: zodOpenapi.z.string(),
|
|
13420
|
+
acceptedAMLTermsAndConditions: zodOpenapi.z.boolean(),
|
|
13421
|
+
signatureMethod: zodOpenapi.z.string().optional(),
|
|
13422
|
+
existencePeriod: zodOpenapi.z.string().optional(),
|
|
13423
|
+
reputation: zodOpenapi.z.string().optional(),
|
|
13424
|
+
riskLevel: zodOpenapi.z.enum(AmlScoreTypeZod).optional(),
|
|
13425
|
+
kycStatus: zodOpenapi.z.enum(KycStatusZod).optional()
|
|
13426
|
+
});
|
|
13427
|
+
const createPartyInputSchema = zodOpenapi.z.object({
|
|
13428
|
+
party: partySchema$1.omit({ id: true }),
|
|
13429
|
+
personalData: individualInsertSchema.nullable(),
|
|
13430
|
+
organizationData: createOrganizationInputSchema.nullable(),
|
|
13431
|
+
bankAccounts: zodOpenapi.z.array(bankAccountInputSchema),
|
|
13432
|
+
disponents: zodOpenapi.z.array(disponentSchema),
|
|
13433
|
+
addresses: zodOpenapi.z.array(createAddressInputSchema),
|
|
13434
|
+
aml: createAmlInputSchema,
|
|
13435
|
+
recipients: zodOpenapi.z.array(bankAccountInputSchema)
|
|
13436
|
+
});
|
|
13437
|
+
const partyCreateOutputSchema = zodOpenapi.z.object({
|
|
13438
|
+
customerStatus: zodOpenapi.z.enum(CustomerStatusZod),
|
|
13439
|
+
partyType: zodOpenapi.z.enum(PartyTypeZod),
|
|
13440
|
+
language: zodOpenapi.z.enum(generalCodes.LANGUAGE_CODES),
|
|
13441
|
+
id: zodOpenapi.z.uuid(),
|
|
13442
|
+
internalId: zodOpenapi.z.string().nullable(),
|
|
13443
|
+
note: zodOpenapi.z.string().nullable(),
|
|
13444
|
+
countryCode: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable(),
|
|
13445
|
+
createdAt: zodOpenapi.z.date().nullable(),
|
|
13446
|
+
updatedAt: zodOpenapi.z.date().nullable()
|
|
13447
|
+
});
|
|
13448
|
+
const responseBodySchema$5 = zodOpenapi.z.object({
|
|
13449
|
+
message: zodOpenapi.z.string(),
|
|
13450
|
+
party: partyCreateOutputSchema
|
|
13451
|
+
});
|
|
13452
|
+
const createPartyRoute = zodOpenapi.createRoute({
|
|
13453
|
+
method: "post",
|
|
13454
|
+
path: "/",
|
|
13455
|
+
summary: "Create party",
|
|
13456
|
+
tags: ["Parties"],
|
|
13457
|
+
request: {
|
|
13458
|
+
body: {
|
|
13459
|
+
content: {
|
|
13460
|
+
"application/json": {
|
|
13461
|
+
schema: createPartyInputSchema
|
|
13462
|
+
}
|
|
13463
|
+
},
|
|
13464
|
+
required: true
|
|
13465
|
+
}
|
|
13466
|
+
},
|
|
13467
|
+
responses: {
|
|
13468
|
+
200: {
|
|
13469
|
+
content: {
|
|
13470
|
+
"application/json": {
|
|
13471
|
+
schema: responseBodySchema$5
|
|
13472
|
+
}
|
|
13473
|
+
},
|
|
13474
|
+
description: "Creates a Party."
|
|
13475
|
+
},
|
|
13476
|
+
...errorResponse("Party", "Creation")
|
|
13477
|
+
}
|
|
13478
|
+
});
|
|
13479
|
+
new zodOpenapi.OpenAPIHono().openapi(
|
|
13480
|
+
createPartyRoute,
|
|
13481
|
+
async (context) => {
|
|
13482
|
+
const party = context.req.valid("json");
|
|
13483
|
+
const { data: partyData, error } = await context.env.MASTER_DATA_MANAGEMENT_SERVICE.createParty(party);
|
|
13484
|
+
if (!partyData || error) {
|
|
13485
|
+
return context.json(
|
|
13486
|
+
{
|
|
13487
|
+
message: "Could not create a party"
|
|
13488
|
+
},
|
|
13489
|
+
500
|
|
13490
|
+
);
|
|
13491
|
+
}
|
|
13492
|
+
return context.json(
|
|
13493
|
+
{
|
|
13494
|
+
message: "party created",
|
|
13495
|
+
party: partyData
|
|
13496
|
+
},
|
|
13497
|
+
200
|
|
13498
|
+
);
|
|
13499
|
+
}
|
|
13500
|
+
);
|
|
13501
|
+
|
|
13502
|
+
const partySchema = zodOpenapi.z.object({
|
|
13503
|
+
partyType: zodOpenapi.z.enum(PartyTypeZod),
|
|
13504
|
+
language: zodOpenapi.z.enum(generalCodes.LANGUAGE_CODES),
|
|
13505
|
+
id: zodOpenapi.z.uuid(),
|
|
13506
|
+
internalId: zodOpenapi.z.string().optional(),
|
|
13507
|
+
note: zodOpenapi.z.string().optional(),
|
|
13508
|
+
countryCode: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional()
|
|
13509
|
+
});
|
|
13300
13510
|
const individualUpdateSchema = zodOpenapi.z.object({
|
|
13301
13511
|
id: zodOpenapi.z.uuid(),
|
|
13302
13512
|
partyId: zodOpenapi.z.uuid(),
|
|
@@ -13326,6 +13536,187 @@ const individualUpdateSchema = zodOpenapi.z.object({
|
|
|
13326
13536
|
stayAbroad: zodOpenapi.z.boolean().optional(),
|
|
13327
13537
|
stayAbroadCountries: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional()
|
|
13328
13538
|
});
|
|
13539
|
+
const organizationUpdateSchema = zodOpenapi.z.object({
|
|
13540
|
+
id: zodOpenapi.z.uuid(),
|
|
13541
|
+
partyId: zodOpenapi.z.uuid().optional(),
|
|
13542
|
+
internalId: zodOpenapi.z.string().optional(),
|
|
13543
|
+
businessName: zodOpenapi.z.string().optional(),
|
|
13544
|
+
email: zodOpenapi.z.email("Invalid email format").optional(),
|
|
13545
|
+
phone: zodOpenapi.z.string().optional(),
|
|
13546
|
+
registeredNumber: zodOpenapi.z.string().optional(),
|
|
13547
|
+
registeredIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional(),
|
|
13548
|
+
operatesIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional(),
|
|
13549
|
+
presentIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional(),
|
|
13550
|
+
monthlyVolumeIn: zodOpenapi.z.number().optional(),
|
|
13551
|
+
monthlyVolumeOut: zodOpenapi.z.number().optional(),
|
|
13552
|
+
ownedBy: zodOpenapi.z.string().optional(),
|
|
13553
|
+
companyObjects: zodOpenapi.z.string().optional(),
|
|
13554
|
+
annualTurnover: zodOpenapi.z.number().optional(),
|
|
13555
|
+
numberOfEmployees: zodOpenapi.z.number().optional(),
|
|
13556
|
+
prosecuted: zodOpenapi.z.string().optional(),
|
|
13557
|
+
location: zodOpenapi.z.string().optional(),
|
|
13558
|
+
fileNumber: zodOpenapi.z.string().optional(),
|
|
13559
|
+
websiteUrl: zodOpenapi.z.url("Invalid website URL").optional(),
|
|
13560
|
+
vatPayer: zodOpenapi.z.boolean().optional(),
|
|
13561
|
+
companyObjectsDescription: zodOpenapi.z.string(),
|
|
13562
|
+
turnover3years: zodOpenapi.z.number(),
|
|
13563
|
+
operationCountries: zodOpenapi.z.string(),
|
|
13564
|
+
riskyBusinessType: zodOpenapi.z.string().optional()
|
|
13565
|
+
});
|
|
13566
|
+
const updateBankAccountSchema = zodOpenapi.z.object({
|
|
13567
|
+
...bankAccountMetadataSchema.shape,
|
|
13568
|
+
partyId: zodOpenapi.z.uuid(),
|
|
13569
|
+
internalId: zodOpenapi.z.string().optional(),
|
|
13570
|
+
holderName: zodOpenapi.z.string(),
|
|
13571
|
+
number: zodOpenapi.z.string().optional(),
|
|
13572
|
+
currency: bankAccountMetadataSchema.shape.currency.nonoptional(),
|
|
13573
|
+
countryCode: bankAccountMetadataSchema.shape.countryCode.nonoptional(),
|
|
13574
|
+
id: bankAccountMetadataSchema.shape.id.nonoptional()
|
|
13575
|
+
});
|
|
13576
|
+
const disponentUpdateSchema = zodOpenapi.z.discriminatedUnion("partyType", [
|
|
13577
|
+
zodOpenapi.z.object({
|
|
13578
|
+
partyType: zodOpenapi.z.literal("INDIVIDUAL"),
|
|
13579
|
+
data: individualUpdateSchema
|
|
13580
|
+
}),
|
|
13581
|
+
zodOpenapi.z.object({
|
|
13582
|
+
partyType: zodOpenapi.z.literal("ORGANIZATION"),
|
|
13583
|
+
data: organizationUpdateSchema
|
|
13584
|
+
})
|
|
13585
|
+
]);
|
|
13586
|
+
const updateAddressInputSchema = zodOpenapi.z.object({
|
|
13587
|
+
id: zodOpenapi.z.uuid(),
|
|
13588
|
+
partyId: zodOpenapi.z.uuid(),
|
|
13589
|
+
internalId: zodOpenapi.z.string().optional(),
|
|
13590
|
+
addressType: zodOpenapi.z.enum(AddressTypeZod),
|
|
13591
|
+
street: zodOpenapi.z.string(),
|
|
13592
|
+
orientationNumber: zodOpenapi.z.string().optional(),
|
|
13593
|
+
descriptiveNumber: zodOpenapi.z.string().optional(),
|
|
13594
|
+
municipality: zodOpenapi.z.string().max(255),
|
|
13595
|
+
municipalityPart: zodOpenapi.z.string().optional(),
|
|
13596
|
+
zipCode: zodOpenapi.z.string().max(20),
|
|
13597
|
+
district: zodOpenapi.z.string().max(255),
|
|
13598
|
+
region: zodOpenapi.z.string().max(255),
|
|
13599
|
+
countryCode: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13600
|
+
ruianCode: zodOpenapi.z.string().optional()
|
|
13601
|
+
});
|
|
13602
|
+
const updateAmlInputSchema = zodOpenapi.z.object({
|
|
13603
|
+
id: zodOpenapi.z.uuid(),
|
|
13604
|
+
partyId: zodOpenapi.z.uuid().optional(),
|
|
13605
|
+
internalId: zodOpenapi.z.string().optional(),
|
|
13606
|
+
sourceOfWealth: zodOpenapi.z.string().optional(),
|
|
13607
|
+
yearlyIncome: zodOpenapi.z.string().optional(),
|
|
13608
|
+
tradesPurpose: zodOpenapi.z.string().optional(),
|
|
13609
|
+
sourceOfIncome: zodOpenapi.z.string().optional(),
|
|
13610
|
+
transactionType: zodOpenapi.z.string().optional(),
|
|
13611
|
+
transactionTypeExpiry: zodOpenapi.z.date().optional(),
|
|
13612
|
+
isDistraint: zodOpenapi.z.boolean().optional(),
|
|
13613
|
+
estTxsVolumeMonth: zodOpenapi.z.string(),
|
|
13614
|
+
estTxsVolumeYear: zodOpenapi.z.string(),
|
|
13615
|
+
tradingCountries: zodOpenapi.z.string(),
|
|
13616
|
+
tradingSide: zodOpenapi.z.string(),
|
|
13617
|
+
acceptedAMLTermsAndConditions: zodOpenapi.z.boolean(),
|
|
13618
|
+
signatureMethod: zodOpenapi.z.string().optional(),
|
|
13619
|
+
existencePeriod: zodOpenapi.z.string().optional(),
|
|
13620
|
+
reputation: zodOpenapi.z.string().optional(),
|
|
13621
|
+
riskLevel: zodOpenapi.z.enum(AmlScoreTypeZod).optional(),
|
|
13622
|
+
kycStatus: zodOpenapi.z.enum(KycStatusZod).optional()
|
|
13623
|
+
});
|
|
13624
|
+
const partyUpdateInputSchema = zodOpenapi.z.object({
|
|
13625
|
+
party: partySchema,
|
|
13626
|
+
personalData: individualUpdateSchema.nullable(),
|
|
13627
|
+
organizationData: organizationUpdateSchema.nullable(),
|
|
13628
|
+
bankAccounts: zodOpenapi.z.array(updateBankAccountSchema),
|
|
13629
|
+
disponents: zodOpenapi.z.array(disponentUpdateSchema).optional(),
|
|
13630
|
+
addresses: zodOpenapi.z.array(updateAddressInputSchema),
|
|
13631
|
+
recipients: zodOpenapi.z.array(updateBankAccountSchema).nullable(),
|
|
13632
|
+
aml: updateAmlInputSchema.optional()
|
|
13633
|
+
});
|
|
13634
|
+
const updatePartyOuputSchema = zodOpenapi.z.object({
|
|
13635
|
+
id: zodOpenapi.z.uuid(),
|
|
13636
|
+
customerStatus: zodOpenapi.z.enum(CustomerStatusZod),
|
|
13637
|
+
partyType: zodOpenapi.z.enum(PartyTypeZod),
|
|
13638
|
+
language: zodOpenapi.z.enum(generalCodes.LANGUAGE_CODES),
|
|
13639
|
+
note: zodOpenapi.z.string().nullable(),
|
|
13640
|
+
countryCode: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable()
|
|
13641
|
+
});
|
|
13642
|
+
const responseBodySchema$4 = zodOpenapi.z.object({
|
|
13643
|
+
message: zodOpenapi.z.string(),
|
|
13644
|
+
party: updatePartyOuputSchema
|
|
13645
|
+
});
|
|
13646
|
+
const updatePartyRoute = zodOpenapi.createRoute({
|
|
13647
|
+
method: "put",
|
|
13648
|
+
path: "/{partyId}",
|
|
13649
|
+
summary: "Update party",
|
|
13650
|
+
tags: ["Parties"],
|
|
13651
|
+
security: [
|
|
13652
|
+
{
|
|
13653
|
+
JwtAuth: []
|
|
13654
|
+
}
|
|
13655
|
+
],
|
|
13656
|
+
request: {
|
|
13657
|
+
params: zodOpenapi.z.object({ partyId: zodOpenapi.z.uuid() }),
|
|
13658
|
+
body: {
|
|
13659
|
+
content: {
|
|
13660
|
+
"application/json": {
|
|
13661
|
+
schema: partyUpdateInputSchema
|
|
13662
|
+
}
|
|
13663
|
+
},
|
|
13664
|
+
required: true
|
|
13665
|
+
}
|
|
13666
|
+
},
|
|
13667
|
+
responses: {
|
|
13668
|
+
200: {
|
|
13669
|
+
content: {
|
|
13670
|
+
"application/json": {
|
|
13671
|
+
schema: responseBodySchema$4
|
|
13672
|
+
}
|
|
13673
|
+
},
|
|
13674
|
+
description: "Updates a Party."
|
|
13675
|
+
},
|
|
13676
|
+
...errorResponse("Party", "Update")
|
|
13677
|
+
}
|
|
13678
|
+
});
|
|
13679
|
+
new zodOpenapi.OpenAPIHono().openapi(
|
|
13680
|
+
updatePartyRoute,
|
|
13681
|
+
async (context) => {
|
|
13682
|
+
const party = context.req.valid("json");
|
|
13683
|
+
const { partyId } = context.req.valid("param");
|
|
13684
|
+
const { data: updatedParty, error: partyError } = await context.env.MASTER_DATA_MANAGEMENT_SERVICE.updateParty({
|
|
13685
|
+
partyId,
|
|
13686
|
+
party: party.party,
|
|
13687
|
+
personalData: party.personalData ?? void 0,
|
|
13688
|
+
organizationData: party.organizationData ?? void 0,
|
|
13689
|
+
bankAccounts: party.bankAccounts ?? void 0,
|
|
13690
|
+
disponents: party.disponents ?? void 0,
|
|
13691
|
+
addresses: party.addresses ?? void 0,
|
|
13692
|
+
recipients: party.recipients ?? void 0,
|
|
13693
|
+
aml: party.aml ?? void 0
|
|
13694
|
+
});
|
|
13695
|
+
if (!updatedParty || partyError) {
|
|
13696
|
+
return context.json({ message: "Could not update a Party" }, 404);
|
|
13697
|
+
}
|
|
13698
|
+
return context.json(
|
|
13699
|
+
{
|
|
13700
|
+
message: "Party updated successfully",
|
|
13701
|
+
party: updatedParty
|
|
13702
|
+
},
|
|
13703
|
+
200
|
|
13704
|
+
);
|
|
13705
|
+
}
|
|
13706
|
+
);
|
|
13707
|
+
|
|
13708
|
+
const partyBaseOutputSchema = zodOpenapi.z.object({
|
|
13709
|
+
customerStatus: zodOpenapi.z.enum(CustomerStatusZod),
|
|
13710
|
+
partyType: zodOpenapi.z.enum(PartyTypeZod),
|
|
13711
|
+
language: zodOpenapi.z.enum(generalCodes.LANGUAGE_CODES),
|
|
13712
|
+
id: zodOpenapi.z.uuid(),
|
|
13713
|
+
internalId: zodOpenapi.z.string().nullable(),
|
|
13714
|
+
note: zodOpenapi.z.string().nullable(),
|
|
13715
|
+
countryCode: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable(),
|
|
13716
|
+
createdAt: zodOpenapi.z.date().nullable(),
|
|
13717
|
+
updatedAt: zodOpenapi.z.date().nullable(),
|
|
13718
|
+
isClient: zodOpenapi.z.boolean()
|
|
13719
|
+
});
|
|
13329
13720
|
const individualOutputSchema = zodOpenapi.z.object({
|
|
13330
13721
|
id: zodOpenapi.z.uuid(),
|
|
13331
13722
|
partyId: zodOpenapi.z.uuid(),
|
|
@@ -13357,116 +13748,7 @@ const individualOutputSchema = zodOpenapi.z.object({
|
|
|
13357
13748
|
createdAt: zodOpenapi.z.coerce.date().nullable(),
|
|
13358
13749
|
updatedAt: zodOpenapi.z.coerce.date().nullable()
|
|
13359
13750
|
});
|
|
13360
|
-
|
|
13361
|
-
zodOpenapi.z.object({
|
|
13362
|
-
partyId: zodOpenapi.z.uuid(),
|
|
13363
|
-
internalId: zodOpenapi.z.string().optional(),
|
|
13364
|
-
businessName: zodOpenapi.z.string(),
|
|
13365
|
-
email: zodOpenapi.z.email("Invalid email format").optional(),
|
|
13366
|
-
phone: zodOpenapi.z.string().optional(),
|
|
13367
|
-
registeredNumber: zodOpenapi.z.string(),
|
|
13368
|
-
registeredIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13369
|
-
operatesIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13370
|
-
presentIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13371
|
-
monthlyVolumeIn: zodOpenapi.z.number(),
|
|
13372
|
-
monthlyVolumeOut: zodOpenapi.z.number(),
|
|
13373
|
-
ownedBy: zodOpenapi.z.string(),
|
|
13374
|
-
companyObjects: zodOpenapi.z.string(),
|
|
13375
|
-
annualTurnover: zodOpenapi.z.number(),
|
|
13376
|
-
numberOfEmployees: zodOpenapi.z.number().optional(),
|
|
13377
|
-
prosecuted: zodOpenapi.z.string().optional(),
|
|
13378
|
-
location: zodOpenapi.z.string().optional(),
|
|
13379
|
-
fileNumber: zodOpenapi.z.string().optional(),
|
|
13380
|
-
websiteUrl: zodOpenapi.z.url("Invalid website URL").optional(),
|
|
13381
|
-
vatPayer: zodOpenapi.z.boolean(),
|
|
13382
|
-
companyObjectsDescription: zodOpenapi.z.string(),
|
|
13383
|
-
turnover3years: zodOpenapi.z.number(),
|
|
13384
|
-
operationCountries: zodOpenapi.z.string(),
|
|
13385
|
-
riskyBusinessType: zodOpenapi.z.string().optional()
|
|
13386
|
-
});
|
|
13387
|
-
const organizationUpdateSchema = zodOpenapi.z.object({
|
|
13388
|
-
id: zodOpenapi.z.uuid(),
|
|
13389
|
-
partyId: zodOpenapi.z.uuid().optional(),
|
|
13390
|
-
internalId: zodOpenapi.z.string().optional(),
|
|
13391
|
-
businessName: zodOpenapi.z.string().optional(),
|
|
13392
|
-
email: zodOpenapi.z.email("Invalid email format").optional(),
|
|
13393
|
-
phone: zodOpenapi.z.string().optional(),
|
|
13394
|
-
registeredNumber: zodOpenapi.z.string().optional(),
|
|
13395
|
-
registeredIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional(),
|
|
13396
|
-
operatesIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional(),
|
|
13397
|
-
presentIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional(),
|
|
13398
|
-
monthlyVolumeIn: zodOpenapi.z.number().optional(),
|
|
13399
|
-
monthlyVolumeOut: zodOpenapi.z.number().optional(),
|
|
13400
|
-
ownedBy: zodOpenapi.z.string().optional(),
|
|
13401
|
-
companyObjects: zodOpenapi.z.string().optional(),
|
|
13402
|
-
annualTurnover: zodOpenapi.z.number().optional(),
|
|
13403
|
-
numberOfEmployees: zodOpenapi.z.number().optional(),
|
|
13404
|
-
prosecuted: zodOpenapi.z.string().optional(),
|
|
13405
|
-
location: zodOpenapi.z.string().optional(),
|
|
13406
|
-
fileNumber: zodOpenapi.z.string().optional(),
|
|
13407
|
-
websiteUrl: zodOpenapi.z.url("Invalid website URL").optional(),
|
|
13408
|
-
vatPayer: zodOpenapi.z.boolean().optional(),
|
|
13409
|
-
companyObjectsDescription: zodOpenapi.z.string(),
|
|
13410
|
-
turnover3years: zodOpenapi.z.number(),
|
|
13411
|
-
operationCountries: zodOpenapi.z.string(),
|
|
13412
|
-
riskyBusinessType: zodOpenapi.z.string().optional()
|
|
13413
|
-
});
|
|
13414
|
-
zodOpenapi.z.object({
|
|
13415
|
-
id: zodOpenapi.z.uuid(),
|
|
13416
|
-
partyId: zodOpenapi.z.uuid(),
|
|
13417
|
-
internalId: zodOpenapi.z.string().nullable(),
|
|
13418
|
-
businessName: zodOpenapi.z.string(),
|
|
13419
|
-
email: zodOpenapi.z.string().nullable(),
|
|
13420
|
-
phone: zodOpenapi.z.string().nullable(),
|
|
13421
|
-
registeredNumber: zodOpenapi.z.string(),
|
|
13422
|
-
registeredIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13423
|
-
operatesIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13424
|
-
presentIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13425
|
-
monthlyVolumeIn: zodOpenapi.z.number(),
|
|
13426
|
-
monthlyVolumeOut: zodOpenapi.z.number(),
|
|
13427
|
-
ownedBy: zodOpenapi.z.string(),
|
|
13428
|
-
companyObjects: zodOpenapi.z.string(),
|
|
13429
|
-
annualTurnover: zodOpenapi.z.number(),
|
|
13430
|
-
numberOfEmployees: zodOpenapi.z.number().nullable(),
|
|
13431
|
-
prosecuted: zodOpenapi.z.string().nullable(),
|
|
13432
|
-
location: zodOpenapi.z.string().nullable(),
|
|
13433
|
-
fileNumber: zodOpenapi.z.string().nullable(),
|
|
13434
|
-
websiteUrl: zodOpenapi.z.string().nullable(),
|
|
13435
|
-
vatPayer: zodOpenapi.z.boolean(),
|
|
13436
|
-
companyObjectsDescription: zodOpenapi.z.string(),
|
|
13437
|
-
turnover3years: zodOpenapi.z.number(),
|
|
13438
|
-
operationCountries: zodOpenapi.z.string(),
|
|
13439
|
-
riskyBusinessType: zodOpenapi.z.string().nullable(),
|
|
13440
|
-
createdAt: zodOpenapi.z.coerce.date().nullable(),
|
|
13441
|
-
updatedAt: zodOpenapi.z.coerce.date().nullable()
|
|
13442
|
-
});
|
|
13443
|
-
const createOrganizationInputSchema = zodOpenapi.z.object({
|
|
13444
|
-
partyId: zodOpenapi.z.uuid(),
|
|
13445
|
-
internalId: zodOpenapi.z.string().optional(),
|
|
13446
|
-
businessName: zodOpenapi.z.string(),
|
|
13447
|
-
email: zodOpenapi.z.string().optional(),
|
|
13448
|
-
phone: zodOpenapi.z.string().optional(),
|
|
13449
|
-
registeredNumber: zodOpenapi.z.string(),
|
|
13450
|
-
registeredIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13451
|
-
operatesIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13452
|
-
presentIn: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13453
|
-
monthlyVolumeIn: zodOpenapi.z.number(),
|
|
13454
|
-
monthlyVolumeOut: zodOpenapi.z.number(),
|
|
13455
|
-
ownedBy: zodOpenapi.z.string(),
|
|
13456
|
-
companyObjects: zodOpenapi.z.string(),
|
|
13457
|
-
annualTurnover: zodOpenapi.z.number(),
|
|
13458
|
-
numberOfEmployees: zodOpenapi.z.number(),
|
|
13459
|
-
prosecuted: zodOpenapi.z.string().optional(),
|
|
13460
|
-
location: zodOpenapi.z.string().optional(),
|
|
13461
|
-
fileNumber: zodOpenapi.z.string().optional(),
|
|
13462
|
-
websiteUrl: zodOpenapi.z.string().optional(),
|
|
13463
|
-
vatPayer: zodOpenapi.z.boolean(),
|
|
13464
|
-
companyObjectsDescription: zodOpenapi.z.string(),
|
|
13465
|
-
turnover3years: zodOpenapi.z.number(),
|
|
13466
|
-
operationCountries: zodOpenapi.z.string(),
|
|
13467
|
-
riskyBusinessType: zodOpenapi.z.string().optional()
|
|
13468
|
-
});
|
|
13469
|
-
const createOrganizationOutputSchema = zodOpenapi.z.object({
|
|
13751
|
+
const createOrganizationOutputSchema = zodOpenapi.z.object({
|
|
13470
13752
|
partyId: zodOpenapi.z.uuid(),
|
|
13471
13753
|
internalId: zodOpenapi.z.string().nullable(),
|
|
13472
13754
|
businessName: zodOpenapi.z.string(),
|
|
@@ -13492,53 +13774,6 @@ const createOrganizationOutputSchema = zodOpenapi.z.object({
|
|
|
13492
13774
|
operationCountries: zodOpenapi.z.string(),
|
|
13493
13775
|
riskyBusinessType: zodOpenapi.z.string().nullable()
|
|
13494
13776
|
});
|
|
13495
|
-
|
|
13496
|
-
const disponentSchema = zodOpenapi.z.discriminatedUnion("partyType", [
|
|
13497
|
-
zodOpenapi.z.object({
|
|
13498
|
-
partyType: zodOpenapi.z.literal("INDIVIDUAL"),
|
|
13499
|
-
data: individualInsertSchema.omit({ partyId: true })
|
|
13500
|
-
}),
|
|
13501
|
-
zodOpenapi.z.object({
|
|
13502
|
-
partyType: zodOpenapi.z.literal("ORGANIZATION"),
|
|
13503
|
-
data: createOrganizationInputSchema.omit({ partyId: true })
|
|
13504
|
-
})
|
|
13505
|
-
]);
|
|
13506
|
-
const disponentUpdateSchema = zodOpenapi.z.discriminatedUnion("partyType", [
|
|
13507
|
-
zodOpenapi.z.object({
|
|
13508
|
-
partyType: zodOpenapi.z.literal("INDIVIDUAL"),
|
|
13509
|
-
data: individualUpdateSchema
|
|
13510
|
-
}),
|
|
13511
|
-
zodOpenapi.z.object({
|
|
13512
|
-
partyType: zodOpenapi.z.literal("ORGANIZATION"),
|
|
13513
|
-
data: organizationUpdateSchema
|
|
13514
|
-
})
|
|
13515
|
-
]);
|
|
13516
|
-
const disponentOutputSchema = zodOpenapi.z.discriminatedUnion("partyType", [
|
|
13517
|
-
zodOpenapi.z.object({
|
|
13518
|
-
partyType: zodOpenapi.z.literal("INDIVIDUAL"),
|
|
13519
|
-
data: individualOutputSchema.nullable()
|
|
13520
|
-
}),
|
|
13521
|
-
zodOpenapi.z.object({
|
|
13522
|
-
partyType: zodOpenapi.z.literal("ORGANIZATION"),
|
|
13523
|
-
data: createOrganizationOutputSchema.nullable()
|
|
13524
|
-
})
|
|
13525
|
-
]);
|
|
13526
|
-
|
|
13527
|
-
const updateBankAccountSchema = zodOpenapi.z.object({
|
|
13528
|
-
...bankAccountMetadataSchema.shape,
|
|
13529
|
-
partyId: zodOpenapi.z.uuid(),
|
|
13530
|
-
internalId: zodOpenapi.z.string().optional(),
|
|
13531
|
-
holderName: zodOpenapi.z.string(),
|
|
13532
|
-
number: zodOpenapi.z.string().optional(),
|
|
13533
|
-
currency: bankAccountMetadataSchema.shape.currency.nonoptional(),
|
|
13534
|
-
countryCode: bankAccountMetadataSchema.shape.countryCode.nonoptional(),
|
|
13535
|
-
id: bankAccountMetadataSchema.shape.id.nonoptional()
|
|
13536
|
-
});
|
|
13537
|
-
const bankAccountInputSchema = updateBankAccountSchema.required({
|
|
13538
|
-
holderName: true,
|
|
13539
|
-
currency: true,
|
|
13540
|
-
countryCode: true
|
|
13541
|
-
}).omit({ id: true, partyId: true });
|
|
13542
13777
|
const bankAccountOutputSchema = zodOpenapi.z.object({
|
|
13543
13778
|
id: zodOpenapi.z.string(),
|
|
13544
13779
|
partyId: zodOpenapi.z.uuid(),
|
|
@@ -13559,90 +13794,16 @@ const bankAccountOutputSchema = zodOpenapi.z.object({
|
|
|
13559
13794
|
brBankNumber: zodOpenapi.z.string().nullable(),
|
|
13560
13795
|
updatedAt: zodOpenapi.z.coerce.date().nullable()
|
|
13561
13796
|
});
|
|
13562
|
-
|
|
13563
|
-
|
|
13564
|
-
|
|
13565
|
-
|
|
13566
|
-
|
|
13567
|
-
|
|
13568
|
-
|
|
13569
|
-
|
|
13570
|
-
|
|
13571
|
-
|
|
13572
|
-
isDistraint: zodOpenapi.z.boolean().default(false),
|
|
13573
|
-
estTxsVolumeMonth: zodOpenapi.z.string(),
|
|
13574
|
-
estTxsVolumeYear: zodOpenapi.z.string(),
|
|
13575
|
-
tradingCountries: zodOpenapi.z.string(),
|
|
13576
|
-
tradingSide: zodOpenapi.z.string(),
|
|
13577
|
-
acceptedAMLTermsAndConditions: zodOpenapi.z.boolean(),
|
|
13578
|
-
signatureMethod: zodOpenapi.z.string().optional(),
|
|
13579
|
-
existencePeriod: zodOpenapi.z.string().optional(),
|
|
13580
|
-
reputation: zodOpenapi.z.string().optional(),
|
|
13581
|
-
riskLevel: zodOpenapi.z.enum(AmlScoreTypeZod$1).optional(),
|
|
13582
|
-
kycStatus: zodOpenapi.z.enum(KycStatusZod$1).optional()
|
|
13583
|
-
});
|
|
13584
|
-
const updateAmlInputSchema = zodOpenapi.z.object({
|
|
13585
|
-
id: zodOpenapi.z.uuid(),
|
|
13586
|
-
partyId: zodOpenapi.z.uuid().optional(),
|
|
13587
|
-
internalId: zodOpenapi.z.string().optional(),
|
|
13588
|
-
sourceOfWealth: zodOpenapi.z.string().optional(),
|
|
13589
|
-
yearlyIncome: zodOpenapi.z.string().optional(),
|
|
13590
|
-
tradesPurpose: zodOpenapi.z.string().optional(),
|
|
13591
|
-
sourceOfIncome: zodOpenapi.z.string().optional(),
|
|
13592
|
-
transactionType: zodOpenapi.z.string().optional(),
|
|
13593
|
-
transactionTypeExpiry: zodOpenapi.z.date().optional(),
|
|
13594
|
-
isDistraint: zodOpenapi.z.boolean().optional(),
|
|
13595
|
-
estTxsVolumeMonth: zodOpenapi.z.string(),
|
|
13596
|
-
estTxsVolumeYear: zodOpenapi.z.string(),
|
|
13597
|
-
tradingCountries: zodOpenapi.z.string(),
|
|
13598
|
-
tradingSide: zodOpenapi.z.string(),
|
|
13599
|
-
acceptedAMLTermsAndConditions: zodOpenapi.z.boolean(),
|
|
13600
|
-
signatureMethod: zodOpenapi.z.string().optional(),
|
|
13601
|
-
existencePeriod: zodOpenapi.z.string().optional(),
|
|
13602
|
-
reputation: zodOpenapi.z.string().optional(),
|
|
13603
|
-
riskLevel: zodOpenapi.z.enum(AmlScoreTypeZod$1).optional(),
|
|
13604
|
-
kycStatus: zodOpenapi.z.enum(KycStatusZod$1).optional()
|
|
13605
|
-
});
|
|
13606
|
-
const createAmlOutputSchema = zodOpenapi.z.object({
|
|
13607
|
-
id: zodOpenapi.z.uuid(),
|
|
13608
|
-
partyId: zodOpenapi.z.uuid(),
|
|
13609
|
-
internalId: zodOpenapi.z.string().nullable(),
|
|
13610
|
-
sourceOfWealth: zodOpenapi.z.string(),
|
|
13611
|
-
yearlyIncome: zodOpenapi.z.string(),
|
|
13612
|
-
tradesPurpose: zodOpenapi.z.string().nullable(),
|
|
13613
|
-
sourceOfIncome: zodOpenapi.z.string(),
|
|
13614
|
-
transactionType: zodOpenapi.z.string().nullable(),
|
|
13615
|
-
transactionTypeExpiry: zodOpenapi.z.date().nullable(),
|
|
13616
|
-
isDistraint: zodOpenapi.z.boolean(),
|
|
13617
|
-
estTxsVolumeMonth: zodOpenapi.z.string(),
|
|
13618
|
-
estTxsVolumeYear: zodOpenapi.z.string(),
|
|
13619
|
-
tradingCountries: zodOpenapi.z.string(),
|
|
13620
|
-
tradingSide: zodOpenapi.z.string(),
|
|
13621
|
-
acceptedAMLTermsAndConditions: zodOpenapi.z.boolean(),
|
|
13622
|
-
signatureMethod: zodOpenapi.z.string().nullable(),
|
|
13623
|
-
existencePeriod: zodOpenapi.z.string().nullable(),
|
|
13624
|
-
reputation: zodOpenapi.z.string().nullable(),
|
|
13625
|
-
riskLevel: zodOpenapi.z.enum(AmlScoreTypeZod$1),
|
|
13626
|
-
kycStatus: zodOpenapi.z.enum(KycStatusZod$1).nullable(),
|
|
13627
|
-
createdAt: zodOpenapi.z.date().nullable(),
|
|
13628
|
-
updatedAt: zodOpenapi.z.date().nullable()
|
|
13629
|
-
});
|
|
13630
|
-
|
|
13631
|
-
const createAddressInputSchema = zodOpenapi.z.object({
|
|
13632
|
-
partyId: zodOpenapi.z.uuid(),
|
|
13633
|
-
addressType: zodOpenapi.z.enum(AddressTypeZod),
|
|
13634
|
-
internalId: zodOpenapi.z.string().optional(),
|
|
13635
|
-
street: zodOpenapi.z.string(),
|
|
13636
|
-
orientationNumber: zodOpenapi.z.string().optional(),
|
|
13637
|
-
descriptiveNumber: zodOpenapi.z.string().optional(),
|
|
13638
|
-
municipality: zodOpenapi.z.string().max(255),
|
|
13639
|
-
municipalityPart: zodOpenapi.z.string().optional(),
|
|
13640
|
-
zipCode: zodOpenapi.z.string().max(20),
|
|
13641
|
-
district: zodOpenapi.z.string().max(255),
|
|
13642
|
-
region: zodOpenapi.z.string().max(255),
|
|
13643
|
-
countryCode: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13644
|
-
ruianCode: zodOpenapi.z.string().optional()
|
|
13645
|
-
});
|
|
13797
|
+
const disponentOutputSchema = zodOpenapi.z.discriminatedUnion("partyType", [
|
|
13798
|
+
zodOpenapi.z.object({
|
|
13799
|
+
partyType: zodOpenapi.z.literal("INDIVIDUAL"),
|
|
13800
|
+
data: individualOutputSchema.nullable()
|
|
13801
|
+
}),
|
|
13802
|
+
zodOpenapi.z.object({
|
|
13803
|
+
partyType: zodOpenapi.z.literal("ORGANIZATION"),
|
|
13804
|
+
data: createOrganizationOutputSchema.nullable()
|
|
13805
|
+
})
|
|
13806
|
+
]);
|
|
13646
13807
|
const createAddressOutputSchema = zodOpenapi.z.object({
|
|
13647
13808
|
id: zodOpenapi.z.uuid(),
|
|
13648
13809
|
partyId: zodOpenapi.z.uuid(),
|
|
@@ -13661,68 +13822,32 @@ const createAddressOutputSchema = zodOpenapi.z.object({
|
|
|
13661
13822
|
createdAt: zodOpenapi.z.date().nullable(),
|
|
13662
13823
|
updatedAt: zodOpenapi.z.date().nullable()
|
|
13663
13824
|
});
|
|
13664
|
-
const
|
|
13825
|
+
const createAmlOutputSchema = zodOpenapi.z.object({
|
|
13665
13826
|
id: zodOpenapi.z.uuid(),
|
|
13666
13827
|
partyId: zodOpenapi.z.uuid(),
|
|
13667
|
-
internalId: zodOpenapi.z.string().optional(),
|
|
13668
|
-
addressType: zodOpenapi.z.enum(AddressTypeZod),
|
|
13669
|
-
street: zodOpenapi.z.string(),
|
|
13670
|
-
orientationNumber: zodOpenapi.z.string().optional(),
|
|
13671
|
-
descriptiveNumber: zodOpenapi.z.string().optional(),
|
|
13672
|
-
municipality: zodOpenapi.z.string().max(255),
|
|
13673
|
-
municipalityPart: zodOpenapi.z.string().optional(),
|
|
13674
|
-
zipCode: zodOpenapi.z.string().max(20),
|
|
13675
|
-
district: zodOpenapi.z.string().max(255),
|
|
13676
|
-
region: zodOpenapi.z.string().max(255),
|
|
13677
|
-
countryCode: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2),
|
|
13678
|
-
ruianCode: zodOpenapi.z.string().optional()
|
|
13679
|
-
});
|
|
13680
|
-
|
|
13681
|
-
const partySchema = zodOpenapi.z.object({
|
|
13682
|
-
partyType: zodOpenapi.z.enum(PartyTypeZod),
|
|
13683
|
-
language: zodOpenapi.z.enum(generalCodes.LANGUAGE_CODES),
|
|
13684
|
-
id: zodOpenapi.z.uuid(),
|
|
13685
|
-
internalId: zodOpenapi.z.string().optional(),
|
|
13686
|
-
note: zodOpenapi.z.string().optional(),
|
|
13687
|
-
countryCode: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional()
|
|
13688
|
-
});
|
|
13689
|
-
const partyCreateOutputSchema = zodOpenapi.z.object({
|
|
13690
|
-
customerStatus: zodOpenapi.z.enum(CustomerStatusZod),
|
|
13691
|
-
partyType: zodOpenapi.z.enum(PartyTypeZod),
|
|
13692
|
-
language: zodOpenapi.z.enum(generalCodes.LANGUAGE_CODES),
|
|
13693
|
-
id: zodOpenapi.z.uuid(),
|
|
13694
|
-
internalId: zodOpenapi.z.string().nullable(),
|
|
13695
|
-
note: zodOpenapi.z.string().nullable(),
|
|
13696
|
-
countryCode: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).nullable(),
|
|
13697
|
-
createdAt: zodOpenapi.z.date().nullable(),
|
|
13698
|
-
updatedAt: zodOpenapi.z.date().nullable()
|
|
13699
|
-
});
|
|
13700
|
-
zodOpenapi.z.object({
|
|
13701
|
-
customerStatus: zodOpenapi.z.enum(CustomerStatusZod),
|
|
13702
|
-
partyType: zodOpenapi.z.enum(PartyTypeZod),
|
|
13703
|
-
language: zodOpenapi.z.enum(generalCodes.LANGUAGE_CODES),
|
|
13704
|
-
id: zodOpenapi.z.uuid(),
|
|
13705
13828
|
internalId: zodOpenapi.z.string().nullable(),
|
|
13706
|
-
|
|
13707
|
-
|
|
13829
|
+
sourceOfWealth: zodOpenapi.z.string(),
|
|
13830
|
+
yearlyIncome: zodOpenapi.z.string(),
|
|
13831
|
+
tradesPurpose: zodOpenapi.z.string().nullable(),
|
|
13832
|
+
sourceOfIncome: zodOpenapi.z.string(),
|
|
13833
|
+
transactionType: zodOpenapi.z.string().nullable(),
|
|
13834
|
+
transactionTypeExpiry: zodOpenapi.z.date().nullable(),
|
|
13835
|
+
isDistraint: zodOpenapi.z.boolean(),
|
|
13836
|
+
estTxsVolumeMonth: zodOpenapi.z.string(),
|
|
13837
|
+
estTxsVolumeYear: zodOpenapi.z.string(),
|
|
13838
|
+
tradingCountries: zodOpenapi.z.string(),
|
|
13839
|
+
tradingSide: zodOpenapi.z.string(),
|
|
13840
|
+
acceptedAMLTermsAndConditions: zodOpenapi.z.boolean(),
|
|
13841
|
+
signatureMethod: zodOpenapi.z.string().nullable(),
|
|
13842
|
+
existencePeriod: zodOpenapi.z.string().nullable(),
|
|
13843
|
+
reputation: zodOpenapi.z.string().nullable(),
|
|
13844
|
+
riskLevel: zodOpenapi.z.enum(AmlScoreTypeZod),
|
|
13845
|
+
kycStatus: zodOpenapi.z.enum(KycStatusZod).nullable(),
|
|
13708
13846
|
createdAt: zodOpenapi.z.date().nullable(),
|
|
13709
13847
|
updatedAt: zodOpenapi.z.date().nullable()
|
|
13710
13848
|
});
|
|
13711
|
-
const createPartyInputSchema = zodOpenapi.z.object({
|
|
13712
|
-
party: partySchema.omit({ id: true }),
|
|
13713
|
-
personalData: individualInsertSchema.omit({ partyId: true }).nullable(),
|
|
13714
|
-
organizationData: createOrganizationInputSchema.omit({ partyId: true }).nullable(),
|
|
13715
|
-
bankAccounts: zodOpenapi.z.array(bankAccountInputSchema),
|
|
13716
|
-
disponents: zodOpenapi.z.array(disponentSchema),
|
|
13717
|
-
addresses: zodOpenapi.z.array(createAddressInputSchema.omit({ partyId: true })),
|
|
13718
|
-
aml: createAmlInputSchema.omit({ partyId: true }),
|
|
13719
|
-
recipients: zodOpenapi.z.array(bankAccountInputSchema)
|
|
13720
|
-
});
|
|
13721
13849
|
const partyOutputSchema = zodOpenapi.z.object({
|
|
13722
|
-
party:
|
|
13723
|
-
id: zodOpenapi.z.uuid(),
|
|
13724
|
-
isClient: zodOpenapi.z.boolean()
|
|
13725
|
-
}).nullable(),
|
|
13850
|
+
party: partyBaseOutputSchema.nullable(),
|
|
13726
13851
|
personalData: individualOutputSchema.nullable(),
|
|
13727
13852
|
organizationData: createOrganizationOutputSchema.nullable(),
|
|
13728
13853
|
bankAccounts: zodOpenapi.z.array(bankAccountOutputSchema).nullable(),
|
|
@@ -13731,26 +13856,168 @@ const partyOutputSchema = zodOpenapi.z.object({
|
|
|
13731
13856
|
aml: createAmlOutputSchema.nullable(),
|
|
13732
13857
|
recipients: zodOpenapi.z.array(bankAccountOutputSchema).nullable()
|
|
13733
13858
|
});
|
|
13734
|
-
const
|
|
13735
|
-
|
|
13736
|
-
party:
|
|
13737
|
-
|
|
13738
|
-
|
|
13739
|
-
|
|
13740
|
-
|
|
13741
|
-
|
|
13742
|
-
|
|
13743
|
-
|
|
13859
|
+
const responseBodySchema$3 = zodOpenapi.z.object({
|
|
13860
|
+
message: zodOpenapi.z.string(),
|
|
13861
|
+
party: partyOutputSchema
|
|
13862
|
+
});
|
|
13863
|
+
const getPartyByPartyIdRoute = zodOpenapi.createRoute({
|
|
13864
|
+
method: "get",
|
|
13865
|
+
path: "/{partyId}",
|
|
13866
|
+
summary: "Get party",
|
|
13867
|
+
tags: ["Parties"],
|
|
13868
|
+
request: {
|
|
13869
|
+
params: zodOpenapi.z.object({ partyId: zodOpenapi.z.uuid() })
|
|
13870
|
+
},
|
|
13871
|
+
responses: {
|
|
13872
|
+
200: {
|
|
13873
|
+
content: {
|
|
13874
|
+
"application/json": {
|
|
13875
|
+
schema: responseBodySchema$3
|
|
13876
|
+
}
|
|
13877
|
+
},
|
|
13878
|
+
description: "Get party by party Id"
|
|
13879
|
+
},
|
|
13880
|
+
...errorResponse("party", "Get")
|
|
13881
|
+
}
|
|
13744
13882
|
});
|
|
13745
|
-
|
|
13746
|
-
|
|
13747
|
-
|
|
13748
|
-
|
|
13749
|
-
|
|
13750
|
-
|
|
13751
|
-
|
|
13883
|
+
new zodOpenapi.OpenAPIHono().openapi(
|
|
13884
|
+
getPartyByPartyIdRoute,
|
|
13885
|
+
async (context) => {
|
|
13886
|
+
const { partyId } = context.req.valid("param");
|
|
13887
|
+
const { data: partyData, error: partyError } = await context.env.MASTER_DATA_MANAGEMENT_SERVICE.getParty({ partyId });
|
|
13888
|
+
if (partyData == null || partyError) {
|
|
13889
|
+
return context.json({ message: "Party not found" }, 404);
|
|
13890
|
+
}
|
|
13891
|
+
return context.json(
|
|
13892
|
+
{
|
|
13893
|
+
message: "Party Found",
|
|
13894
|
+
party: partyData
|
|
13895
|
+
},
|
|
13896
|
+
200
|
|
13897
|
+
);
|
|
13898
|
+
}
|
|
13899
|
+
);
|
|
13900
|
+
|
|
13901
|
+
const paginationSchema = zodOpenapi.z.object({
|
|
13902
|
+
offset: zodOpenapi.z.number().default(1),
|
|
13903
|
+
limit: zodOpenapi.z.number().default(10)
|
|
13752
13904
|
});
|
|
13905
|
+
const paginationAndSearchSchema = zodOpenapi.z.object({
|
|
13906
|
+
page: zodOpenapi.z.coerce.number().positive().default(1),
|
|
13907
|
+
limit: zodOpenapi.z.coerce.number().positive().default(20),
|
|
13908
|
+
column: zodOpenapi.z.string(),
|
|
13909
|
+
direction: zodOpenapi.z.enum(["asc", "desc"]),
|
|
13910
|
+
search: zodOpenapi.z.string().optional(),
|
|
13911
|
+
ids: zodOpenapi.z.string().array().optional()
|
|
13912
|
+
});
|
|
13913
|
+
paginationSchema.extend({
|
|
13914
|
+
partyId: zodOpenapi.z.uuid()
|
|
13915
|
+
});
|
|
13916
|
+
paginationSchema.extend({
|
|
13917
|
+
id: zodOpenapi.z.uuid()
|
|
13918
|
+
});
|
|
13919
|
+
zodOpenapi.z.object({ partyId: zodOpenapi.z.uuid() });
|
|
13753
13920
|
|
|
13921
|
+
const partiesOutputDataSchema = zodOpenapi.z.array(partyOutputSchema);
|
|
13922
|
+
const getPartiesRoute = zodOpenapi.createRoute({
|
|
13923
|
+
method: "get",
|
|
13924
|
+
path: "/",
|
|
13925
|
+
summary: "List parties",
|
|
13926
|
+
tags: ["Parties"],
|
|
13927
|
+
request: { query: paginationAndSearchSchema },
|
|
13928
|
+
responses: {
|
|
13929
|
+
500: {
|
|
13930
|
+
description: "Internal Server Error",
|
|
13931
|
+
content: {
|
|
13932
|
+
"application/json": {
|
|
13933
|
+
schema: routeError
|
|
13934
|
+
}
|
|
13935
|
+
}
|
|
13936
|
+
},
|
|
13937
|
+
200: {
|
|
13938
|
+
content: {
|
|
13939
|
+
"application/json": {
|
|
13940
|
+
schema: zodOpenapi.z.object({
|
|
13941
|
+
message: zodOpenapi.z.string(),
|
|
13942
|
+
data: zodOpenapi.z.object({
|
|
13943
|
+
parties: partiesOutputDataSchema,
|
|
13944
|
+
totalCount: zodOpenapi.z.number()
|
|
13945
|
+
})
|
|
13946
|
+
})
|
|
13947
|
+
}
|
|
13948
|
+
},
|
|
13949
|
+
description: "Get Parties."
|
|
13950
|
+
}
|
|
13951
|
+
}
|
|
13952
|
+
});
|
|
13953
|
+
new zodOpenapi.OpenAPIHono().openapi(
|
|
13954
|
+
getPartiesRoute,
|
|
13955
|
+
async (context) => {
|
|
13956
|
+
const query = context.req.query();
|
|
13957
|
+
const validatedQuery = {
|
|
13958
|
+
page: query.page ? Number(query.page) : 1,
|
|
13959
|
+
limit: query.limit ? Number(query.limit) : 10,
|
|
13960
|
+
column: query.column || "createdAt",
|
|
13961
|
+
direction: query.direction || "desc",
|
|
13962
|
+
search: query.search,
|
|
13963
|
+
ids: query.ids ? Array.isArray(query.ids) ? query.ids : [query.ids] : void 0
|
|
13964
|
+
};
|
|
13965
|
+
const {
|
|
13966
|
+
data: parties,
|
|
13967
|
+
error,
|
|
13968
|
+
message,
|
|
13969
|
+
status
|
|
13970
|
+
} = await context.env.MASTER_DATA_MANAGEMENT_SERVICE.getParties(
|
|
13971
|
+
validatedQuery
|
|
13972
|
+
);
|
|
13973
|
+
if (error || !parties) {
|
|
13974
|
+
return context.json(
|
|
13975
|
+
{
|
|
13976
|
+
message: "Failed to get parties",
|
|
13977
|
+
data: null,
|
|
13978
|
+
errorDetail: {
|
|
13979
|
+
message,
|
|
13980
|
+
code: status
|
|
13981
|
+
},
|
|
13982
|
+
error: true
|
|
13983
|
+
},
|
|
13984
|
+
500
|
|
13985
|
+
);
|
|
13986
|
+
}
|
|
13987
|
+
return context.json({ message, data: parties }, 200);
|
|
13988
|
+
}
|
|
13989
|
+
);
|
|
13990
|
+
|
|
13991
|
+
const DOCUMENT_SIDE = ["front", "back"];
|
|
13992
|
+
const paramsSchema$2 = zodOpenapi.z.object({
|
|
13993
|
+
partyId: zodOpenapi.z.uuid()
|
|
13994
|
+
});
|
|
13995
|
+
const idDocumentCreateInputSchema = zodOpenapi.z.object({
|
|
13996
|
+
partyId: zodOpenapi.z.uuid(),
|
|
13997
|
+
idDocType: zodOpenapi.z.enum(IdDocTypeZod),
|
|
13998
|
+
idDocNumber: zodOpenapi.z.string(),
|
|
13999
|
+
idDocHolderName: zodOpenapi.z.string(),
|
|
14000
|
+
issueDate: zodOpenapi.z.coerce.date().optional(),
|
|
14001
|
+
expirationDate: zodOpenapi.z.coerce.date().optional(),
|
|
14002
|
+
issuer: zodOpenapi.z.string().optional(),
|
|
14003
|
+
countryOfIssue: zodOpenapi.z.enum(generalCodes.COUNTRY_CODES_2).optional(),
|
|
14004
|
+
idDocStatus: zodOpenapi.z.enum(IdDocStatusZod).optional()
|
|
14005
|
+
});
|
|
14006
|
+
const idDocumentMultipartSchema = zodOpenapi.z.object({
|
|
14007
|
+
idDocument: zodOpenapi.z.string(),
|
|
14008
|
+
documentSide: zodOpenapi.z.enum(DOCUMENT_SIDE),
|
|
14009
|
+
file: zodOpenapi.z.any()
|
|
14010
|
+
});
|
|
14011
|
+
const multipartOpenApiSchema = zodOpenapi.z.object({
|
|
14012
|
+
idDocument: zodOpenapi.z.string().openapi({
|
|
14013
|
+
description: "JSON stringified IdDocument payload"
|
|
14014
|
+
}),
|
|
14015
|
+
documentSide: zodOpenapi.z.enum(DOCUMENT_SIDE),
|
|
14016
|
+
file: zodOpenapi.z.any().openapi({
|
|
14017
|
+
type: "string",
|
|
14018
|
+
format: "binary"
|
|
14019
|
+
})
|
|
14020
|
+
});
|
|
13754
14021
|
const idDocumentOutputSchema = zodOpenapi.z.object({
|
|
13755
14022
|
id: zodOpenapi.z.uuid(),
|
|
13756
14023
|
createdAt: zodOpenapi.z.iso.datetime().nullable(),
|
|
@@ -13768,21 +14035,422 @@ const idDocumentOutputSchema = zodOpenapi.z.object({
|
|
|
13768
14035
|
backImageUri: zodOpenapi.z.string().nullable(),
|
|
13769
14036
|
idDocStatus: zodOpenapi.z.enum(IdDocStatusZod).nullable()
|
|
13770
14037
|
});
|
|
14038
|
+
const responseBodySchema$2 = zodOpenapi.z.object({
|
|
14039
|
+
message: zodOpenapi.z.string(),
|
|
14040
|
+
idDocument: idDocumentOutputSchema
|
|
14041
|
+
});
|
|
14042
|
+
const createDocumentRoute = zodOpenapi.createRoute({
|
|
14043
|
+
method: "post",
|
|
14044
|
+
path: "/{partyId}/id-documents",
|
|
14045
|
+
summary: "Create ID document and upload file",
|
|
14046
|
+
tags: ["Documents"],
|
|
14047
|
+
// middleware: [jwt, signature(), idempotency()],
|
|
14048
|
+
// security: [{ JwtAuth: [] }],
|
|
14049
|
+
request: {
|
|
14050
|
+
// headers: z.object({
|
|
14051
|
+
// 'X-Idempotency-Key': XIdempotencyKeyHeaderSchema,
|
|
14052
|
+
// 'X-Signature': XSignatureHeaderSchema,
|
|
14053
|
+
// 'X-Signature-Key': XSignatureKeyHeaderSchema,
|
|
14054
|
+
// }),
|
|
14055
|
+
body: {
|
|
14056
|
+
content: {
|
|
14057
|
+
"multipart/form-data": {
|
|
14058
|
+
schema: multipartOpenApiSchema
|
|
14059
|
+
}
|
|
14060
|
+
},
|
|
14061
|
+
required: true
|
|
14062
|
+
},
|
|
14063
|
+
params: paramsSchema$2
|
|
14064
|
+
},
|
|
14065
|
+
responses: {
|
|
14066
|
+
200: {
|
|
14067
|
+
description: "Document created and file uploaded",
|
|
14068
|
+
content: {
|
|
14069
|
+
"application/json": {
|
|
14070
|
+
schema: responseBodySchema$2
|
|
14071
|
+
}
|
|
14072
|
+
}
|
|
14073
|
+
},
|
|
14074
|
+
400: {
|
|
14075
|
+
description: "Invalid request",
|
|
14076
|
+
content: {
|
|
14077
|
+
"application/json": {
|
|
14078
|
+
schema: zodOpenapi.z.object({ message: zodOpenapi.z.string() })
|
|
14079
|
+
}
|
|
14080
|
+
}
|
|
14081
|
+
},
|
|
14082
|
+
500: {
|
|
14083
|
+
description: "Internal server error",
|
|
14084
|
+
content: {
|
|
14085
|
+
"application/json": {
|
|
14086
|
+
schema: zodOpenapi.z.object({ message: zodOpenapi.z.string() })
|
|
14087
|
+
}
|
|
14088
|
+
}
|
|
14089
|
+
}
|
|
14090
|
+
}
|
|
14091
|
+
});
|
|
14092
|
+
new zodOpenapi.OpenAPIHono().openapi(
|
|
14093
|
+
createDocumentRoute,
|
|
14094
|
+
async (context) => {
|
|
14095
|
+
const rawBody = await context.req.parseBody();
|
|
14096
|
+
const { partyId } = await context.req.param();
|
|
14097
|
+
const idDocumentRaw = rawBody.idDocument;
|
|
14098
|
+
const documentSide = rawBody.documentSide;
|
|
14099
|
+
const file = rawBody.file;
|
|
14100
|
+
if (typeof idDocumentRaw !== "string" || !DOCUMENT_SIDE.includes(documentSide) || !(file instanceof File)) {
|
|
14101
|
+
return context.json({ message: "Invalid multipart payload" }, 400);
|
|
14102
|
+
}
|
|
14103
|
+
const idDocumentJson = JSON.parse(JSON.parse(idDocumentRaw));
|
|
14104
|
+
const idDocumentResult = idDocumentCreateInputSchema.safeParse(idDocumentJson);
|
|
14105
|
+
if (!idDocumentResult.success) {
|
|
14106
|
+
console.error(idDocumentResult.error);
|
|
14107
|
+
return context.json({ message: "Could not parse IdDocument" }, 400);
|
|
14108
|
+
}
|
|
14109
|
+
const {
|
|
14110
|
+
data: createdIdDocument,
|
|
14111
|
+
error: createError,
|
|
14112
|
+
message
|
|
14113
|
+
} = await context.env.MASTER_DATA_MANAGEMENT_SERVICE.createIdDocument({
|
|
14114
|
+
idDocument: idDocumentResult.data,
|
|
14115
|
+
partyId
|
|
14116
|
+
});
|
|
14117
|
+
if (!createdIdDocument || createError) {
|
|
14118
|
+
console.error(message);
|
|
14119
|
+
return context.json({ message: "Could not create IdDocument" }, 500);
|
|
14120
|
+
}
|
|
14121
|
+
const bytes = new Uint8Array(await file.arrayBuffer());
|
|
14122
|
+
const { data: uploadResult, error: uploadError } = await context.env.DOCUMENT_SERVICE.uploadDocument({
|
|
14123
|
+
entityType: "client",
|
|
14124
|
+
entityId: createdIdDocument.id,
|
|
14125
|
+
type: "kyc",
|
|
14126
|
+
metadata: {},
|
|
14127
|
+
file: {
|
|
14128
|
+
bytes,
|
|
14129
|
+
type: file.type,
|
|
14130
|
+
name: file.name,
|
|
14131
|
+
size: file.size
|
|
14132
|
+
}
|
|
14133
|
+
});
|
|
14134
|
+
if (!uploadResult || uploadError) {
|
|
14135
|
+
return context.json({ message: "File upload failed" }, 500);
|
|
14136
|
+
}
|
|
14137
|
+
return context.json(
|
|
14138
|
+
{
|
|
14139
|
+
message: "IdDocument created successfully",
|
|
14140
|
+
idDocument: {
|
|
14141
|
+
...createdIdDocument,
|
|
14142
|
+
frontImageUri: documentSide === "front" ? uploadResult.storageUrl : createdIdDocument.frontImageUri,
|
|
14143
|
+
backImageUri: documentSide === "back" ? uploadResult.storageUrl : createdIdDocument.backImageUri
|
|
14144
|
+
}
|
|
14145
|
+
},
|
|
14146
|
+
200
|
|
14147
|
+
);
|
|
14148
|
+
}
|
|
14149
|
+
);
|
|
14150
|
+
|
|
14151
|
+
const XIdempotencyKeyHeaderSchema = zodOpenapi.z.string().openapi({
|
|
14152
|
+
description: "Unique identifier header to ensure the request is processed only once.",
|
|
14153
|
+
example: "4ac15c22-2bd3-426f-b915-bfd5febdb7df"
|
|
14154
|
+
});
|
|
14155
|
+
const XSignatureHeaderSchema = zodOpenapi.z.string().openapi({
|
|
14156
|
+
description: "Payload signature header to verify request body integrity.",
|
|
14157
|
+
example: "FIXAxHO6QqH3M7t4MatM8U6l/nIqWj7jIEW2U6/771MGUorSywy+GmKIG3B1mxT1jR7qPtBHQ5YSO8O53iCvOh6kIhbGXtVe/3C61dsEykLbmntV3nF4DY8/HyfF8a6c2Asc5bvgHrhosGi3s/ouoNowMpsckyq66We8H5gRbXlqJm4Bl1zWWQah4aQLX548L8DLx5+EIgArNMVVG8ryCES99aovJBKrQQMpQLwss1sSFuUZ1kdBCodtvxgTOXOugnZ1UNCmUNFXryQ6bn7wY7Punml/rwR/zTQ9j4SX07iFeQC5rgm9/zi29DBluegu+b8/G8oXrf6L4hugbMEKJfLRfKjNHCrjCooKtInoYxwNEfJyJ9mhqdBoeIBca9zgPpewdbwFLXVV82TYR+xZiywDcHKQ62IzQp07NOMCl4xArSJ3vIWUftSYpLIwomyjQEbY27oGiubUF4krEKgHnMYalCn0ruYOwFik2Pa6FEfIZo0TSXDC24UHQb5mJNPYpv2hny7U5CZPmBvjaRGMVnE+WgRUT19cwqlSL3pWAfeSn1Wro7lYBp/PmlRPgYIxl9GJwNlQ0G+NzP9cMSJbmI5fwErDNgJAaPaMwZbJ3y8ikmbBkkXNPKvQrWVGCJ4nP+/f8yYzMZq272EFx984pSoo2yAeBJnrxbW+AlZxyIo="
|
|
14158
|
+
});
|
|
14159
|
+
const XSignatureKeyHeaderSchema = zodOpenapi.z.string().openapi({
|
|
14160
|
+
description: "Signature key identifier header to specify which key was used for payload signing.",
|
|
14161
|
+
example: "ixtal"
|
|
14162
|
+
});
|
|
14163
|
+
const ALLOWED_ID_DOCUMENTS_FILTERS = {
|
|
14164
|
+
PARTY_ID: "filterIdDocumentPartyId",
|
|
14165
|
+
ISSUER: "filterIdDocumentIssuer"
|
|
14166
|
+
};
|
|
14167
|
+
|
|
13771
14168
|
const idDocumentsListOutputSchema = zodOpenapi.z.object({
|
|
13772
14169
|
totalCount: zodOpenapi.z.number(),
|
|
13773
14170
|
idDocuments: zodOpenapi.z.array(idDocumentOutputSchema)
|
|
13774
14171
|
});
|
|
13775
|
-
const
|
|
13776
|
-
|
|
13777
|
-
|
|
13778
|
-
|
|
13779
|
-
|
|
13780
|
-
|
|
13781
|
-
|
|
13782
|
-
|
|
13783
|
-
|
|
13784
|
-
|
|
13785
|
-
|
|
14172
|
+
const paramsSchema$1 = zodOpenapi.z.object({
|
|
14173
|
+
partyId: zodOpenapi.z.uuid()
|
|
14174
|
+
});
|
|
14175
|
+
const arrayQuery = (schema) => zodOpenapi.z.preprocess((val) => {
|
|
14176
|
+
if (typeof val === "string") {
|
|
14177
|
+
return val.includes(",") ? val.split(",") : [val];
|
|
14178
|
+
}
|
|
14179
|
+
return val;
|
|
14180
|
+
}, schema.array()).optional();
|
|
14181
|
+
const querySchema = zodOpenapi.z.object({
|
|
14182
|
+
page: zodOpenapi.z.coerce.number().positive().default(1),
|
|
14183
|
+
limit: zodOpenapi.z.coerce.number().positive().default(20),
|
|
14184
|
+
sortColumn: zodOpenapi.z.string().default("updatedAt"),
|
|
14185
|
+
sortDirection: zodOpenapi.z.enum(["asc", "desc"]).default("desc"),
|
|
14186
|
+
[ALLOWED_ID_DOCUMENTS_FILTERS.PARTY_ID]: arrayQuery(zodOpenapi.z.uuid()),
|
|
14187
|
+
[ALLOWED_ID_DOCUMENTS_FILTERS.ISSUER]: arrayQuery(zodOpenapi.z.string()),
|
|
14188
|
+
search: zodOpenapi.z.string().optional()
|
|
14189
|
+
});
|
|
14190
|
+
const responseBodySchema$1 = zodOpenapi.z.object({
|
|
14191
|
+
message: zodOpenapi.z.string(),
|
|
14192
|
+
idDocumentsList: idDocumentsListOutputSchema
|
|
14193
|
+
});
|
|
14194
|
+
const getIdDocumentsListRoute = zodOpenapi.createRoute({
|
|
14195
|
+
method: "get",
|
|
14196
|
+
path: "/{partyId}/id-documents",
|
|
14197
|
+
summary: "List party ID documents",
|
|
14198
|
+
tags: ["Documents"],
|
|
14199
|
+
request: {
|
|
14200
|
+
params: paramsSchema$1,
|
|
14201
|
+
query: querySchema
|
|
14202
|
+
},
|
|
14203
|
+
responses: {
|
|
14204
|
+
200: {
|
|
14205
|
+
description: "ID documents list fetched",
|
|
14206
|
+
content: {
|
|
14207
|
+
"application/json": {
|
|
14208
|
+
schema: responseBodySchema$1
|
|
14209
|
+
}
|
|
14210
|
+
}
|
|
14211
|
+
},
|
|
14212
|
+
404: {
|
|
14213
|
+
description: "ID documents not found",
|
|
14214
|
+
content: {
|
|
14215
|
+
"application/json": {
|
|
14216
|
+
schema: zodOpenapi.z.object({ message: zodOpenapi.z.string() })
|
|
14217
|
+
}
|
|
14218
|
+
}
|
|
14219
|
+
},
|
|
14220
|
+
500: {
|
|
14221
|
+
description: "Internal server error",
|
|
14222
|
+
content: {
|
|
14223
|
+
"application/json": {
|
|
14224
|
+
schema: zodOpenapi.z.object({ message: zodOpenapi.z.string() })
|
|
14225
|
+
}
|
|
14226
|
+
}
|
|
14227
|
+
}
|
|
14228
|
+
}
|
|
14229
|
+
});
|
|
14230
|
+
new zodOpenapi.OpenAPIHono().openapi(
|
|
14231
|
+
getIdDocumentsListRoute,
|
|
14232
|
+
async (context) => {
|
|
14233
|
+
const { partyId } = context.req.valid("param");
|
|
14234
|
+
const { sortColumn, sortDirection, limit, page, ...filters } = context.req.valid("query");
|
|
14235
|
+
const { data: idDocumentsList, error } = await context.env.MASTER_DATA_MANAGEMENT_SERVICE.getIdDocumentsList({
|
|
14236
|
+
pagination: {
|
|
14237
|
+
page,
|
|
14238
|
+
limit,
|
|
14239
|
+
sort: {
|
|
14240
|
+
column: sortColumn,
|
|
14241
|
+
direction: sortDirection
|
|
14242
|
+
},
|
|
14243
|
+
filterIdDocumentPartyId: partyId,
|
|
14244
|
+
...filters
|
|
14245
|
+
}
|
|
14246
|
+
});
|
|
14247
|
+
if (!idDocumentsList || error) {
|
|
14248
|
+
return context.json({ message: "Could not list id documents" }, 404);
|
|
14249
|
+
}
|
|
14250
|
+
return context.json(
|
|
14251
|
+
{
|
|
14252
|
+
message: "ID documents listed successfully",
|
|
14253
|
+
idDocumentsList
|
|
14254
|
+
},
|
|
14255
|
+
200
|
|
14256
|
+
);
|
|
14257
|
+
}
|
|
14258
|
+
);
|
|
14259
|
+
|
|
14260
|
+
const algParams = {
|
|
14261
|
+
RSA: {
|
|
14262
|
+
name: "RSASSA-PKCS1-v1_5",
|
|
14263
|
+
hash: { name: "SHA-256" }
|
|
14264
|
+
},
|
|
14265
|
+
EC: {
|
|
14266
|
+
name: "ECDSA",
|
|
14267
|
+
namedCurve: "P-256"
|
|
14268
|
+
},
|
|
14269
|
+
HMAC: {
|
|
14270
|
+
name: "HMAC",
|
|
14271
|
+
hash: { name: "SHA-256" }
|
|
14272
|
+
}
|
|
14273
|
+
};
|
|
14274
|
+
const verifyPayloadSignature = async ({
|
|
14275
|
+
signature,
|
|
14276
|
+
data,
|
|
14277
|
+
publicKey,
|
|
14278
|
+
algorithm = "RSA"
|
|
14279
|
+
}) => {
|
|
14280
|
+
const binaryPublicKey = Uint8Array.from(
|
|
14281
|
+
atob(publicKey),
|
|
14282
|
+
(c) => c.charCodeAt(0)
|
|
14283
|
+
);
|
|
14284
|
+
const format = algorithm === "HMAC" ? "raw" : "spki";
|
|
14285
|
+
const importedPublicKey = await crypto.subtle.importKey(
|
|
14286
|
+
format,
|
|
14287
|
+
binaryPublicKey,
|
|
14288
|
+
algParams[algorithm],
|
|
14289
|
+
false,
|
|
14290
|
+
["verify"]
|
|
14291
|
+
);
|
|
14292
|
+
const encodedPayload = new TextEncoder().encode(data);
|
|
14293
|
+
const decodedSignature = Uint8Array.from(
|
|
14294
|
+
atob(signature),
|
|
14295
|
+
(c) => c.charCodeAt(0)
|
|
14296
|
+
);
|
|
14297
|
+
const isValid = await crypto.subtle.verify(
|
|
14298
|
+
algParams[algorithm],
|
|
14299
|
+
importedPublicKey,
|
|
14300
|
+
decodedSignature,
|
|
14301
|
+
encodedPayload
|
|
14302
|
+
);
|
|
14303
|
+
return isValid;
|
|
14304
|
+
};
|
|
14305
|
+
|
|
14306
|
+
const validateBearerScheme = (header) => {
|
|
14307
|
+
return header.startsWith("Bearer ") && header.length > 7 && !header.slice(7).includes(" ");
|
|
14308
|
+
};
|
|
14309
|
+
const extractBearerToken = (header) => {
|
|
14310
|
+
return header.slice(7).trim();
|
|
14311
|
+
};
|
|
14312
|
+
const validateBearerToken = (bearerToken) => {
|
|
14313
|
+
return zod.z.jwt().safeParse(bearerToken).success;
|
|
14314
|
+
};
|
|
14315
|
+
|
|
14316
|
+
const idempotency = () => {
|
|
14317
|
+
return factory.createMiddleware(async (context, next) => {
|
|
14318
|
+
if (!context.env.MIDDLEWARE_IDEMPOTENCY_DISABLED) {
|
|
14319
|
+
const idempotencyKeyHeader = context.req.header("x-idempotency-key");
|
|
14320
|
+
if (!idempotencyKeyHeader) {
|
|
14321
|
+
throw new httpException.HTTPException(401, {
|
|
14322
|
+
message: `The 'x-idempotency-key' header must exist and must have a value.`
|
|
14323
|
+
});
|
|
14324
|
+
}
|
|
14325
|
+
const existingIdempotencyRecord = await context.env.IDEMPOTENCY_KV.get(idempotencyKeyHeader);
|
|
14326
|
+
if (existingIdempotencyRecord) {
|
|
14327
|
+
throw new httpException.HTTPException(409, {
|
|
14328
|
+
message: "The identical request has already been processed. The idempotency key is not unique."
|
|
14329
|
+
});
|
|
14330
|
+
}
|
|
14331
|
+
await context.env.IDEMPOTENCY_KV.put(
|
|
14332
|
+
idempotencyKeyHeader,
|
|
14333
|
+
idempotencyKeyHeader,
|
|
14334
|
+
{
|
|
14335
|
+
expirationTtl: 60 * 60 * 24 * 3
|
|
14336
|
+
// 3 days
|
|
14337
|
+
}
|
|
14338
|
+
);
|
|
14339
|
+
context.set("idempotency", {
|
|
14340
|
+
key: idempotencyKeyHeader
|
|
14341
|
+
});
|
|
14342
|
+
}
|
|
14343
|
+
await next();
|
|
14344
|
+
});
|
|
14345
|
+
};
|
|
14346
|
+
|
|
14347
|
+
const jwt = () => {
|
|
14348
|
+
return factory.createMiddleware(async (context, next) => {
|
|
14349
|
+
if (!context.env.MIDDLEWARE_JWT_DISABLED) {
|
|
14350
|
+
const authorizationHeader = context.req.header("authorization");
|
|
14351
|
+
if (!authorizationHeader) {
|
|
14352
|
+
throw new httpException.HTTPException(401, {
|
|
14353
|
+
message: `The 'authorization' header must exist and must have a value.`
|
|
14354
|
+
});
|
|
14355
|
+
}
|
|
14356
|
+
if (!validateBearerScheme(authorizationHeader)) {
|
|
14357
|
+
throw new httpException.HTTPException(401, {
|
|
14358
|
+
message: `The 'authorization' header value must use the Bearer scheme.`
|
|
14359
|
+
});
|
|
14360
|
+
}
|
|
14361
|
+
const bearerToken = extractBearerToken(authorizationHeader);
|
|
14362
|
+
if (!validateBearerToken(bearerToken)) {
|
|
14363
|
+
throw new httpException.HTTPException(401, {
|
|
14364
|
+
message: `The Bearer token in the 'authorization' header value must be a JWT.`
|
|
14365
|
+
});
|
|
14366
|
+
}
|
|
14367
|
+
const { data, error } = await context.env.AUTH_SERVICE.verifyAccessToken({
|
|
14368
|
+
accessToken: bearerToken
|
|
14369
|
+
});
|
|
14370
|
+
if (!data || error) {
|
|
14371
|
+
throw new httpException.HTTPException(401, {
|
|
14372
|
+
message: "The JWT must contain valid user information."
|
|
14373
|
+
});
|
|
14374
|
+
}
|
|
14375
|
+
const rawUserMetaDataString = data.payload.user.rawUserMetaData;
|
|
14376
|
+
const rawUserMetaData = rawUserMetaDataString ? JSON.parse(rawUserMetaDataString) : null;
|
|
14377
|
+
const identityId = rawUserMetaData.organizationId ?? rawUserMetaData.exchangeOfficeId;
|
|
14378
|
+
if (!identityId) {
|
|
14379
|
+
throw new httpException.HTTPException(422, {
|
|
14380
|
+
message: "User data integrity check failed."
|
|
14381
|
+
});
|
|
14382
|
+
}
|
|
14383
|
+
context.set("identity", {
|
|
14384
|
+
...data.payload,
|
|
14385
|
+
user: {
|
|
14386
|
+
...data.payload.user,
|
|
14387
|
+
organizationId: rawUserMetaData.organizationId,
|
|
14388
|
+
exchangeOfficeId: rawUserMetaData.exchangeOfficeId
|
|
14389
|
+
}
|
|
14390
|
+
});
|
|
14391
|
+
}
|
|
14392
|
+
await next();
|
|
14393
|
+
});
|
|
14394
|
+
};
|
|
14395
|
+
|
|
14396
|
+
const signature = () => {
|
|
14397
|
+
return factory.createMiddleware(async (context, next) => {
|
|
14398
|
+
if (!context.env.MIDDLEWARE_SIGNATURE_DISABLED) {
|
|
14399
|
+
const signatureHeader = context.req.header("x-signature");
|
|
14400
|
+
if (!signatureHeader) {
|
|
14401
|
+
throw new httpException.HTTPException(401, {
|
|
14402
|
+
message: `The 'x-signature' header must exist and must have a value.`
|
|
14403
|
+
});
|
|
14404
|
+
}
|
|
14405
|
+
const signatureKeyHeader = context.req.header("X-Signature-Key");
|
|
14406
|
+
if (!signatureKeyHeader) {
|
|
14407
|
+
throw new httpException.HTTPException(401, {
|
|
14408
|
+
message: `The 'x-signature-key' header must exist and must have a value.`
|
|
14409
|
+
});
|
|
14410
|
+
}
|
|
14411
|
+
const payload = JSON.stringify(await context.req.json().catch(() => null));
|
|
14412
|
+
const identityContext = context.get("identity");
|
|
14413
|
+
const organizationId = identityContext.user.organizationId;
|
|
14414
|
+
const exchangeOfficeId = identityContext.user.exchangeOfficeId;
|
|
14415
|
+
const identityId = organizationId ?? exchangeOfficeId;
|
|
14416
|
+
if (!identityId) {
|
|
14417
|
+
throw new httpException.HTTPException(401, {
|
|
14418
|
+
message: "Failed to retrieve request identity ID."
|
|
14419
|
+
});
|
|
14420
|
+
}
|
|
14421
|
+
const { data: organization, error } = await context.env.ORGANIZATION_SERVICE.getOrganization({
|
|
14422
|
+
organizationId: identityId
|
|
14423
|
+
});
|
|
14424
|
+
if (!organization || error) {
|
|
14425
|
+
throw new httpException.HTTPException(404, {
|
|
14426
|
+
message: "Failed to retrieve organization."
|
|
14427
|
+
});
|
|
14428
|
+
}
|
|
14429
|
+
const signatureKey = organization.signatureKeys.filter(
|
|
14430
|
+
(signatureKey2) => signatureKey2.name === signatureKeyHeader
|
|
14431
|
+
)[0];
|
|
14432
|
+
if (!signatureKey) {
|
|
14433
|
+
throw new httpException.HTTPException(404, {
|
|
14434
|
+
message: "Signature key not found."
|
|
14435
|
+
});
|
|
14436
|
+
}
|
|
14437
|
+
const isVerified = await verifyPayloadSignature({
|
|
14438
|
+
signature: signatureHeader,
|
|
14439
|
+
publicKey: signatureKey.publicKey,
|
|
14440
|
+
data: payload
|
|
14441
|
+
});
|
|
14442
|
+
if (!isVerified) {
|
|
14443
|
+
throw new httpException.HTTPException(401, {
|
|
14444
|
+
message: "Invalid signature key or signature."
|
|
14445
|
+
});
|
|
14446
|
+
}
|
|
14447
|
+
}
|
|
14448
|
+
await next();
|
|
14449
|
+
});
|
|
14450
|
+
};
|
|
14451
|
+
|
|
14452
|
+
const paramsSchema = zodOpenapi.z.object({
|
|
14453
|
+
id: zodOpenapi.z.uuid()
|
|
13786
14454
|
});
|
|
13787
14455
|
const idDocumentUpdateInputSchema = zodOpenapi.z.object({
|
|
13788
14456
|
partyId: zodOpenapi.z.uuid().optional(),
|
|
@@ -13797,11 +14465,89 @@ const idDocumentUpdateInputSchema = zodOpenapi.z.object({
|
|
|
13797
14465
|
backImageUri: zodOpenapi.z.string().optional(),
|
|
13798
14466
|
idDocStatus: zodOpenapi.z.enum(IdDocStatusZod).optional()
|
|
13799
14467
|
});
|
|
13800
|
-
const
|
|
13801
|
-
|
|
13802
|
-
|
|
13803
|
-
|
|
14468
|
+
const responseBodySchema = zodOpenapi.z.object({
|
|
14469
|
+
message: zodOpenapi.z.string(),
|
|
14470
|
+
idDocument: idDocumentOutputSchema
|
|
14471
|
+
});
|
|
14472
|
+
const updateIdDocumentRoute = zodOpenapi.createRoute({
|
|
14473
|
+
method: "put",
|
|
14474
|
+
path: "/{partyId}/id-documents/{id}",
|
|
14475
|
+
summary: "Update party document",
|
|
14476
|
+
tags: ["Documents"],
|
|
14477
|
+
middleware: [jwt, signature(), idempotency()],
|
|
14478
|
+
security: [{ JwtAuth: [] }],
|
|
14479
|
+
request: {
|
|
14480
|
+
headers: zodOpenapi.z.object({
|
|
14481
|
+
"X-Idempotency-Key": XIdempotencyKeyHeaderSchema,
|
|
14482
|
+
"X-Signature": XSignatureHeaderSchema,
|
|
14483
|
+
"X-Signature-Key": XSignatureKeyHeaderSchema
|
|
14484
|
+
}),
|
|
14485
|
+
params: paramsSchema,
|
|
14486
|
+
body: {
|
|
14487
|
+
content: {
|
|
14488
|
+
"application/json": {
|
|
14489
|
+
schema: idDocumentUpdateInputSchema
|
|
14490
|
+
}
|
|
14491
|
+
},
|
|
14492
|
+
required: true
|
|
14493
|
+
}
|
|
14494
|
+
},
|
|
14495
|
+
responses: {
|
|
14496
|
+
200: {
|
|
14497
|
+
description: "ID document updated successfully",
|
|
14498
|
+
content: {
|
|
14499
|
+
"application/json": {
|
|
14500
|
+
schema: responseBodySchema
|
|
14501
|
+
}
|
|
14502
|
+
}
|
|
14503
|
+
},
|
|
14504
|
+
404: {
|
|
14505
|
+
description: "ID document not found",
|
|
14506
|
+
content: {
|
|
14507
|
+
"application/json": {
|
|
14508
|
+
schema: zodOpenapi.z.object({ message: zodOpenapi.z.string() })
|
|
14509
|
+
}
|
|
14510
|
+
}
|
|
14511
|
+
},
|
|
14512
|
+
500: {
|
|
14513
|
+
description: "Internal server error",
|
|
14514
|
+
content: {
|
|
14515
|
+
"application/json": {
|
|
14516
|
+
schema: zodOpenapi.z.object({ message: zodOpenapi.z.string() })
|
|
14517
|
+
}
|
|
14518
|
+
}
|
|
14519
|
+
}
|
|
14520
|
+
}
|
|
13804
14521
|
});
|
|
14522
|
+
new zodOpenapi.OpenAPIHono().openapi(
|
|
14523
|
+
updateIdDocumentRoute,
|
|
14524
|
+
async (context) => {
|
|
14525
|
+
const { id } = context.req.valid("param");
|
|
14526
|
+
const patch = context.req.valid("json");
|
|
14527
|
+
const { data: existingDocument, error: fetchError } = await context.env.MASTER_DATA_MANAGEMENT_SERVICE.getIdDocument({ id });
|
|
14528
|
+
if (!existingDocument || fetchError) {
|
|
14529
|
+
return context.json({ message: "ID document not found" }, 404);
|
|
14530
|
+
}
|
|
14531
|
+
const fullIdDocument = {
|
|
14532
|
+
...existingDocument,
|
|
14533
|
+
...patch,
|
|
14534
|
+
id
|
|
14535
|
+
};
|
|
14536
|
+
const { data: updatedIdDocument, error: updateError } = await context.env.MASTER_DATA_MANAGEMENT_SERVICE.updateIdDocument({
|
|
14537
|
+
idDocument: fullIdDocument
|
|
14538
|
+
});
|
|
14539
|
+
if (!updatedIdDocument || updateError) {
|
|
14540
|
+
return context.json({ message: "Could not update ID document" }, 500);
|
|
14541
|
+
}
|
|
14542
|
+
return context.json(
|
|
14543
|
+
{
|
|
14544
|
+
message: "ID document updated successfully",
|
|
14545
|
+
idDocument: updatedIdDocument
|
|
14546
|
+
},
|
|
14547
|
+
200
|
|
14548
|
+
);
|
|
14549
|
+
}
|
|
14550
|
+
);
|
|
13805
14551
|
|
|
13806
14552
|
const messageResponseSchema = zodOpenapi.z.object({
|
|
13807
14553
|
message: zodOpenapi.z.string()
|
|
@@ -13832,6 +14578,6 @@ exports.messageResponseSchema = messageResponseSchema;
|
|
|
13832
14578
|
exports.partiesOutputDataSchema = partiesOutputDataSchema;
|
|
13833
14579
|
exports.partyCreateOutputSchema = partyCreateOutputSchema;
|
|
13834
14580
|
exports.partyOutputSchema = partyOutputSchema;
|
|
13835
|
-
exports.partySchema = partySchema;
|
|
14581
|
+
exports.partySchema = partySchema$1;
|
|
13836
14582
|
exports.partyUpdateInputSchema = partyUpdateInputSchema;
|
|
13837
14583
|
exports.updatePartyOuputSchema = updatePartyOuputSchema;
|