@dalmore/api-contracts 0.0.0-dev.4eac826 → 0.0.0-dev.56068a6
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/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/comply-advantage-api.types.ts +3 -3
- 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 +97 -3
- package/common/types/escrow-account.types.ts +3 -3
- 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 +13 -17
- 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 +4 -9
- 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 +48 -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/clients/cart/index.ts +21 -1
- package/contracts/clients/index.ts +2 -0
- package/contracts/clients/trade-line-items/index.ts +1 -1
- package/contracts/clients/trades/index.ts +1 -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/payment-methods/index.ts +0 -57
- 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/cart/index.ts +0 -75
- 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 -121
- package/contracts/investors/investor-accounts/index.ts +0 -110
- package/contracts/investors/issuer-payment-methods/index.ts +0 -36
- 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/trade-line-items/index.ts +0 -75
- 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 -171
- 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
|
@@ -12,12 +12,11 @@ import {
|
|
|
12
12
|
InvestorAccountType,
|
|
13
13
|
SetupStatusType,
|
|
14
14
|
SetupStepType,
|
|
15
|
-
ComplianceReview,
|
|
16
15
|
RetirementAccountType,
|
|
17
|
-
TradeStatus,
|
|
18
16
|
EmploymentStatus,
|
|
19
17
|
SourceOfIncome,
|
|
20
18
|
AMLProvider,
|
|
19
|
+
EmailSchema,
|
|
21
20
|
} from './common.types';
|
|
22
21
|
import { IBaseEntity } from './entity.types';
|
|
23
22
|
import { IInvestorAccount } from './investor-account.types';
|
|
@@ -60,8 +59,8 @@ export enum aicQuestionnaireQuestionType {
|
|
|
60
59
|
}
|
|
61
60
|
|
|
62
61
|
export enum FilterBy {
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
ALL = 'ALL',
|
|
63
|
+
PENDING_TRADES = 'PENDING_TRADES',
|
|
65
64
|
}
|
|
66
65
|
|
|
67
66
|
export const aicQuestionnaireQuestion = z.object({
|
|
@@ -243,17 +242,6 @@ export const IndividualFiltersZod = z.object({
|
|
|
243
242
|
|
|
244
243
|
export const ComplianceIndividualFiltersZod = IndividualFiltersZod.extend({
|
|
245
244
|
filterBy: z.nativeEnum(FilterBy).optional(),
|
|
246
|
-
tradeStatus: z.nativeEnum(TradeStatus).optional(),
|
|
247
|
-
complianceReview: z.nativeEnum(ComplianceReview).optional(),
|
|
248
|
-
hasPendingTrades: z.preprocess(
|
|
249
|
-
(val) =>
|
|
250
|
-
val === 'true' || val === '1'
|
|
251
|
-
? true
|
|
252
|
-
: val === 'false' || val === '0'
|
|
253
|
-
? false
|
|
254
|
-
: val,
|
|
255
|
-
z.boolean().optional(),
|
|
256
|
-
),
|
|
257
245
|
});
|
|
258
246
|
|
|
259
247
|
/**
|
|
@@ -301,7 +289,7 @@ export const PostIndividualBodySchema = z
|
|
|
301
289
|
.string()
|
|
302
290
|
.length(3, 'currencyCode must be 3 digits')
|
|
303
291
|
.optional(),
|
|
304
|
-
email:
|
|
292
|
+
email: EmailSchema.optional(),
|
|
305
293
|
role: z.nativeEnum(IndividualRole),
|
|
306
294
|
phone: PhoneZodSchema.openapi({ example: '+12124567890' }).optional(),
|
|
307
295
|
ownership: z.coerce
|
|
@@ -400,7 +388,7 @@ export const UpdateIndividualBodySchema = z
|
|
|
400
388
|
.length(3, 'currencyCode must be 3 digits')
|
|
401
389
|
.optional(),
|
|
402
390
|
phone: PhoneZodSchema.openapi({ example: '+12124567890' }).optional(),
|
|
403
|
-
email:
|
|
391
|
+
email: EmailSchema.optional(),
|
|
404
392
|
ownership: z.coerce
|
|
405
393
|
.number()
|
|
406
394
|
.min(0, 'Ownership is less than 0')
|
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
SortBy,
|
|
25
25
|
SortOrder,
|
|
26
26
|
AMLProvider,
|
|
27
|
+
EmailSchema,
|
|
27
28
|
} from './common.types';
|
|
28
29
|
import { accountIdSchema } from './account.types';
|
|
29
30
|
import { SaStatus, tradeIdSchema, TradeZod } from './trade.types';
|
|
@@ -131,7 +132,7 @@ export type PostClientInvestorAccountBody = z.infer<
|
|
|
131
132
|
|
|
132
133
|
export const UpdateInvestorAccountBodySchema = z.object({
|
|
133
134
|
name: z.string().optional(),
|
|
134
|
-
email:
|
|
135
|
+
email: EmailSchema.optional(),
|
|
135
136
|
});
|
|
136
137
|
export type UpdateInvestorAccountBody = z.infer<
|
|
137
138
|
typeof UpdateInvestorAccountBodySchema
|
|
@@ -3,7 +3,9 @@ import {
|
|
|
3
3
|
AccountZod,
|
|
4
4
|
IPaginationMeta,
|
|
5
5
|
IssuerRole,
|
|
6
|
+
PortalType,
|
|
6
7
|
UserRole,
|
|
8
|
+
EmailSchema,
|
|
7
9
|
} from './common.types';
|
|
8
10
|
import { extendZodWithOpenApi } from '@anatine/zod-openapi';
|
|
9
11
|
import { TypeID } from 'typeid-js';
|
|
@@ -48,7 +50,7 @@ export const InviteWithUrl = InviteWithoutSecretZod.extend({
|
|
|
48
50
|
export type InviteWithUrl = z.infer<typeof InviteWithUrl>;
|
|
49
51
|
|
|
50
52
|
export const PostIssuerInviteZod = z.object({
|
|
51
|
-
email:
|
|
53
|
+
email: EmailSchema,
|
|
52
54
|
role: z.nativeEnum(IssuerRole),
|
|
53
55
|
});
|
|
54
56
|
|
|
@@ -131,3 +133,27 @@ export const PatchInviteForComplianceZod = PatchInviteRoleZod.extend({
|
|
|
131
133
|
export type PatchInviteForComplianceZod = z.infer<
|
|
132
134
|
typeof PatchInviteForComplianceZod
|
|
133
135
|
>;
|
|
136
|
+
|
|
137
|
+
export const PostInviteZod = z.object({
|
|
138
|
+
email: EmailSchema,
|
|
139
|
+
role: z.nativeEnum(UserRole).openapi({
|
|
140
|
+
example: UserRole.ADMIN,
|
|
141
|
+
}),
|
|
142
|
+
accountId: z.string().optional().openapi({
|
|
143
|
+
example: 'account_01j5y5ghx5fg68d663j1fvy2x7',
|
|
144
|
+
}),
|
|
145
|
+
portalType: z.nativeEnum(PortalType).optional().openapi({
|
|
146
|
+
example: PortalType.ISSUER,
|
|
147
|
+
}),
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
export type PostInviteZod = z.infer<typeof PostInviteZod>;
|
|
151
|
+
|
|
152
|
+
export const CompliancePostInviteZod = z.object({
|
|
153
|
+
email: EmailSchema,
|
|
154
|
+
role: z.nativeEnum(UserRole).openapi({
|
|
155
|
+
example: UserRole.ADMIN,
|
|
156
|
+
}),
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
export type CompliancePostInviteZod = z.infer<typeof CompliancePostInviteZod>;
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
ComplianceReview,
|
|
11
11
|
DurationType,
|
|
12
12
|
AssetType,
|
|
13
|
+
StringToBooleanSchema,
|
|
13
14
|
} from './common.types';
|
|
14
15
|
import { IBaseEntity } from './entity.types';
|
|
15
16
|
import { IIssuer, issuerIdSchema } from './issuer.types';
|
|
@@ -168,6 +169,7 @@ export const PostIssuerOffering = z
|
|
|
168
169
|
.default(AssetTemplateType.STANDARD)
|
|
169
170
|
.openapi({ example: AssetTemplateType.STANDARD }),
|
|
170
171
|
tiers: z.array(z.number().positive()).nullable().optional(),
|
|
172
|
+
enableBonus: z.boolean().default(false).optional(),
|
|
171
173
|
})
|
|
172
174
|
.superRefine((data, ctx) => {
|
|
173
175
|
// Check if both values are present, and if so, ensure minInvestment is less than maxInvestment
|
|
@@ -192,38 +194,39 @@ export const PatchIssuerOffering = z.object({
|
|
|
192
194
|
.max(100)
|
|
193
195
|
.optional()
|
|
194
196
|
.openapi({ example: 'Airbnb IPO' }),
|
|
197
|
+
type: z
|
|
198
|
+
.nativeEnum(OfferingType)
|
|
199
|
+
.optional()
|
|
200
|
+
.openapi({ example: OfferingType.REG_D }),
|
|
195
201
|
targetAmount: z
|
|
196
202
|
.number()
|
|
197
203
|
.min(0)
|
|
198
204
|
.max(10000000000)
|
|
199
205
|
.optional()
|
|
200
206
|
.openapi({ example: 120000 }),
|
|
201
|
-
raiseAmount: z
|
|
202
|
-
.number()
|
|
203
|
-
.min(0)
|
|
204
|
-
.max(10000000000)
|
|
205
|
-
.optional()
|
|
206
|
-
.openapi({ example: 200000 }),
|
|
207
207
|
minInvestment: z
|
|
208
208
|
.number()
|
|
209
209
|
.min(0)
|
|
210
210
|
.max(10000000000)
|
|
211
|
+
.nullable()
|
|
211
212
|
.optional()
|
|
212
213
|
.openapi({ example: 1000 }),
|
|
213
214
|
maxInvestment: z
|
|
214
215
|
.number()
|
|
215
216
|
.min(0)
|
|
216
217
|
.max(10000000000)
|
|
218
|
+
.nullable()
|
|
217
219
|
.optional()
|
|
218
220
|
.openapi({ example: 20000 }),
|
|
219
221
|
contingencyAmount: z
|
|
220
222
|
.number()
|
|
221
223
|
.min(0)
|
|
222
224
|
.max(10000000000)
|
|
225
|
+
.nullable()
|
|
223
226
|
.optional()
|
|
224
227
|
.openapi({ example: 5000 }),
|
|
225
|
-
startAt: dateSchema.optional().openapi({ example: '10/20/2024' }),
|
|
226
|
-
endAt: dateSchema.optional().openapi({ example: '10/27/2024' }),
|
|
228
|
+
startAt: dateSchema.nullable().optional().openapi({ example: '10/20/2024' }),
|
|
229
|
+
endAt: dateSchema.nullable().optional().openapi({ example: '10/27/2024' }),
|
|
227
230
|
cancellationPeriod: z
|
|
228
231
|
.number()
|
|
229
232
|
.min(1)
|
|
@@ -299,6 +302,7 @@ export const PatchIssuerOffering = z.object({
|
|
|
299
302
|
.optional(),
|
|
300
303
|
tiers: z.array(z.number().positive()).nullable().optional(),
|
|
301
304
|
enabled: z.boolean().optional(),
|
|
305
|
+
enableBonus: z.boolean().optional(),
|
|
302
306
|
});
|
|
303
307
|
export type PatchIssuerOffering = z.infer<typeof PatchIssuerOffering>;
|
|
304
308
|
|
|
@@ -368,15 +372,7 @@ export const IssuerOfferingsFilterZod = z.object({
|
|
|
368
372
|
issuerId: z.lazy(() => issuerIdSchema).optional(),
|
|
369
373
|
type: z.nativeEnum(OfferingType).optional(),
|
|
370
374
|
status: z.nativeEnum(ComplianceReview).optional(),
|
|
371
|
-
enabled:
|
|
372
|
-
(val) =>
|
|
373
|
-
val === 'true' || val === '1'
|
|
374
|
-
? true
|
|
375
|
-
: val === 'false' || val === '0'
|
|
376
|
-
? false
|
|
377
|
-
: val,
|
|
378
|
-
z.boolean().optional(),
|
|
379
|
-
),
|
|
375
|
+
enabled: StringToBooleanSchema.optional(),
|
|
380
376
|
managedBy: z.nativeEnum(ManagedByType).optional(),
|
|
381
377
|
versioningType: z.nativeEnum(OfferingVersioningType).optional(),
|
|
382
378
|
combinedStatus: z.nativeEnum(OfferingStatus).optional(),
|
|
@@ -2,6 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
import { IBaseEntity } from './entity.types';
|
|
3
3
|
import {
|
|
4
4
|
dateSchema,
|
|
5
|
+
EmailSchema,
|
|
5
6
|
IPaginationMeta,
|
|
6
7
|
KYBStatus,
|
|
7
8
|
SanctionsStatus,
|
|
@@ -138,7 +139,7 @@ export const PostLegalEntitySchema = z
|
|
|
138
139
|
investorAccountId: investorAccountIdSchema,
|
|
139
140
|
name: CompanyNameSchema,
|
|
140
141
|
ein: EINSchema,
|
|
141
|
-
email:
|
|
142
|
+
email: EmailSchema.optional(),
|
|
142
143
|
companyType: CompanyTypeSchema.optional(),
|
|
143
144
|
phone: PhoneZodSchema.openapi({ example: '+12124567890' }).optional(),
|
|
144
145
|
dateOfIncorporation: z.lazy(() => dateSchema).optional(),
|
|
@@ -153,7 +154,7 @@ export const UpdateLegalEntitySchema = z
|
|
|
153
154
|
id: legalEntityIdSchema.optional(),
|
|
154
155
|
name: CompanyNameSchema.optional(),
|
|
155
156
|
ein: EINSchema,
|
|
156
|
-
email:
|
|
157
|
+
email: EmailSchema.optional(),
|
|
157
158
|
companyType: CompanyTypeSchema.optional(),
|
|
158
159
|
phone: PhoneZodSchema.openapi({ example: '+12124567890' }).optional(),
|
|
159
160
|
dateOfIncorporation: z.lazy(() => dateSchema).optional(),
|
|
@@ -434,3 +434,37 @@ export type EmailThemeSetting = z.infer<typeof EmailThemeSettingZod>;
|
|
|
434
434
|
|
|
435
435
|
export const EmailThemeSettingsZod = z.array(EmailThemeSettingZod);
|
|
436
436
|
export type EmailThemeSettingsZod = z.infer<typeof EmailThemeSettingsZod>;
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Response from a successful email send operation.
|
|
440
|
+
* Based on SendGrid SDK's ClientResponse structure.
|
|
441
|
+
*/
|
|
442
|
+
export const EmailSendResponseSchema = z.object({
|
|
443
|
+
/** HTTP status code from SendGrid (e.g., 202 for accepted) */
|
|
444
|
+
statusCode: z.number(),
|
|
445
|
+
/** SendGrid's x-message-id header for tracking emails in their dashboard */
|
|
446
|
+
messageId: z.string().optional(),
|
|
447
|
+
/** Full response headers, available for debugging if needed */
|
|
448
|
+
headers: z.record(z.string(), z.unknown()).optional(),
|
|
449
|
+
});
|
|
450
|
+
export type EmailSendResponse = z.infer<typeof EmailSendResponseSchema>;
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* Error from a failed email send operation.
|
|
454
|
+
* Fields are optional because error shapes vary depending on failure type
|
|
455
|
+
* (network errors vs SendGrid API errors).
|
|
456
|
+
*/
|
|
457
|
+
export const EmailSendErrorSchema = z.object({
|
|
458
|
+
/** Human-readable error message */
|
|
459
|
+
message: z.string(),
|
|
460
|
+
/** Network-level error code (e.g., 'ECONNREFUSED', 'ETIMEDOUT') */
|
|
461
|
+
code: z.string().optional(),
|
|
462
|
+
/** HTTP status code if request reached SendGrid (e.g., 400, 401, 403, 413, 500) */
|
|
463
|
+
statusCode: z.number().optional(),
|
|
464
|
+
/**
|
|
465
|
+
* SendGrid's error response body. Structure: { errors: [{ message, field, help, id }] }
|
|
466
|
+
* @see https://www.twilio.com/docs/sendgrid/api-reference/mail-send/mail-send#responses
|
|
467
|
+
*/
|
|
468
|
+
response: z.unknown().optional(),
|
|
469
|
+
});
|
|
470
|
+
export type EmailSendError = z.infer<typeof EmailSendErrorSchema>;
|
|
@@ -79,7 +79,7 @@ export const PostNoteBody = z.object({
|
|
|
79
79
|
export type PostNoteBody = z.infer<typeof PostNoteBody>;
|
|
80
80
|
|
|
81
81
|
export const CompliancePostNoteBody = PostNoteBody.extend({
|
|
82
|
-
accountId: accountIdSchema,
|
|
82
|
+
accountId: accountIdSchema.nullable().default(null),
|
|
83
83
|
});
|
|
84
84
|
|
|
85
85
|
export type CompliancePostNoteBody = z.infer<typeof CompliancePostNoteBody>;
|