@dalmore/api-contracts 0.0.0-dev.d8ef117 → 0.0.0-dev.e325dbb

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.
Files changed (194) hide show
  1. package/README.md +23 -19
  2. package/common/types/account-contact.types.ts +2 -1
  3. package/common/types/account-manager.types.ts +3 -7
  4. package/common/types/account-setting.types.ts +65 -0
  5. package/common/types/account.types.ts +1 -0
  6. package/common/types/auth.types.ts +7 -18
  7. package/common/types/bonus-tier.types.ts +9 -0
  8. package/common/types/common.types.ts +38 -6
  9. package/common/types/contact-us.types.ts +6 -2
  10. package/common/types/covered-person.types.ts +2 -1
  11. package/common/types/dashboard.types.ts +2 -9
  12. package/common/types/escrow-account.types.ts +3 -3
  13. package/common/types/individuals.types.ts +3 -2
  14. package/common/types/investor-account.types.ts +2 -1
  15. package/common/types/invite.types.ts +27 -1
  16. package/common/types/issuer-offering.types.ts +11 -17
  17. package/common/types/legal-entity.types.ts +3 -2
  18. package/common/types/mail-template.types.ts +34 -0
  19. package/common/types/note.types.ts +1 -1
  20. package/common/types/notification.types.ts +515 -29
  21. package/common/types/offering.types.ts +2 -9
  22. package/common/types/site-settings.types.ts +2 -1
  23. package/common/types/site.types.ts +2 -9
  24. package/common/types/{trade-line-item.type.ts → trade-line-item.types.ts} +2 -9
  25. package/common/types/trade.types.ts +48 -2
  26. package/common/types/trusted-contact.types.ts +7 -7
  27. package/common/types/user.types.ts +11 -32
  28. package/contracts/clients/trade-line-items/index.ts +1 -1
  29. package/contracts/clients/trades/index.ts +1 -1
  30. package/index.ts +10 -0
  31. package/package.json +23 -32
  32. package/contracts/compliance/account-contacts/index.ts +0 -82
  33. package/contracts/compliance/account-managers/index.ts +0 -142
  34. package/contracts/compliance/accounts/index.ts +0 -187
  35. package/contracts/compliance/activities/index.ts +0 -55
  36. package/contracts/compliance/aic/index.ts +0 -60
  37. package/contracts/compliance/api-keys/index.ts +0 -91
  38. package/contracts/compliance/assets/index.ts +0 -122
  39. package/contracts/compliance/auth/index.ts +0 -134
  40. package/contracts/compliance/batch-jobs/index.ts +0 -62
  41. package/contracts/compliance/bonus-tiers/index.ts +0 -74
  42. package/contracts/compliance/checklist/index.ts +0 -87
  43. package/contracts/compliance/checklist-items/index.ts +0 -86
  44. package/contracts/compliance/covered-persons/index.ts +0 -97
  45. package/contracts/compliance/dashboard/index.ts +0 -111
  46. package/contracts/compliance/data-records/index.ts +0 -116
  47. package/contracts/compliance/data-rooms/index.ts +0 -113
  48. package/contracts/compliance/default-theme-configs/index.ts +0 -95
  49. package/contracts/compliance/disbursement/index.ts +0 -165
  50. package/contracts/compliance/disbursement-approval-users/index.ts +0 -84
  51. package/contracts/compliance/disbursement-transactions/index.ts +0 -37
  52. package/contracts/compliance/domain-filters/index.ts +0 -117
  53. package/contracts/compliance/email-themes/index.ts +0 -284
  54. package/contracts/compliance/escrow-accounts/index.ts +0 -85
  55. package/contracts/compliance/exchange-api-keys/index.ts +0 -129
  56. package/contracts/compliance/exchange-imports/index.ts +0 -137
  57. package/contracts/compliance/files/index.ts +0 -267
  58. package/contracts/compliance/files-public/index.ts +0 -188
  59. package/contracts/compliance/health/index.ts +0 -26
  60. package/contracts/compliance/index.ts +0 -147
  61. package/contracts/compliance/individuals/index.ts +0 -57
  62. package/contracts/compliance/investor-accounts/index.ts +0 -141
  63. package/contracts/compliance/invites/index.ts +0 -137
  64. package/contracts/compliance/issuer-bank-accounts/index.ts +0 -81
  65. package/contracts/compliance/issuer-payment-methods/index.ts +0 -81
  66. package/contracts/compliance/issuers/index.ts +0 -97
  67. package/contracts/compliance/job-items/index.ts +0 -58
  68. package/contracts/compliance/jobs/index.ts +0 -59
  69. package/contracts/compliance/kyb/index.ts +0 -54
  70. package/contracts/compliance/kyc/index.ts +0 -77
  71. package/contracts/compliance/legal-entities/index.ts +0 -57
  72. package/contracts/compliance/login-histories/index.ts +0 -37
  73. package/contracts/compliance/notes/index.ts +0 -69
  74. package/contracts/compliance/notion-databases/index.ts +0 -107
  75. package/contracts/compliance/notion-pages/index.ts +0 -105
  76. package/contracts/compliance/offering-reports/index.ts +0 -149
  77. package/contracts/compliance/offerings/index.ts +0 -233
  78. package/contracts/compliance/pages/index.ts +0 -178
  79. package/contracts/compliance/payment-methods/index.ts +0 -57
  80. package/contracts/compliance/rejection-reasons/index.ts +0 -32
  81. package/contracts/compliance/review/index.ts +0 -169
  82. package/contracts/compliance/roles/index.ts +0 -34
  83. package/contracts/compliance/secondary-customers/index.ts +0 -77
  84. package/contracts/compliance/secondary-orders/index.ts +0 -60
  85. package/contracts/compliance/secondary-trades/index.ts +0 -100
  86. package/contracts/compliance/secure-requests/index.ts +0 -54
  87. package/contracts/compliance/signer/index.ts +0 -369
  88. package/contracts/compliance/site-links/index.ts +0 -128
  89. package/contracts/compliance/site-settings/index.ts +0 -669
  90. package/contracts/compliance/sites/index.ts +0 -56
  91. package/contracts/compliance/state-machine/index.ts +0 -94
  92. package/contracts/compliance/tasks/index.ts +0 -91
  93. package/contracts/compliance/third-parties/index.ts +0 -52
  94. package/contracts/compliance/trade-line-items/index.ts +0 -59
  95. package/contracts/compliance/trades/index.ts +0 -230
  96. package/contracts/compliance/transactions/index.ts +0 -161
  97. package/contracts/compliance/user-manuals/index.ts +0 -271
  98. package/contracts/compliance/user-settings/index.ts +0 -189
  99. package/contracts/compliance/users/index.ts +0 -221
  100. package/contracts/compliance/webhooks/index.ts +0 -41
  101. package/contracts/compliance-apikey/accounts/index.ts +0 -58
  102. package/contracts/compliance-apikey/index.ts +0 -14
  103. package/contracts/index.ts +0 -6
  104. package/contracts/investors/account-contacts/index.ts +0 -58
  105. package/contracts/investors/aic/index.ts +0 -59
  106. package/contracts/investors/assets/index.ts +0 -61
  107. package/contracts/investors/auth/index.ts +0 -116
  108. package/contracts/investors/bonus-tiers/index.ts +0 -55
  109. package/contracts/investors/cart/index.ts +0 -75
  110. package/contracts/investors/contact-us/index.ts +0 -48
  111. package/contracts/investors/data-records/index.ts +0 -113
  112. package/contracts/investors/data-rooms/index.ts +0 -96
  113. package/contracts/investors/files/index.ts +0 -167
  114. package/contracts/investors/files-public/index.ts +0 -185
  115. package/contracts/investors/index.ts +0 -72
  116. package/contracts/investors/individuals/index.ts +0 -121
  117. package/contracts/investors/investor-accounts/index.ts +0 -110
  118. package/contracts/investors/issuer-payment-methods/index.ts +0 -36
  119. package/contracts/investors/issuers/index.ts +0 -30
  120. package/contracts/investors/legal-entities/index.ts +0 -93
  121. package/contracts/investors/notes/index.ts +0 -69
  122. package/contracts/investors/offerings/index.ts +0 -93
  123. package/contracts/investors/pages/index.ts +0 -88
  124. package/contracts/investors/payment-methods/index.ts +0 -149
  125. package/contracts/investors/portfolios/index.ts +0 -53
  126. package/contracts/investors/sites/index.ts +0 -96
  127. package/contracts/investors/tasks/index.ts +0 -111
  128. package/contracts/investors/trade-line-items/index.ts +0 -75
  129. package/contracts/investors/trades/index.ts +0 -114
  130. package/contracts/investors/transactions/index.ts +0 -37
  131. package/contracts/investors/trusted-contacts/index.ts +0 -93
  132. package/contracts/investors/user-manuals/index.ts +0 -62
  133. package/contracts/investors/user-settings/index.ts +0 -170
  134. package/contracts/investors/users/index.ts +0 -45
  135. package/contracts/investors/webhooks/index.ts +0 -30
  136. package/contracts/issuers/account-contacts/index.ts +0 -76
  137. package/contracts/issuers/account-integrations/index.ts +0 -97
  138. package/contracts/issuers/accounts/index.ts +0 -97
  139. package/contracts/issuers/activities/index.ts +0 -54
  140. package/contracts/issuers/aic/index.ts +0 -39
  141. package/contracts/issuers/api-key-logs/index.ts +0 -53
  142. package/contracts/issuers/api-keys/index.ts +0 -93
  143. package/contracts/issuers/assets/index.ts +0 -122
  144. package/contracts/issuers/auth/index.ts +0 -152
  145. package/contracts/issuers/bonus-tiers/index.ts +0 -73
  146. package/contracts/issuers/contact-us/index.ts +0 -48
  147. package/contracts/issuers/covered-persons/index.ts +0 -136
  148. package/contracts/issuers/dashboard/index.ts +0 -72
  149. package/contracts/issuers/data-records/index.ts +0 -257
  150. package/contracts/issuers/data-rooms/index.ts +0 -134
  151. package/contracts/issuers/disbursement-approval-users/index.ts +0 -82
  152. package/contracts/issuers/disbursement-transactions/index.ts +0 -53
  153. package/contracts/issuers/disbursements/index.ts +0 -189
  154. package/contracts/issuers/email-themes/index.ts +0 -242
  155. package/contracts/issuers/escrow-accounts/index.ts +0 -81
  156. package/contracts/issuers/exchange-api-keys/index.ts +0 -144
  157. package/contracts/issuers/files/index.ts +0 -166
  158. package/contracts/issuers/files-public/index.ts +0 -166
  159. package/contracts/issuers/health/index.ts +0 -24
  160. package/contracts/issuers/index.ts +0 -112
  161. package/contracts/issuers/investor-accounts/index.ts +0 -148
  162. package/contracts/issuers/invites/index.ts +0 -129
  163. package/contracts/issuers/issuer/index.ts +0 -94
  164. package/contracts/issuers/issuer-bank-accounts/index.ts +0 -81
  165. package/contracts/issuers/issuer-payment-methods/index.ts +0 -136
  166. package/contracts/issuers/kyc/index.ts +0 -38
  167. package/contracts/issuers/login-histories/index.ts +0 -51
  168. package/contracts/issuers/notes/index.ts +0 -69
  169. package/contracts/issuers/offerings/index.ts +0 -206
  170. package/contracts/issuers/pages/index.ts +0 -138
  171. package/contracts/issuers/payment-methods/index.ts +0 -61
  172. package/contracts/issuers/portfolios/index.ts +0 -36
  173. package/contracts/issuers/rejection-reasons/index.ts +0 -32
  174. package/contracts/issuers/review/index.ts +0 -63
  175. package/contracts/issuers/secondary-customers/index.ts +0 -55
  176. package/contracts/issuers/secondary-orders/index.ts +0 -57
  177. package/contracts/issuers/secondary-trades/index.ts +0 -57
  178. package/contracts/issuers/secure-requests/index.ts +0 -34
  179. package/contracts/issuers/site-links/index.ts +0 -116
  180. package/contracts/issuers/site-settings/index.ts +0 -585
  181. package/contracts/issuers/sites/index.ts +0 -32
  182. package/contracts/issuers/tasks/index.ts +0 -111
  183. package/contracts/issuers/trades/index.ts +0 -132
  184. package/contracts/issuers/transactions/index.ts +0 -158
  185. package/contracts/issuers/user-manuals/index.ts +0 -62
  186. package/contracts/issuers/user-settings/index.ts +0 -170
  187. package/contracts/issuers/users/index.ts +0 -126
  188. package/contracts/secondaries/accounts/index.ts +0 -58
  189. package/contracts/secondaries/index.ts +0 -23
  190. package/contracts/secondaries/secondary-customers/index.ts +0 -55
  191. package/contracts/secondaries/secondary-issuers/index.ts +0 -94
  192. package/contracts/secondaries/secondary-orders/index.ts +0 -56
  193. package/contracts/secondaries/secondary-securities/index.ts +0 -95
  194. package/contracts/secondaries/secondary-trades/index.ts +0 -56
