@dalmore/api-contracts 0.0.0-dev.2dc8e92 → 0.0.0-dev.4bb6b7a
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/README.md +23 -19
- package/common/types/account-contact.types.ts +2 -1
- package/common/types/account-manager.types.ts +3 -7
- package/common/types/account-setting.types.ts +65 -0
- package/common/types/account.types.ts +1 -0
- package/common/types/activity.types.ts +1 -1
- package/common/types/api-key-logs.types.ts +1 -1
- package/common/types/asset.types.ts +14 -14
- package/common/types/auth.types.ts +7 -18
- package/common/types/bonus-tier.types.ts +33 -0
- package/common/types/cart.types.ts +4 -1
- package/common/types/common.types.ts +38 -6
- package/common/types/contact-us.types.ts +6 -2
- package/common/types/covered-person.types.ts +2 -1
- package/common/types/dashboard.types.ts +2 -9
- package/common/types/disbursements.types.ts +119 -3
- package/common/types/escrow-account.types.ts +3 -3
- package/common/types/file.types.ts +20 -4
- package/common/types/i-will-do-it-later.types.ts +68 -0
- package/common/types/index.ts +2 -0
- package/common/types/individuals.types.ts +5 -17
- package/common/types/investor-account.types.ts +2 -1
- package/common/types/invite.types.ts +27 -1
- package/common/types/issuer-offering.types.ts +113 -30
- package/common/types/issuer-payment-method.types.ts +41 -0
- package/common/types/issuer.types.ts +9 -0
- package/common/types/legal-entity.types.ts +3 -2
- package/common/types/mail-template.types.ts +34 -0
- package/common/types/note.types.ts +1 -1
- package/common/types/notification.types.ts +525 -29
- package/common/types/offering.types.ts +106 -20
- package/common/types/site-settings.types.ts +2 -1
- package/common/types/site.types.ts +2 -9
- package/common/types/{trade-line-item.type.ts → trade-line-item.types.ts} +2 -9
- package/common/types/trade.types.ts +118 -2
- package/common/types/transaction.types.ts +12 -1
- package/common/types/trusted-contact.types.ts +7 -7
- package/common/types/user.types.ts +17 -33
- package/common/types/webhook.types.ts +142 -0
- package/contracts/{investors → clients}/cart/index.ts +11 -6
- package/contracts/clients/index.ts +10 -0
- package/contracts/{investors → clients}/issuer-payment-methods/index.ts +5 -2
- package/contracts/{compliance → clients}/payment-methods/index.ts +40 -12
- package/contracts/{investors → clients}/trade-line-items/index.ts +19 -28
- package/contracts/clients/trades/index.ts +65 -1
- package/contracts/{investors → clients}/transactions/index.ts +3 -3
- package/index.ts +10 -0
- package/package.json +23 -32
- package/contracts/compliance/account-contacts/index.ts +0 -82
- package/contracts/compliance/account-managers/index.ts +0 -142
- package/contracts/compliance/accounts/index.ts +0 -187
- package/contracts/compliance/activities/index.ts +0 -55
- package/contracts/compliance/aic/index.ts +0 -60
- package/contracts/compliance/api-keys/index.ts +0 -91
- package/contracts/compliance/assets/index.ts +0 -122
- package/contracts/compliance/auth/index.ts +0 -134
- package/contracts/compliance/batch-jobs/index.ts +0 -62
- package/contracts/compliance/bonus-tiers/index.ts +0 -55
- package/contracts/compliance/checklist/index.ts +0 -87
- package/contracts/compliance/checklist-items/index.ts +0 -86
- package/contracts/compliance/covered-persons/index.ts +0 -97
- package/contracts/compliance/dashboard/index.ts +0 -111
- package/contracts/compliance/data-records/index.ts +0 -116
- package/contracts/compliance/data-rooms/index.ts +0 -113
- package/contracts/compliance/default-theme-configs/index.ts +0 -95
- package/contracts/compliance/disbursement/index.ts +0 -165
- package/contracts/compliance/disbursement-approval-users/index.ts +0 -84
- package/contracts/compliance/disbursement-transactions/index.ts +0 -37
- package/contracts/compliance/domain-filters/index.ts +0 -117
- package/contracts/compliance/email-themes/index.ts +0 -284
- package/contracts/compliance/escrow-accounts/index.ts +0 -85
- package/contracts/compliance/exchange-api-keys/index.ts +0 -129
- package/contracts/compliance/exchange-imports/index.ts +0 -137
- package/contracts/compliance/files/index.ts +0 -267
- package/contracts/compliance/files-public/index.ts +0 -188
- package/contracts/compliance/health/index.ts +0 -26
- package/contracts/compliance/index.ts +0 -147
- package/contracts/compliance/individuals/index.ts +0 -57
- package/contracts/compliance/investor-accounts/index.ts +0 -141
- package/contracts/compliance/invites/index.ts +0 -137
- package/contracts/compliance/issuer-bank-accounts/index.ts +0 -81
- package/contracts/compliance/issuer-payment-methods/index.ts +0 -81
- package/contracts/compliance/issuers/index.ts +0 -97
- package/contracts/compliance/job-items/index.ts +0 -58
- package/contracts/compliance/jobs/index.ts +0 -59
- package/contracts/compliance/kyb/index.ts +0 -54
- package/contracts/compliance/kyc/index.ts +0 -77
- package/contracts/compliance/legal-entities/index.ts +0 -57
- package/contracts/compliance/login-histories/index.ts +0 -37
- package/contracts/compliance/notes/index.ts +0 -69
- package/contracts/compliance/notion-databases/index.ts +0 -107
- package/contracts/compliance/notion-pages/index.ts +0 -105
- package/contracts/compliance/offering-reports/index.ts +0 -149
- package/contracts/compliance/offerings/index.ts +0 -233
- package/contracts/compliance/pages/index.ts +0 -178
- package/contracts/compliance/rejection-reasons/index.ts +0 -32
- package/contracts/compliance/review/index.ts +0 -169
- package/contracts/compliance/roles/index.ts +0 -34
- package/contracts/compliance/secondary-customers/index.ts +0 -77
- package/contracts/compliance/secondary-orders/index.ts +0 -60
- package/contracts/compliance/secondary-trades/index.ts +0 -100
- package/contracts/compliance/secure-requests/index.ts +0 -54
- package/contracts/compliance/signer/index.ts +0 -369
- package/contracts/compliance/site-links/index.ts +0 -128
- package/contracts/compliance/site-settings/index.ts +0 -669
- package/contracts/compliance/sites/index.ts +0 -56
- package/contracts/compliance/state-machine/index.ts +0 -94
- package/contracts/compliance/tasks/index.ts +0 -91
- package/contracts/compliance/third-parties/index.ts +0 -52
- package/contracts/compliance/trade-line-items/index.ts +0 -59
- package/contracts/compliance/trades/index.ts +0 -230
- package/contracts/compliance/transactions/index.ts +0 -161
- package/contracts/compliance/user-manuals/index.ts +0 -271
- package/contracts/compliance/user-settings/index.ts +0 -189
- package/contracts/compliance/users/index.ts +0 -200
- package/contracts/compliance/webhooks/index.ts +0 -41
- package/contracts/compliance-apikey/accounts/index.ts +0 -58
- package/contracts/compliance-apikey/index.ts +0 -14
- package/contracts/index.ts +0 -6
- package/contracts/investors/account-contacts/index.ts +0 -58
- package/contracts/investors/aic/index.ts +0 -59
- package/contracts/investors/assets/index.ts +0 -61
- package/contracts/investors/auth/index.ts +0 -116
- package/contracts/investors/bonus-tiers/index.ts +0 -37
- package/contracts/investors/contact-us/index.ts +0 -48
- package/contracts/investors/data-records/index.ts +0 -113
- package/contracts/investors/data-rooms/index.ts +0 -96
- package/contracts/investors/files/index.ts +0 -167
- package/contracts/investors/files-public/index.ts +0 -185
- package/contracts/investors/index.ts +0 -72
- package/contracts/investors/individuals/index.ts +0 -99
- package/contracts/investors/investor-accounts/index.ts +0 -110
- package/contracts/investors/issuers/index.ts +0 -30
- package/contracts/investors/legal-entities/index.ts +0 -93
- package/contracts/investors/notes/index.ts +0 -69
- package/contracts/investors/offerings/index.ts +0 -93
- package/contracts/investors/pages/index.ts +0 -88
- package/contracts/investors/payment-methods/index.ts +0 -149
- package/contracts/investors/portfolios/index.ts +0 -53
- package/contracts/investors/sites/index.ts +0 -96
- package/contracts/investors/tasks/index.ts +0 -111
- package/contracts/investors/trades/index.ts +0 -114
- package/contracts/investors/trusted-contacts/index.ts +0 -93
- package/contracts/investors/user-manuals/index.ts +0 -62
- package/contracts/investors/user-settings/index.ts +0 -170
- package/contracts/investors/users/index.ts +0 -45
- package/contracts/investors/webhooks/index.ts +0 -30
- package/contracts/issuers/account-contacts/index.ts +0 -76
- package/contracts/issuers/account-integrations/index.ts +0 -97
- package/contracts/issuers/accounts/index.ts +0 -97
- package/contracts/issuers/activities/index.ts +0 -54
- package/contracts/issuers/aic/index.ts +0 -39
- package/contracts/issuers/api-key-logs/index.ts +0 -53
- package/contracts/issuers/api-keys/index.ts +0 -93
- package/contracts/issuers/assets/index.ts +0 -122
- package/contracts/issuers/auth/index.ts +0 -152
- package/contracts/issuers/bonus-tiers/index.ts +0 -55
- package/contracts/issuers/contact-us/index.ts +0 -48
- package/contracts/issuers/covered-persons/index.ts +0 -136
- package/contracts/issuers/dashboard/index.ts +0 -72
- package/contracts/issuers/data-records/index.ts +0 -257
- package/contracts/issuers/data-rooms/index.ts +0 -134
- package/contracts/issuers/disbursement-approval-users/index.ts +0 -82
- package/contracts/issuers/disbursement-transactions/index.ts +0 -53
- package/contracts/issuers/disbursements/index.ts +0 -153
- package/contracts/issuers/email-themes/index.ts +0 -242
- package/contracts/issuers/escrow-accounts/index.ts +0 -81
- package/contracts/issuers/exchange-api-keys/index.ts +0 -144
- package/contracts/issuers/files/index.ts +0 -166
- package/contracts/issuers/files-public/index.ts +0 -166
- package/contracts/issuers/health/index.ts +0 -24
- package/contracts/issuers/index.ts +0 -112
- package/contracts/issuers/investor-accounts/index.ts +0 -148
- package/contracts/issuers/invites/index.ts +0 -129
- package/contracts/issuers/issuer/index.ts +0 -94
- package/contracts/issuers/issuer-bank-accounts/index.ts +0 -81
- package/contracts/issuers/issuer-payment-methods/index.ts +0 -136
- package/contracts/issuers/kyc/index.ts +0 -38
- package/contracts/issuers/login-histories/index.ts +0 -51
- package/contracts/issuers/notes/index.ts +0 -69
- package/contracts/issuers/offerings/index.ts +0 -206
- package/contracts/issuers/pages/index.ts +0 -138
- package/contracts/issuers/payment-methods/index.ts +0 -61
- package/contracts/issuers/portfolios/index.ts +0 -36
- package/contracts/issuers/rejection-reasons/index.ts +0 -32
- package/contracts/issuers/review/index.ts +0 -63
- package/contracts/issuers/secondary-customers/index.ts +0 -55
- package/contracts/issuers/secondary-orders/index.ts +0 -57
- package/contracts/issuers/secondary-trades/index.ts +0 -57
- package/contracts/issuers/secure-requests/index.ts +0 -34
- package/contracts/issuers/site-links/index.ts +0 -116
- package/contracts/issuers/site-settings/index.ts +0 -585
- package/contracts/issuers/sites/index.ts +0 -32
- package/contracts/issuers/tasks/index.ts +0 -111
- package/contracts/issuers/trades/index.ts +0 -132
- package/contracts/issuers/transactions/index.ts +0 -158
- package/contracts/issuers/user-manuals/index.ts +0 -62
- package/contracts/issuers/user-settings/index.ts +0 -170
- package/contracts/issuers/users/index.ts +0 -126
- package/contracts/secondaries/accounts/index.ts +0 -58
- package/contracts/secondaries/index.ts +0 -23
- package/contracts/secondaries/secondary-customers/index.ts +0 -55
- package/contracts/secondaries/secondary-issuers/index.ts +0 -94
- package/contracts/secondaries/secondary-orders/index.ts +0 -56
- package/contracts/secondaries/secondary-securities/index.ts +0 -95
- package/contracts/secondaries/secondary-trades/index.ts +0 -56
|
@@ -15,6 +15,9 @@ import {
|
|
|
15
15
|
SortBy,
|
|
16
16
|
OfferingVersioningType,
|
|
17
17
|
OfferingOnboardingStatus,
|
|
18
|
+
AssetType,
|
|
19
|
+
DurationType,
|
|
20
|
+
StringToBooleanSchema,
|
|
18
21
|
} from './common.types';
|
|
19
22
|
import { IBaseEntity } from './entity.types';
|
|
20
23
|
import { fileIdSchema, FileZod } from './file.types';
|
|
@@ -24,6 +27,7 @@ import {
|
|
|
24
27
|
InvestorsOfferingsIncludeQuery,
|
|
25
28
|
} from './investors-offering.types';
|
|
26
29
|
import { OfferingStatus } from './issuer-offering.types';
|
|
30
|
+
import { postAssetRefinement, AssetTemplateType } from './asset.types';
|
|
27
31
|
|
|
28
32
|
export enum OfferingFeeType {
|
|
29
33
|
FIXED = 'FIXED',
|
|
@@ -115,7 +119,7 @@ export const IPaginatedOffering = z.object({
|
|
|
115
119
|
});
|
|
116
120
|
export type IPaginatedOffering = z.infer<typeof IPaginatedOffering>;
|
|
117
121
|
|
|
118
|
-
export const
|
|
122
|
+
export const PatchOfferingBase = z.object({
|
|
119
123
|
name: z.string().optional(),
|
|
120
124
|
description: z.string().nullable().optional(),
|
|
121
125
|
tid: z.string().optional(),
|
|
@@ -148,8 +152,8 @@ export const PatchOffering = z.object({
|
|
|
148
152
|
.openapi({ example: 5000 })
|
|
149
153
|
.optional()
|
|
150
154
|
.nullable(),
|
|
151
|
-
startAt: dateSchema.optional(),
|
|
152
|
-
endAt: dateSchema.optional(),
|
|
155
|
+
startAt: dateSchema.optional().openapi({ example: '10/20/2024' }),
|
|
156
|
+
endAt: dateSchema.optional().openapi({ example: '10/27/2024' }),
|
|
153
157
|
platform: z.string().optional(),
|
|
154
158
|
coverArtId: z
|
|
155
159
|
.lazy(() => fileIdSchema)
|
|
@@ -175,16 +179,108 @@ export const PatchOffering = z.object({
|
|
|
175
179
|
showTotalRaised: z.boolean().optional(),
|
|
176
180
|
issuerId: issuerIdSchema.optional(),
|
|
177
181
|
});
|
|
178
|
-
|
|
182
|
+
export const PatchOffering = PatchOfferingBase.merge(
|
|
183
|
+
z.object({
|
|
184
|
+
assetName: z
|
|
185
|
+
.string()
|
|
186
|
+
.min(2)
|
|
187
|
+
.max(50)
|
|
188
|
+
.optional()
|
|
189
|
+
.openapi({ example: 'Asset name' }),
|
|
190
|
+
assetType: z
|
|
191
|
+
.nativeEnum(AssetType)
|
|
192
|
+
.optional()
|
|
193
|
+
.openapi({ example: AssetType.STOCK }),
|
|
194
|
+
pricePerUnit: z
|
|
195
|
+
.number()
|
|
196
|
+
.min(0.01)
|
|
197
|
+
.max(10000000000)
|
|
198
|
+
.nullable()
|
|
199
|
+
.optional()
|
|
200
|
+
.openapi({ example: 2000 }),
|
|
201
|
+
totalUnits: z
|
|
202
|
+
.number()
|
|
203
|
+
.min(1)
|
|
204
|
+
.max(10000000000)
|
|
205
|
+
.nullable()
|
|
206
|
+
.optional()
|
|
207
|
+
.openapi({ example: 5200 }),
|
|
208
|
+
yield: z
|
|
209
|
+
.number()
|
|
210
|
+
.min(0.01)
|
|
211
|
+
.max(10000000000)
|
|
212
|
+
.nullable()
|
|
213
|
+
.optional()
|
|
214
|
+
.openapi({ example: 1200 }),
|
|
215
|
+
duration: z
|
|
216
|
+
.number()
|
|
217
|
+
.min(1)
|
|
218
|
+
.max(1000)
|
|
219
|
+
.nullable()
|
|
220
|
+
.optional()
|
|
221
|
+
.openapi({ example: 1 }),
|
|
222
|
+
durationType: z
|
|
223
|
+
.nativeEnum(DurationType)
|
|
224
|
+
.nullable()
|
|
225
|
+
.optional()
|
|
226
|
+
.openapi({ example: DurationType.DAY }),
|
|
227
|
+
template: z
|
|
228
|
+
.nativeEnum(AssetTemplateType)
|
|
229
|
+
.default(AssetTemplateType.STANDARD)
|
|
230
|
+
.openapi({ example: AssetTemplateType.STANDARD })
|
|
231
|
+
.nullable()
|
|
232
|
+
.optional(),
|
|
233
|
+
tiers: z.array(z.number().positive()).nullable().optional(),
|
|
234
|
+
enableBonus: z.boolean().optional(),
|
|
235
|
+
}),
|
|
236
|
+
);
|
|
179
237
|
export type PatchOffering = z.infer<typeof PatchOffering>;
|
|
180
238
|
|
|
181
|
-
export const PostComplianceOffering =
|
|
239
|
+
export const PostComplianceOffering = PatchOfferingBase.merge(
|
|
182
240
|
z.object({
|
|
183
241
|
accountId: accountIdSchema,
|
|
242
|
+
managedBy: z.nativeEnum(ManagedByType).optional(),
|
|
243
|
+
assetName: z.string().min(2).max(50).openapi({ example: 'Asset name' }),
|
|
244
|
+
assetType: z.nativeEnum(AssetType).openapi({ example: AssetType.STOCK }),
|
|
245
|
+
pricePerUnit: z
|
|
246
|
+
.number()
|
|
247
|
+
.min(0.01)
|
|
248
|
+
.max(10000000000)
|
|
249
|
+
.nullable()
|
|
250
|
+
.openapi({ example: 2000 }),
|
|
251
|
+
totalUnits: z
|
|
252
|
+
.number()
|
|
253
|
+
.min(1)
|
|
254
|
+
.max(10000000000)
|
|
255
|
+
.nullable()
|
|
256
|
+
.openapi({ example: 5200 }),
|
|
257
|
+
yield: z
|
|
258
|
+
.number()
|
|
259
|
+
.min(0.01)
|
|
260
|
+
.max(10000000000)
|
|
261
|
+
.nullable()
|
|
262
|
+
.optional()
|
|
263
|
+
.openapi({ example: 1200 }),
|
|
264
|
+
duration: z
|
|
265
|
+
.number()
|
|
266
|
+
.min(1)
|
|
267
|
+
.max(1000)
|
|
268
|
+
.nullable()
|
|
269
|
+
.optional()
|
|
270
|
+
.openapi({ example: 1 }),
|
|
271
|
+
durationType: z
|
|
272
|
+
.nativeEnum(DurationType)
|
|
273
|
+
.nullable()
|
|
274
|
+
.optional()
|
|
275
|
+
.openapi({ example: DurationType.DAY }),
|
|
276
|
+
template: z
|
|
277
|
+
.nativeEnum(AssetTemplateType)
|
|
278
|
+
.default(AssetTemplateType.STANDARD)
|
|
279
|
+
.openapi({ example: AssetTemplateType.STANDARD }),
|
|
280
|
+
tiers: z.array(z.number().positive()).nullable().optional(),
|
|
281
|
+
enableBonus: z.boolean().default(false).optional(),
|
|
184
282
|
}),
|
|
185
|
-
).
|
|
186
|
-
managedBy: z.nativeEnum(ManagedByType).optional(),
|
|
187
|
-
});
|
|
283
|
+
).superRefine(postAssetRefinement);
|
|
188
284
|
export type PostComplianceOffering = z.infer<typeof PostComplianceOffering>;
|
|
189
285
|
|
|
190
286
|
export const offeringsInclude = z.enum([
|
|
@@ -251,15 +347,7 @@ export const OfferingFiltersZod = z.object({
|
|
|
251
347
|
issuerId: z.lazy(() => issuerIdSchema).optional(),
|
|
252
348
|
type: z.nativeEnum(OfferingType).optional(),
|
|
253
349
|
status: z.nativeEnum(ComplianceReview).optional(),
|
|
254
|
-
enabled:
|
|
255
|
-
(val) =>
|
|
256
|
-
val === 'true' || val === '1'
|
|
257
|
-
? true
|
|
258
|
-
: val === 'false' || val === '0'
|
|
259
|
-
? false
|
|
260
|
-
: val,
|
|
261
|
-
z.boolean().optional(),
|
|
262
|
-
),
|
|
350
|
+
enabled: StringToBooleanSchema.optional(),
|
|
263
351
|
managedBy: z.nativeEnum(ManagedByType).optional(),
|
|
264
352
|
versioningType: z.nativeEnum(OfferingVersioningType).optional(),
|
|
265
353
|
combinedStatus: z.nativeEnum(OfferingStatus).optional(),
|
|
@@ -546,11 +634,9 @@ export type PaginatedPendingOfferingSummaryResponse = z.infer<
|
|
|
546
634
|
>;
|
|
547
635
|
|
|
548
636
|
export type OfferingUpdateFields = {
|
|
549
|
-
platform?: string;
|
|
550
|
-
platformSettings?: string | null;
|
|
551
637
|
managedBy?: ManagedByType | null;
|
|
552
|
-
enabled?: boolean;
|
|
553
638
|
showTotalRaised?: boolean;
|
|
639
|
+
enabled?: boolean;
|
|
554
640
|
};
|
|
555
641
|
|
|
556
642
|
export const ReviewOfferingOnboarding = z.object({
|
|
@@ -3,6 +3,7 @@ import { z } from 'zod';
|
|
|
3
3
|
import { fileIdSchema } from './file.types';
|
|
4
4
|
import {
|
|
5
5
|
AccountZod,
|
|
6
|
+
EmailSchema,
|
|
6
7
|
HexCodeColorSchema,
|
|
7
8
|
IPaginationMeta,
|
|
8
9
|
SubdomainSchema,
|
|
@@ -462,7 +463,7 @@ export const GetSenderEmailZod = z.object({
|
|
|
462
463
|
export type GetSenderEmailZod = z.infer<typeof GetSenderEmailZod>;
|
|
463
464
|
|
|
464
465
|
export const PatchSenderEmailZod = z.object({
|
|
465
|
-
senderEmail:
|
|
466
|
+
senderEmail: EmailSchema,
|
|
466
467
|
});
|
|
467
468
|
export type PatchSenderEmailZod = z.infer<typeof PatchSenderEmailZod>;
|
|
468
469
|
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
AccountStatus,
|
|
6
6
|
AccountZod,
|
|
7
7
|
IPaginationMeta,
|
|
8
|
+
StringToBooleanSchema,
|
|
8
9
|
UrlSchema,
|
|
9
10
|
} from './common.types';
|
|
10
11
|
import { accountIdSchema } from './account.types';
|
|
@@ -73,15 +74,7 @@ export const SitesParamSchema = z.object({
|
|
|
73
74
|
export const SitesFiltersZod = z.object({
|
|
74
75
|
url: z.string().optional(),
|
|
75
76
|
accountId: accountIdSchema.optional(),
|
|
76
|
-
enabled:
|
|
77
|
-
(val) =>
|
|
78
|
-
val === 'true' || val === '1'
|
|
79
|
-
? true
|
|
80
|
-
: val === 'false' || val === '0'
|
|
81
|
-
? false
|
|
82
|
-
: val,
|
|
83
|
-
z.boolean().optional(),
|
|
84
|
-
),
|
|
77
|
+
enabled: StringToBooleanSchema.optional(),
|
|
85
78
|
});
|
|
86
79
|
|
|
87
80
|
const sitesInclude = z.enum(['account']);
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
IPaginationMeta,
|
|
9
9
|
OfferingType,
|
|
10
10
|
SignatureStatus,
|
|
11
|
+
StringToBooleanSchema,
|
|
11
12
|
} from './common.types';
|
|
12
13
|
import { fileIdSchema } from './file.types';
|
|
13
14
|
import { accountIdSchema } from './account.types';
|
|
@@ -107,15 +108,7 @@ export type TradeLineItemQuery = z.infer<typeof TradeLineItemQuery>;
|
|
|
107
108
|
|
|
108
109
|
export const TradeLineItemFiltersQuery = z.object({
|
|
109
110
|
accountId: accountIdSchema.optional(),
|
|
110
|
-
hasSubdoc:
|
|
111
|
-
(val) =>
|
|
112
|
-
val === 'true' || val === '1'
|
|
113
|
-
? true
|
|
114
|
-
: val === 'false' || val === '0'
|
|
115
|
-
? false
|
|
116
|
-
: val,
|
|
117
|
-
z.boolean().optional(),
|
|
118
|
-
),
|
|
111
|
+
hasSubdoc: StringToBooleanSchema.optional(),
|
|
119
112
|
saStatus: z.nativeEnum(SignatureStatus).optional(),
|
|
120
113
|
offeringId: z.lazy(() => offeringIdSchema).optional(),
|
|
121
114
|
search: z.string().max(50).optional(),
|
|
@@ -22,12 +22,13 @@ import {
|
|
|
22
22
|
AccountStatus,
|
|
23
23
|
SavedQuery,
|
|
24
24
|
} from './common.types';
|
|
25
|
-
import { offeringIdSchema } from './offering.types';
|
|
25
|
+
import { IOffering, offeringIdSchema } from './offering.types';
|
|
26
26
|
import { IBaseEntity } from './entity.types';
|
|
27
27
|
import { extendZodWithOpenApi } from '@anatine/zod-openapi';
|
|
28
28
|
import { TypeID } from 'typeid-js';
|
|
29
29
|
import {
|
|
30
30
|
paymentMethodIdSchema,
|
|
31
|
+
PaymentMethodResponse,
|
|
31
32
|
PaymentMethodType,
|
|
32
33
|
} from './payment-methods.types';
|
|
33
34
|
import {
|
|
@@ -35,11 +36,12 @@ import {
|
|
|
35
36
|
InvestorAccountExportFilters,
|
|
36
37
|
ComplianceInvestorAccountExportFilters,
|
|
37
38
|
RegisteredInvestorUserRawZod,
|
|
39
|
+
IInvestorAccount,
|
|
38
40
|
} from './investor-account.types';
|
|
39
41
|
import {
|
|
40
42
|
tradeLineItemIdSchema,
|
|
41
43
|
TradeLineItemZod,
|
|
42
|
-
} from './trade-line-item.
|
|
44
|
+
} from './trade-line-item.types';
|
|
43
45
|
import { TradeAdjustmentZod } from './trade-adjustment.type';
|
|
44
46
|
import { TransactionZod } from './transaction.types';
|
|
45
47
|
import { accountIdSchema } from './account.types';
|
|
@@ -55,8 +57,71 @@ import {
|
|
|
55
57
|
} from './secondary-trade.types';
|
|
56
58
|
import { InvestorAccount } from '../../investor-accounts/entities/investor-account.entity';
|
|
57
59
|
import { Trade } from '../../trades/entities/trade.entity';
|
|
60
|
+
import { fileIdSchema } from './file.types';
|
|
58
61
|
|
|
59
62
|
extendZodWithOpenApi(z);
|
|
63
|
+
|
|
64
|
+
// Zod schemas for attach subdoc endpoints
|
|
65
|
+
export const PostAttachSubdocBody = z.object({
|
|
66
|
+
lineItemId: tradeLineItemIdSchema.openapi({
|
|
67
|
+
example: 'trade_line_item_01kctsycw3fq7sj6hedvy62cja',
|
|
68
|
+
}),
|
|
69
|
+
fileId: z
|
|
70
|
+
.lazy(() => fileIdSchema)
|
|
71
|
+
.openapi({ example: 'file_01je6ht4b8fbmttkzh2hs82xqp' }),
|
|
72
|
+
primarySignatureStatus: z
|
|
73
|
+
.nativeEnum(SignatureStatus)
|
|
74
|
+
.openapi({ example: 'SIGNED' }),
|
|
75
|
+
secondarySignatureStatus: z
|
|
76
|
+
.nativeEnum(SignatureStatus)
|
|
77
|
+
.optional()
|
|
78
|
+
.openapi({ example: 'SIGNED' }),
|
|
79
|
+
});
|
|
80
|
+
export type PostAttachSubdocBody = z.infer<typeof PostAttachSubdocBody>;
|
|
81
|
+
|
|
82
|
+
export const PutAttachSubdocBody = z.object({
|
|
83
|
+
lineItemId: tradeLineItemIdSchema
|
|
84
|
+
.optional()
|
|
85
|
+
.openapi({ example: 'trade_line_item_01kctsycw3fq7sj6hedvy62cja' }),
|
|
86
|
+
fileId: z
|
|
87
|
+
.lazy(() => fileIdSchema)
|
|
88
|
+
.optional()
|
|
89
|
+
.openapi({ example: 'file_01je6ht4b8fbmttkzh2hs82xqp' }),
|
|
90
|
+
primarySignatureStatus: z
|
|
91
|
+
.nativeEnum(SignatureStatus)
|
|
92
|
+
.optional()
|
|
93
|
+
.openapi({ example: 'SIGNED' }),
|
|
94
|
+
secondarySignatureStatus: z
|
|
95
|
+
.nativeEnum(SignatureStatus)
|
|
96
|
+
.optional()
|
|
97
|
+
.openapi({ example: 'SIGNED' }),
|
|
98
|
+
});
|
|
99
|
+
export type PutAttachSubdocBody = z.infer<typeof PutAttachSubdocBody>;
|
|
100
|
+
|
|
101
|
+
export const PatchSubdocSignatureBody = z.object({
|
|
102
|
+
lineItemId: tradeLineItemIdSchema.optional().openapi({
|
|
103
|
+
example: 'trade_line_item_01kctsycw3fq7sj6hedvy62cja',
|
|
104
|
+
description:
|
|
105
|
+
'Optional. If not provided, updates the first line item with an attached subdoc. Required for trades with multiple line items.',
|
|
106
|
+
}),
|
|
107
|
+
primarySignatureStatus: z.nativeEnum(SignatureStatus).optional().openapi({
|
|
108
|
+
example: 'SIGNED',
|
|
109
|
+
description: 'Primary signer signature status',
|
|
110
|
+
}),
|
|
111
|
+
secondarySignatureStatus: z.nativeEnum(SignatureStatus).optional().openapi({
|
|
112
|
+
example: 'SIGNED',
|
|
113
|
+
description:
|
|
114
|
+
'Secondary signer signature status. Only applicable for JOINT investor accounts.',
|
|
115
|
+
}),
|
|
116
|
+
});
|
|
117
|
+
export type PatchSubdocSignatureBody = z.infer<typeof PatchSubdocSignatureBody>;
|
|
118
|
+
|
|
119
|
+
export const AttachSubdocResponse = z.object({
|
|
120
|
+
success: z.boolean(),
|
|
121
|
+
message: z.string(),
|
|
122
|
+
});
|
|
123
|
+
export type AttachSubdocResponse = z.infer<typeof AttachSubdocResponse>;
|
|
124
|
+
|
|
60
125
|
export const CheckResultsSchema = z.object({
|
|
61
126
|
fundingStatus: z.boolean(),
|
|
62
127
|
agreementStatus: z.boolean(),
|
|
@@ -69,6 +134,7 @@ export const CheckResultsSchema = z.object({
|
|
|
69
134
|
export type CheckResults = z.infer<typeof CheckResultsSchema>;
|
|
70
135
|
|
|
71
136
|
export const TradeIdPrefix = 'trade';
|
|
137
|
+
export const TradeSnapshotIdPrefix = 'trade_snapshot';
|
|
72
138
|
|
|
73
139
|
export const tradeIdSchema = z.string().refine(
|
|
74
140
|
(value) => {
|
|
@@ -107,6 +173,21 @@ export const tradeIdOrTidSchema = z.union([
|
|
|
107
173
|
.openapi({ example: 'tid_00041061050r3gg28a1c60t3gf' }),
|
|
108
174
|
]);
|
|
109
175
|
|
|
176
|
+
export const tradeSnapshotIdSchema = z.string().refine(
|
|
177
|
+
(value) => {
|
|
178
|
+
try {
|
|
179
|
+
const tid = TypeID.fromString(value);
|
|
180
|
+
return tid.getType() === TradeSnapshotIdPrefix;
|
|
181
|
+
} catch {
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
message:
|
|
187
|
+
'Invalid trade snapshot ID format. Must be a valid TypeID with "trade_snapshot" prefix. ex: trade_snapshot_00041061050r3gg28a1c60t3gf',
|
|
188
|
+
},
|
|
189
|
+
);
|
|
190
|
+
|
|
110
191
|
export enum SaStatus {
|
|
111
192
|
PENDING = BaseStatus.PENDING,
|
|
112
193
|
SIGNED = BaseStatus.SIGNED,
|
|
@@ -202,11 +283,30 @@ export const PatchSaLogSchema = z.object({
|
|
|
202
283
|
|
|
203
284
|
export type PatchSaLogSchema = z.infer<typeof PatchSaLogSchema>;
|
|
204
285
|
|
|
286
|
+
export const TradeBalanceResultZod = z.object({
|
|
287
|
+
tradeAdjustments: z.number().multipleOf(0.01),
|
|
288
|
+
chargedAmount: z.number().multipleOf(0.01),
|
|
289
|
+
balance: z.number().multipleOf(0.01),
|
|
290
|
+
});
|
|
291
|
+
export type TradeBalanceResultZod = z.infer<typeof TradeBalanceResultZod>;
|
|
292
|
+
|
|
205
293
|
export const TradeZod = IBaseEntity.extend({
|
|
206
294
|
investorAccountId: z.lazy(() => investorAccountIdSchema.nullable()),
|
|
295
|
+
investorAccount: z
|
|
296
|
+
.lazy(() => IInvestorAccount)
|
|
297
|
+
.optional()
|
|
298
|
+
.nullable(),
|
|
299
|
+
offering: z
|
|
300
|
+
.lazy(() => IOffering)
|
|
301
|
+
.optional()
|
|
302
|
+
.nullable(),
|
|
207
303
|
accountId: accountIdSchema.nullable(),
|
|
208
304
|
offeringId: z.lazy(() => offeringIdSchema.nullable()),
|
|
209
305
|
paymentMethodId: z.lazy(() => paymentMethodIdSchema).nullable(),
|
|
306
|
+
paymentMethod: z
|
|
307
|
+
.lazy(() => PaymentMethodResponse)
|
|
308
|
+
.optional()
|
|
309
|
+
.nullable(),
|
|
210
310
|
userId: z.lazy(() => userIdSchema.nullable()),
|
|
211
311
|
tradeNumber: z.string(),
|
|
212
312
|
ip: z.string().nullable(),
|
|
@@ -272,6 +372,21 @@ export const TradeZod = IBaseEntity.extend({
|
|
|
272
372
|
});
|
|
273
373
|
export type TradeZod = z.infer<typeof TradeZod>;
|
|
274
374
|
|
|
375
|
+
export enum SnapshotEvent {
|
|
376
|
+
COMPLIANCE_APPROVED = 'COMPLIANCE_APPROVED',
|
|
377
|
+
COMPLIANCE_REJECTED = 'COMPLIANCE_REJECTED',
|
|
378
|
+
CANCELLED = 'CANCELLED',
|
|
379
|
+
PLACED = 'PLACED',
|
|
380
|
+
SETTLED = 'SETTLED',
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
export const GetTradeSnapshotEventsResponse = z.object({
|
|
384
|
+
events: z.array(z.nativeEnum(SnapshotEvent)),
|
|
385
|
+
});
|
|
386
|
+
export type GetTradeSnapshotEventsResponse = z.infer<
|
|
387
|
+
typeof GetTradeSnapshotEventsResponse
|
|
388
|
+
>;
|
|
389
|
+
|
|
275
390
|
export const IPaginatedTrade = z.object({
|
|
276
391
|
items: z.array(TradeZod),
|
|
277
392
|
meta: IPaginationMeta,
|
|
@@ -354,6 +469,7 @@ export const TradeFiltersZod = z.object({
|
|
|
354
469
|
.openapi({
|
|
355
470
|
example: 'issuer_01jfw4q6qef30s6fpqtsxw94ya',
|
|
356
471
|
}),
|
|
472
|
+
snapshotEvent: z.nativeEnum(SnapshotEvent).optional(),
|
|
357
473
|
offeringType: z.nativeEnum(OfferingType).optional(),
|
|
358
474
|
managedBy: z.nativeEnum(ManagedByType).optional(),
|
|
359
475
|
platform: z.nativeEnum(Platforms).optional(),
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { extendZodWithOpenApi } from '@anatine/zod-openapi';
|
|
1
3
|
import { TypeID } from 'typeid-js';
|
|
2
4
|
import {
|
|
3
5
|
dateSchema,
|
|
4
6
|
InvestorAccountType,
|
|
5
7
|
numberPrecisionSchema,
|
|
6
8
|
} from './common.types';
|
|
7
|
-
import { z } from 'zod';
|
|
8
9
|
import { IBaseEntity } from './entity.types';
|
|
9
10
|
import { accountIdSchema } from './account.types';
|
|
10
11
|
import {
|
|
@@ -18,7 +19,9 @@ import {
|
|
|
18
19
|
investorAccountIdSchema,
|
|
19
20
|
} from './investor-account.types';
|
|
20
21
|
import { TransactionStatus, TransactionType } from './common.types';
|
|
22
|
+
import { userIdSchema } from './user.types';
|
|
21
23
|
export { TransactionStatus, TransactionType };
|
|
24
|
+
extendZodWithOpenApi(z);
|
|
22
25
|
|
|
23
26
|
export enum RefundPaymentMethod {
|
|
24
27
|
CHECK = 'CHECK',
|
|
@@ -115,6 +118,14 @@ export type InvestorPostTransactionZod = z.infer<
|
|
|
115
118
|
typeof InvestorPostTransactionZod
|
|
116
119
|
>;
|
|
117
120
|
|
|
121
|
+
export const ClientPostTransactionZod = InvestorPostTransactionZod.extend({
|
|
122
|
+
userId: z
|
|
123
|
+
.lazy(() => userIdSchema)
|
|
124
|
+
.openapi({ example: 'user_01j5y5ghx5fg68d663j1fvy2x7' }),
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
export type ClientPostTransactionZod = z.infer<typeof ClientPostTransactionZod>;
|
|
128
|
+
|
|
118
129
|
export const refundTransactionIdSchema = z.string().refine(
|
|
119
130
|
(value) => {
|
|
120
131
|
try {
|
|
@@ -2,7 +2,11 @@ import { extendZodWithOpenApi } from '@anatine/zod-openapi';
|
|
|
2
2
|
import { TypeID } from 'typeid-js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { IBaseEntity } from './entity.types';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
EmailSchema,
|
|
7
|
+
IPaginationMeta,
|
|
8
|
+
TrustedContactRelationship,
|
|
9
|
+
} from './common.types';
|
|
6
10
|
import { PhoneZodSchema } from './phone.type';
|
|
7
11
|
import { AddressSchema } from './address.types';
|
|
8
12
|
import { investorAccountIdSchema } from './investor-account.types';
|
|
@@ -68,7 +72,7 @@ export const PostTrustedContactZod = z
|
|
|
68
72
|
.object({
|
|
69
73
|
firstName: z.string().min(1).max(255).openapi({ example: 'John' }),
|
|
70
74
|
lastName: z.string().min(1).max(255).openapi({ example: 'Doe' }),
|
|
71
|
-
email:
|
|
75
|
+
email: EmailSchema.openapi({ example: 'john.doe@example.com' }),
|
|
72
76
|
phone: PhoneZodSchema.nullable().optional(),
|
|
73
77
|
relationship: z
|
|
74
78
|
.nativeEnum(TrustedContactRelationship)
|
|
@@ -92,11 +96,7 @@ export const PatchTrustedContactZod = z
|
|
|
92
96
|
.optional()
|
|
93
97
|
.openapi({ example: 'John' }),
|
|
94
98
|
lastName: z.string().min(1).max(255).optional().openapi({ example: 'Doe' }),
|
|
95
|
-
email:
|
|
96
|
-
.string()
|
|
97
|
-
.email()
|
|
98
|
-
.optional()
|
|
99
|
-
.openapi({ example: 'john.doe@example.com' }),
|
|
99
|
+
email: EmailSchema.optional(),
|
|
100
100
|
phone: PhoneZodSchema.nullable().optional(),
|
|
101
101
|
relationship: z.nativeEnum(TrustedContactRelationship).optional().openapi({
|
|
102
102
|
example: TrustedContactRelationship.CHILD,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { extendZodWithOpenApi } from '@anatine/zod-openapi';
|
|
2
3
|
import {
|
|
3
4
|
AccountStatus,
|
|
4
5
|
AccountWithoutUsersZod,
|
|
@@ -7,12 +8,12 @@ import {
|
|
|
7
8
|
ManagedByType,
|
|
8
9
|
OfferingType,
|
|
9
10
|
PortalType,
|
|
11
|
+
StringToBooleanSchema,
|
|
10
12
|
UserRole,
|
|
11
|
-
UserStatus,
|
|
12
13
|
UserType,
|
|
14
|
+
EmailSchema,
|
|
13
15
|
} from './common.types';
|
|
14
16
|
import { dateOrString, IBaseEntity } from './entity.types';
|
|
15
|
-
import { extendZodWithOpenApi } from '@anatine/zod-openapi';
|
|
16
17
|
import { PhoneZodSchema } from './phone.type';
|
|
17
18
|
import { IInvestorAccount } from './investor-account.types';
|
|
18
19
|
import { TradeZod } from './trade.types';
|
|
@@ -51,6 +52,11 @@ export const UserDeleteResponse = z.object({
|
|
|
51
52
|
});
|
|
52
53
|
export type UserDeleteResponse = z.infer<typeof UserDeleteResponse>;
|
|
53
54
|
|
|
55
|
+
export const UserRestoreResponse = z.object({
|
|
56
|
+
message: z.string(),
|
|
57
|
+
});
|
|
58
|
+
export type UserRestoreResponse = z.infer<typeof UserRestoreResponse>;
|
|
59
|
+
|
|
54
60
|
export const GetMeResponse = IBaseEntity.extend({
|
|
55
61
|
accountId: z.string().nullable(),
|
|
56
62
|
accountName: z.string().nullable(),
|
|
@@ -59,7 +65,7 @@ export const GetMeResponse = IBaseEntity.extend({
|
|
|
59
65
|
email: z.string().email(),
|
|
60
66
|
provider: z.string(),
|
|
61
67
|
active: z.boolean(),
|
|
62
|
-
|
|
68
|
+
locked: z.boolean(),
|
|
63
69
|
lastLoginAt: dateOrString.nullable(),
|
|
64
70
|
loginCount: z.number(),
|
|
65
71
|
role: z.string(),
|
|
@@ -142,11 +148,7 @@ export const UserMeUpdateZod = z.object({
|
|
|
142
148
|
firstName: z.string().optional(),
|
|
143
149
|
lastName: z.string().optional(),
|
|
144
150
|
password: z.string().min(6).optional(),
|
|
145
|
-
email:
|
|
146
|
-
.string()
|
|
147
|
-
.email()
|
|
148
|
-
.transform((val) => val.toLowerCase())
|
|
149
|
-
.optional(),
|
|
151
|
+
email: EmailSchema.optional(),
|
|
150
152
|
});
|
|
151
153
|
|
|
152
154
|
export const UserZod = IBaseEntity.extend({
|
|
@@ -157,7 +159,7 @@ export const UserZod = IBaseEntity.extend({
|
|
|
157
159
|
onboarding: z.string().nullable(),
|
|
158
160
|
account: AccountWithoutUsersZod.optional(),
|
|
159
161
|
active: z.boolean(),
|
|
160
|
-
|
|
162
|
+
locked: z.boolean(),
|
|
161
163
|
userLogin: IBaseEntity.extend({
|
|
162
164
|
firstName: z.string(),
|
|
163
165
|
lastName: z.string(),
|
|
@@ -179,27 +181,9 @@ export const UserFiltersZod = z.object({
|
|
|
179
181
|
search: z.string().max(50).optional(),
|
|
180
182
|
role: z.nativeEnum(UserRole).optional(),
|
|
181
183
|
portal: z.string().optional(),
|
|
182
|
-
|
|
183
|
-
active:
|
|
184
|
-
|
|
185
|
-
.optional()
|
|
186
|
-
.refine((v) => !v || v === 'true' || v === 'false', {
|
|
187
|
-
message: 'active must be a boolean string',
|
|
188
|
-
})
|
|
189
|
-
.transform((v) => {
|
|
190
|
-
if (!v) return undefined;
|
|
191
|
-
return v === 'true';
|
|
192
|
-
}),
|
|
193
|
-
twoFactorEnabled: z
|
|
194
|
-
.string()
|
|
195
|
-
.optional()
|
|
196
|
-
.refine((v) => !v || v === 'true' || v === 'false', {
|
|
197
|
-
message: 'twoFactorEnabled must be a boolean string',
|
|
198
|
-
})
|
|
199
|
-
.transform((v) => {
|
|
200
|
-
if (!v) return undefined;
|
|
201
|
-
return v === 'true';
|
|
202
|
-
}),
|
|
184
|
+
locked: StringToBooleanSchema.optional(),
|
|
185
|
+
active: StringToBooleanSchema.optional(),
|
|
186
|
+
twoFactorEnabled: StringToBooleanSchema.optional(),
|
|
203
187
|
});
|
|
204
188
|
|
|
205
189
|
const usersInclude = z.enum(['account', 'role']);
|
|
@@ -274,7 +258,7 @@ export type IssuerUsersStatusUpdateResponse = z.infer<
|
|
|
274
258
|
>;
|
|
275
259
|
|
|
276
260
|
export const UpdateLockedStatus = z.object({
|
|
277
|
-
|
|
261
|
+
locked: z.boolean(),
|
|
278
262
|
});
|
|
279
263
|
|
|
280
264
|
export type UpdateLockedStatus = z.infer<typeof UpdateLockedStatus>;
|
|
@@ -285,7 +269,7 @@ export const UsersSummaryFilterZod = z.object({
|
|
|
285
269
|
portalType: z.nativeEnum(PortalType).optional(),
|
|
286
270
|
search: z.string().trim().max(50).optional(),
|
|
287
271
|
selectRole: z.nativeEnum(UserRole).optional(),
|
|
288
|
-
|
|
272
|
+
locked: StringToBooleanSchema.optional(),
|
|
289
273
|
});
|
|
290
274
|
export type UsersSummaryFilterZod = z.infer<typeof UsersSummaryFilterZod>;
|
|
291
275
|
|
|
@@ -299,7 +283,7 @@ export const UsersSummaryZod = z.object({
|
|
|
299
283
|
portalType: z.string(),
|
|
300
284
|
loginCount: z.number().int(),
|
|
301
285
|
lastLogin: z.date(),
|
|
302
|
-
|
|
286
|
+
locked: z.boolean(),
|
|
303
287
|
});
|
|
304
288
|
export type UsersSummaryZod = z.infer<typeof UsersSummaryZod>;
|
|
305
289
|
|