@@ -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: z.preprocess(
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.type';
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';
@@ -132,6 +134,7 @@ export const CheckResultsSchema = z.object({
132
134
  export type CheckResults = z.infer<typeof CheckResultsSchema>;
133
135
 
134
136
  export const TradeIdPrefix = 'trade';
137
+ export const TradeSnapshotIdPrefix = 'trade_snapshot';
135
138
 
136
139
  export const tradeIdSchema = z.string().refine(
137
140
  (value) => {
@@ -170,6 +173,21 @@ export const tradeIdOrTidSchema = z.union([
170
173
  .openapi({ example: 'tid_00041061050r3gg28a1c60t3gf' }),
171
174
  ]);
172
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
+
173
191
  export enum SaStatus {
174
192
  PENDING = BaseStatus.PENDING,
175
193
  SIGNED = BaseStatus.SIGNED,
@@ -274,9 +292,21 @@ export type TradeBalanceResultZod = z.infer<typeof TradeBalanceResultZod>;
274
292
 
275
293
  export const TradeZod = IBaseEntity.extend({
276
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(),
277
303
  accountId: accountIdSchema.nullable(),
278
304
  offeringId: z.lazy(() => offeringIdSchema.nullable()),
279
305
  paymentMethodId: z.lazy(() => paymentMethodIdSchema).nullable(),
306
+ paymentMethod: z
307
+ .lazy(() => PaymentMethodResponse)
308
+ .optional()
309
+ .nullable(),
280
310
  userId: z.lazy(() => userIdSchema.nullable()),
281
311
  tradeNumber: z.string(),
282
312
  ip: z.string().nullable(),
@@ -342,6 +372,21 @@ export const TradeZod = IBaseEntity.extend({
342
372
  });
343
373
  export type TradeZod = z.infer<typeof TradeZod>;
344
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
+
345
390
  export const IPaginatedTrade = z.object({
346
391
  items: z.array(TradeZod),
347
392
  meta: IPaginationMeta,
@@ -424,6 +469,7 @@ export const TradeFiltersZod = z.object({
424
469
  .openapi({
425
470
  example: 'issuer_01jfw4q6qef30s6fpqtsxw94ya',
426
471
  }),
472
+ snapshotEvent: z.nativeEnum(SnapshotEvent).optional(),
427
473
  offeringType: z.nativeEnum(OfferingType).optional(),
428
474
  managedBy: z.nativeEnum(ManagedByType).optional(),
429
475
  platform: z.nativeEnum(Platforms).optional(),
@@ -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 { IPaginationMeta, TrustedContactRelationship } from './common.types';
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: z.string().email().openapi({ example: 'john.doe@example.com' }),
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: z
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,
@@ -8,9 +8,10 @@ import {
8
8
  ManagedByType,
9
9
  OfferingType,
10
10
  PortalType,
11
+ StringToBooleanSchema,
11
12
  UserRole,
12
- UserStatus,
13
13
  UserType,
14
+ EmailSchema,
14
15
  } from './common.types';
15
16
  import { dateOrString, IBaseEntity } from './entity.types';
16
17
  import { PhoneZodSchema } from './phone.type';
@@ -64,7 +65,7 @@ export const GetMeResponse = IBaseEntity.extend({
64
65
  email: z.string().email(),
65
66
  provider: z.string(),
66
67
  active: z.boolean(),
67
- status: z.lazy(() => z.nativeEnum(UserStatus)),
68
+ locked: z.boolean(),
68
69
  lastLoginAt: dateOrString.nullable(),
69
70
  loginCount: z.number(),
70
71
  role: z.string(),
@@ -147,11 +148,7 @@ export const UserMeUpdateZod = z.object({
147
148
  firstName: z.string().optional(),
148
149
  lastName: z.string().optional(),
149
150
  password: z.string().min(6).optional(),
150
- email: z
151
- .string()
152
- .email()
153
- .transform((val) => val.toLowerCase())
154
- .optional(),
151
+ email: EmailSchema.optional(),
155
152
  });
156
153
 
157
154
  export const UserZod = IBaseEntity.extend({
@@ -162,7 +159,7 @@ export const UserZod = IBaseEntity.extend({
162
159
  onboarding: z.string().nullable(),
163
160
  account: AccountWithoutUsersZod.optional(),
164
161
  active: z.boolean(),
165
- status: z.nativeEnum(UserStatus),
162
+ locked: z.boolean(),
166
163
  userLogin: IBaseEntity.extend({
167
164
  firstName: z.string(),
168
165
  lastName: z.string(),
@@ -184,27 +181,9 @@ export const UserFiltersZod = z.object({
184
181
  search: z.string().max(50).optional(),
185
182
  role: z.nativeEnum(UserRole).optional(),
186
183
  portal: z.string().optional(),
187
- status: z.nativeEnum(UserStatus).optional(),
188
- active: z
189
- .string()
190
- .optional()
191
- .refine((v) => !v || v === 'true' || v === 'false', {
192
- message: 'active must be a boolean string',
193
- })
194
- .transform((v) => {
195
- if (!v) return undefined;
196
- return v === 'true';
197
- }),
198
- twoFactorEnabled: z
199
- .string()
200
- .optional()
201
- .refine((v) => !v || v === 'true' || v === 'false', {
202
- message: 'twoFactorEnabled must be a boolean string',
203
- })
204
- .transform((v) => {
205
- if (!v) return undefined;
206
- return v === 'true';
207
- }),
184
+ locked: StringToBooleanSchema.optional(),
185
+ active: StringToBooleanSchema.optional(),
186
+ twoFactorEnabled: StringToBooleanSchema.optional(),
208
187
  });
209
188
 
210
189
  const usersInclude = z.enum(['account', 'role']);
@@ -279,7 +258,7 @@ export type IssuerUsersStatusUpdateResponse = z.infer<
279
258
  >;
280
259
 
281
260
  export const UpdateLockedStatus = z.object({
282
- status: z.nativeEnum(UserStatus),
261
+ locked: z.boolean(),
283
262
  });
284
263
 
285
264
  export type UpdateLockedStatus = z.infer<typeof UpdateLockedStatus>;
@@ -290,7 +269,7 @@ export const UsersSummaryFilterZod = z.object({
290
269
  portalType: z.nativeEnum(PortalType).optional(),
291
270
  search: z.string().trim().max(50).optional(),
292
271
  selectRole: z.nativeEnum(UserRole).optional(),
293
- status: z.nativeEnum(UserStatus).optional(),
272
+ locked: StringToBooleanSchema.optional(),
294
273
  });
295
274
  export type UsersSummaryFilterZod = z.infer<typeof UsersSummaryFilterZod>;
296
275
 
@@ -304,7 +283,7 @@ export const UsersSummaryZod = z.object({
304
283
  portalType: z.string(),
305
284
  loginCount: z.number().int(),
306
285
  lastLogin: z.date(),
307
- status: z.nativeEnum(UserStatus),
286
+ locked: z.boolean(),
308
287
  });
309
288
  export type UsersSummaryZod = z.infer<typeof UsersSummaryZod>;
310
289
 
@@ -14,7 +14,7 @@ import {
14
14
  TradeLineItemQuery,
15
15
  TradeLineItemResponse,
16
16
  TradeLineItemUpdate,
17
- } from '../../../common/types/trade-line-item.type';
17
+ } from '../../../common/types/trade-line-item.types';
18
18
 
19
19
  const c = initContract();
20
20
 
@@ -26,7 +26,7 @@ import {
26
26
  PostTradeLineItem,
27
27
  TradeLineItemQuery,
28
28
  TradeLineItemResponse,
29
- } from '../../../common/types/trade-line-item.type';
29
+ } from '../../../common/types/trade-line-item.types';
30
30
 
31
31
  const c = initContract();
32
32
 
package/index.ts ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @dalmore/api-contracts
3
+ * Main entry point - re-exports clients contract and types
4
+ */
5
+
6
+ // Re-export clients contract
7
+ export * from './contracts/clients/index.js';
8
+
9
+ // Re-export all common types
10
+ export * from './common/types/index.js';
package/package.json CHANGED
@@ -1,48 +1,42 @@
1
1
  {
2
2
  "name": "@dalmore/api-contracts",
3
- "version": "0.0.0-dev.d8ef117",
3
+ "version": "0.0.0-dev.e325dbb",
4
4
  "description": "Type-safe API contracts for Dalmore Client Portal",
5
- "main": "./contracts/index.ts",
6
- "types": "./contracts/index.ts",
5
+ "type": "module",
6
+ "main": "./index.ts",
7
+ "types": "./index.ts",
7
8
  "exports": {
8
9
  ".": {
9
- "types": "./contracts/index.ts",
10
- "default": "./contracts/index.ts"
11
- },
12
- "./compliance": {
13
- "types": "./contracts/compliance/index.ts",
14
- "default": "./contracts/compliance/index.ts"
15
- },
16
- "./investors": {
17
- "types": "./contracts/investors/index.ts",
18
- "default": "./contracts/investors/index.ts"
19
- },
20
- "./issuers": {
21
- "types": "./contracts/issuers/index.ts",
22
- "default": "./contracts/issuers/index.ts"
10
+ "types": "./index.ts",
11
+ "import": "./index.ts",
12
+ "default": "./index.ts"
23
13
  },
24
14
  "./clients": {
25
15
  "types": "./contracts/clients/index.ts",
16
+ "import": "./contracts/clients/index.ts",
26
17
  "default": "./contracts/clients/index.ts"
27
18
  },
28
- "./secondaries": {
29
- "types": "./contracts/secondaries/index.ts",
30
- "default": "./contracts/secondaries/index.ts"
31
- },
32
- "./compliance-apikey": {
33
- "types": "./contracts/compliance-apikey/index.ts",
34
- "default": "./contracts/compliance-apikey/index.ts"
35
- },
36
19
  "./types": {
37
20
  "types": "./common/types/index.ts",
21
+ "import": "./common/types/index.ts",
38
22
  "default": "./common/types/index.ts"
39
- },
40
- "./types/*": {
41
- "types": "./common/types/*.ts",
42
- "default": "./common/types/*.ts"
23
+ }
24
+ },
25
+ "typesVersions": {
26
+ "*": {
27
+ ".": [
28
+ "./index.ts"
29
+ ],
30
+ "clients": [
31
+ "./contracts/clients/index.ts"
32
+ ],
33
+ "types": [
34
+ "./common/types/index.ts"
35
+ ]
43
36
  }
44
37
  },
45
38
  "files": [
39
+ "index.ts",
46
40
  "contracts",
47
41
  "common"
48
42
  ],
@@ -68,9 +62,6 @@
68
62
  "typeid-js": "^1.2.0",
69
63
  "zod": "^3.24.4"
70
64
  },
71
- "devDependencies": {
72
- "typescript": "^5.8.3"
73
- },
74
65
  "engines": {
75
66
  "node": ">=24.0.0 <25.0.0"
76
67
  }
@@ -1,82 +0,0 @@
1
- import { initContract } from '@ts-rest/core';
2
- import {
3
- accountIdSchema,
4
- BadRequestError,
5
- ForbiddenError,
6
- InternalError,
7
- NotFoundError,
8
- UnauthorizedError,
9
- } from '../../../common/types';
10
- import {
11
- accountContactIdSchema,
12
- CompliancePatchAccountContactZod,
13
- IAccountContact,
14
- } from '../../../common/types/account-contact.types';
15
- import { z } from 'zod';
16
-
17
- const c = initContract();
18
-
19
- export const accountContactsContract = c.router(
20
- {
21
- getAccountContacts: {
22
- summary: '[ADMIN] Get Account Contacts',
23
- method: 'GET',
24
- path: '',
25
- metadata: {
26
- auth: true,
27
- },
28
- query: z.object({
29
- accountId: accountIdSchema,
30
- }),
31
- responses: {
32
- 200: z.array(IAccountContact),
33
- 401: UnauthorizedError,
34
- 403: ForbiddenError,
35
- 500: InternalError,
36
- },
37
- },
38
- getAccountContact: {
39
- summary: '[ADMIN] Get account contact by id',
40
- method: 'GET',
41
- path: '/:id',
42
- metadata: {
43
- auth: true,
44
- },
45
- pathParams: z.object({
46
- id: accountContactIdSchema,
47
- }),
48
- query: z.object({
49
- accountId: accountIdSchema,
50
- }),
51
- responses: {
52
- 200: IAccountContact,
53
- 401: UnauthorizedError,
54
- 403: ForbiddenError,
55
- 404: NotFoundError,
56
- },
57
- },
58
- patchAccountContact: {
59
- summary: '[ADMIN] Update account contact',
60
- method: 'PATCH',
61
- path: '/:id',
62
- metadata: {
63
- auth: true,
64
- },
65
- pathParams: z.object({
66
- id: accountContactIdSchema,
67
- }),
68
- body: CompliancePatchAccountContactZod,
69
- responses: {
70
- 200: IAccountContact,
71
- 400: BadRequestError,
72
- 401: UnauthorizedError,
73
- 403: ForbiddenError,
74
- 404: NotFoundError,
75
- 500: InternalError,
76
- },
77
- },
78
- },
79
- {
80
- pathPrefix: 'account-contacts',
81
- },
82
- );
@@ -1,142 +0,0 @@
1
- import { initContract } from '@ts-rest/core';
2
- import { z } from 'zod';
3
- import {
4
- BadRequestError,
5
- ForbiddenError,
6
- InternalError,
7
- NotFoundError,
8
- PaginationOptionsZod,
9
- PreconditionFailedError,
10
- UnauthorizedError,
11
- } from '../../../common/types';
12
- import {
13
- AccountManagerDeleteQuery,
14
- AccountManagerDeleteResponse,
15
- accountManagerIdSchema,
16
- AccountManagersIncludeQuery,
17
- IAccountManagerZod,
18
- IPaginatedAccountManager,
19
- PatchAccountManagerZod,
20
- PostAccountManagerZod,
21
- SetDefaultAccountManagerForAllAccountsResponse,
22
- } from '../../../common/types/account-manager.types';
23
-
24
- const c = initContract();
25
-
26
- export const accountManagersContract = c.router(
27
- {
28
- getAccountManagers: {
29
- summary: 'Get account managers',
30
- method: 'GET',
31
- path: '',
32
- metadata: {
33
- auth: true,
34
- },
35
- query: PaginationOptionsZod.merge(AccountManagersIncludeQuery),
36
- responses: {
37
- 200: IPaginatedAccountManager,
38
- 400: BadRequestError,
39
- 401: UnauthorizedError,
40
- 403: ForbiddenError,
41
- 500: InternalError,
42
- },
43
- },
44
- getAccountManager: {
45
- summary: 'Get account manager by id',
46
- method: 'GET',
47
- path: '/:id',
48
- metadata: {
49
- auth: true,
50
- },
51
- query: z.object({}).merge(AccountManagersIncludeQuery),
52
- pathParams: z.object({
53
- id: accountManagerIdSchema,
54
- }),
55
- responses: {
56
- 200: IAccountManagerZod,
57
- 400: BadRequestError,
58
- 401: UnauthorizedError,
59
- 403: ForbiddenError,
60
- 404: NotFoundError,
61
- 500: InternalError,
62
- },
63
- },
64
- setDefaultAccountManagerForAllAccounts: {
65
- summary: '[ADMIN] Set default account manager for all accounts',
66
- method: 'PATCH',
67
- path: '/set-default-for-all-accounts',
68
- metadata: {
69
- auth: true,
70
- },
71
- body: z.object({}),
72
- responses: {
73
- 200: SetDefaultAccountManagerForAllAccountsResponse,
74
- 400: BadRequestError,
75
- 401: UnauthorizedError,
76
- 403: ForbiddenError,
77
- 500: InternalError,
78
- },
79
- },
80
- patchAccountManager: {
81
- summary: 'Update account manager by id',
82
- method: 'PATCH',
83
- path: '/:id',
84
- metadata: {
85
- auth: true,
86
- },
87
- pathParams: z.object({
88
- id: accountManagerIdSchema,
89
- }),
90
- body: PatchAccountManagerZod,
91
- responses: {
92
- 201: IAccountManagerZod,
93
- 400: BadRequestError,
94
- 401: UnauthorizedError,
95
- 403: ForbiddenError,
96
- 404: NotFoundError,
97
- 500: InternalError,
98
- },
99
- },
100
- postAccountManager: {
101
- summary: 'Create account manager',
102
- method: 'POST',
103
- path: '',
104
- metadata: {
105
- auth: true,
106
- },
107
- body: PostAccountManagerZod,
108
- responses: {
109
- 201: IAccountManagerZod,
110
- 400: BadRequestError,
111
- 401: UnauthorizedError,
112
- 403: ForbiddenError,
113
- 500: InternalError,
114
- },
115
- },
116
- deleteAccountManager: {
117
- summary: 'Delete account manager by id',
118
- method: 'DELETE',
119
- path: '/:id',
120
- metadata: {
121
- auth: true,
122
- },
123
- pathParams: z.object({
124
- id: accountManagerIdSchema,
125
- }),
126
- query: AccountManagerDeleteQuery,
127
- responses: {
128
- 201: AccountManagerDeleteResponse,
129
- 400: BadRequestError,
130
- 401: UnauthorizedError,
131
- 403: ForbiddenError,
132
- 404: NotFoundError,
133
- 412: PreconditionFailedError,
134
- 500: InternalError,
135
- },
136
- },
137
- },
138
-
139
- {
140
- pathPrefix: 'account-managers',
141
- },
142
- );