@dalmore/api-contracts 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -0
- package/common/types/account-contact.types.ts +98 -0
- package/common/types/account-detail.types.ts +27 -0
- package/common/types/account-integration.types.ts +143 -0
- package/common/types/account-manager.types.ts +114 -0
- package/common/types/account.types.ts +239 -0
- package/common/types/activity.types.ts +236 -0
- package/common/types/address.types.ts +41 -0
- package/common/types/aic.types.ts +246 -0
- package/common/types/aml.types.ts +18 -0
- package/common/types/api-key-logs.types.ts +66 -0
- package/common/types/api-keys.types.ts +69 -0
- package/common/types/asset.types.ts +335 -0
- package/common/types/auth.types.ts +343 -0
- package/common/types/batch-jobs.types.ts +151 -0
- package/common/types/bonus-tier.types.ts +115 -0
- package/common/types/cart.types.ts +18 -0
- package/common/types/checklist-items.types.ts +70 -0
- package/common/types/checklist.types.ts +97 -0
- package/common/types/common.types.ts +1501 -0
- package/common/types/comply-advantage-api.types.ts +316 -0
- package/common/types/comply-advantage.types.ts +25 -0
- package/common/types/contact-us.types.ts +107 -0
- package/common/types/countries.types.ts +375 -0
- package/common/types/covered-person.types.ts +274 -0
- package/common/types/dashboard.types.ts +799 -0
- package/common/types/data-record.types.ts +325 -0
- package/common/types/data-room.types.ts +242 -0
- package/common/types/default-theme-config.types.ts +87 -0
- package/common/types/disbursement-adjustment.types.ts +32 -0
- package/common/types/disbursement-approval-user.types.ts +100 -0
- package/common/types/disbursement-review.types.ts +110 -0
- package/common/types/disbursement-transaction.types.ts +72 -0
- package/common/types/disbursements.types.ts +310 -0
- package/common/types/domain-filter.types.ts +55 -0
- package/common/types/email-theme.types.ts +442 -0
- package/common/types/entity.types.ts +15 -0
- package/common/types/error-responses.types.ts +135 -0
- package/common/types/escrow-account.types.ts +104 -0
- package/common/types/exchange-api-key.types.ts +121 -0
- package/common/types/exchange-import.types.ts +36 -0
- package/common/types/exchange-provider.types.ts +329 -0
- package/common/types/file.types.ts +461 -0
- package/common/types/health.types.ts +29 -0
- package/common/types/index.ts +48 -0
- package/common/types/individuals.types.ts +554 -0
- package/common/types/investor-account.types.ts +1168 -0
- package/common/types/investorAccountIdSchema.type.ts +0 -0
- package/common/types/investors-offering.types.ts +65 -0
- package/common/types/invite.types.ts +133 -0
- package/common/types/issuer-bank-account.types.ts +107 -0
- package/common/types/issuer-offering.types.ts +306 -0
- package/common/types/issuer-payment-method.types.ts +341 -0
- package/common/types/issuer.types.ts +312 -0
- package/common/types/job-item.types.ts +119 -0
- package/common/types/jobs.types.ts +171 -0
- package/common/types/kyb.types.ts +53 -0
- package/common/types/kyc.types.ts +188 -0
- package/common/types/legal-entity.types.ts +185 -0
- package/common/types/login-history.types.ts +46 -0
- package/common/types/mail-template.types.ts +436 -0
- package/common/types/north-cap-integration.types.ts +190 -0
- package/common/types/note.types.ts +109 -0
- package/common/types/notification.types.ts +58 -0
- package/common/types/notion-api.types.ts +374 -0
- package/common/types/notion-database.types.ts +125 -0
- package/common/types/notion-page.types.ts +267 -0
- package/common/types/offering-reports.types.ts +153 -0
- package/common/types/offering-submission.types.ts +314 -0
- package/common/types/offering.types.ts +590 -0
- package/common/types/page-revision.types.ts +86 -0
- package/common/types/page.types.ts +436 -0
- package/common/types/password.type.ts +15 -0
- package/common/types/payment-methods.types.ts +298 -0
- package/common/types/phone.type.ts +27 -0
- package/common/types/portfolio.types.ts +50 -0
- package/common/types/privacy-policy-and-tos.types.ts +231 -0
- package/common/types/queue.types.ts +112 -0
- package/common/types/registered-reps.types.ts +25 -0
- package/common/types/rejection-reasons.types.ts +56 -0
- package/common/types/reminder-config.types.ts +40 -0
- package/common/types/review.types.ts +133 -0
- package/common/types/role.types.ts +26 -0
- package/common/types/secondary-customer.types.ts +66 -0
- package/common/types/secondary-issuer.types.ts +50 -0
- package/common/types/secondary-order.types.ts +58 -0
- package/common/types/secondary-security.types.ts +60 -0
- package/common/types/secondary-trade.entity.ts +16 -0
- package/common/types/secondary-trade.types.ts +87 -0
- package/common/types/secure-request.types.ts +68 -0
- package/common/types/signer.types.ts +651 -0
- package/common/types/site-link.types.ts +166 -0
- package/common/types/site-settings.types.ts +726 -0
- package/common/types/site.types.ts +270 -0
- package/common/types/sms.types.ts +30 -0
- package/common/types/state-machine.types.ts +177 -0
- package/common/types/states.types.ts +163 -0
- package/common/types/subdoc-preview.types.ts +35 -0
- package/common/types/task.types.ts +258 -0
- package/common/types/trade-adjustment.type.ts +33 -0
- package/common/types/trade-line-item.type.ts +132 -0
- package/common/types/trade.types.ts +849 -0
- package/common/types/transaction.types.ts +198 -0
- package/common/types/trusted-contact.types.ts +122 -0
- package/common/types/typography.types.ts +75 -0
- package/common/types/user-manual.types.ts +290 -0
- package/common/types/user-setting.types.ts +133 -0
- package/common/types/user.types.ts +318 -0
- package/common/types/webhook.types.ts +588 -0
- package/common/types/zip.type.ts +36 -0
- package/contracts/clients/accounts/index.ts +58 -0
- package/contracts/clients/aic/index.ts +59 -0
- package/contracts/clients/api-key-logs/index.ts +53 -0
- package/contracts/clients/api-keys/index.ts +73 -0
- package/contracts/clients/assets/index.ts +102 -0
- package/contracts/clients/auth/index.ts +33 -0
- package/contracts/clients/files/index.ts +166 -0
- package/contracts/clients/files-public/index.ts +166 -0
- package/contracts/clients/index.ts +42 -0
- package/contracts/clients/individuals/index.ts +93 -0
- package/contracts/clients/investor-accounts/index.ts +93 -0
- package/contracts/clients/issuers/index.ts +94 -0
- package/contracts/clients/legal-entities/index.ts +93 -0
- package/contracts/clients/offerings/index.ts +116 -0
- package/contracts/clients/secure-requests/index.ts +34 -0
- package/contracts/clients/trades/index.ts +122 -0
- package/contracts/compliance/account-contacts/index.ts +82 -0
- package/contracts/compliance/account-managers/index.ts +140 -0
- package/contracts/compliance/accounts/index.ts +185 -0
- package/contracts/compliance/activities/index.ts +55 -0
- package/contracts/compliance/aic/index.ts +60 -0
- package/contracts/compliance/api-keys/index.ts +91 -0
- package/contracts/compliance/assets/index.ts +122 -0
- package/contracts/compliance/auth/index.ts +134 -0
- package/contracts/compliance/batch-jobs/index.ts +62 -0
- package/contracts/compliance/checklist/index.ts +87 -0
- package/contracts/compliance/checklist-items/index.ts +86 -0
- package/contracts/compliance/covered-persons/index.ts +97 -0
- package/contracts/compliance/dashboard/index.ts +111 -0
- package/contracts/compliance/data-records/index.ts +116 -0
- package/contracts/compliance/data-rooms/index.ts +113 -0
- package/contracts/compliance/default-theme-configs/index.ts +95 -0
- package/contracts/compliance/disbursement/index.ts +165 -0
- package/contracts/compliance/disbursement-approval-users/index.ts +84 -0
- package/contracts/compliance/disbursement-transactions/index.ts +37 -0
- package/contracts/compliance/domain-filters/index.ts +117 -0
- package/contracts/compliance/email-themes/index.ts +284 -0
- package/contracts/compliance/escrow-accounts/index.ts +85 -0
- package/contracts/compliance/exchange-api-keys/index.ts +129 -0
- package/contracts/compliance/exchange-imports/index.ts +137 -0
- package/contracts/compliance/files/index.ts +267 -0
- package/contracts/compliance/files-public/index.ts +188 -0
- package/contracts/compliance/health/index.ts +26 -0
- package/contracts/compliance/index.ts +145 -0
- package/contracts/compliance/individuals/index.ts +57 -0
- package/contracts/compliance/investor-accounts/index.ts +137 -0
- package/contracts/compliance/invites/index.ts +137 -0
- package/contracts/compliance/issuer-bank-accounts/index.ts +81 -0
- package/contracts/compliance/issuer-payment-methods/index.ts +81 -0
- package/contracts/compliance/issuers/index.ts +97 -0
- package/contracts/compliance/job-items/index.ts +58 -0
- package/contracts/compliance/jobs/index.ts +59 -0
- package/contracts/compliance/kyb/index.ts +54 -0
- package/contracts/compliance/kyc/index.ts +77 -0
- package/contracts/compliance/legal-entities/index.ts +57 -0
- package/contracts/compliance/login-histories/index.ts +37 -0
- package/contracts/compliance/notes/index.ts +69 -0
- package/contracts/compliance/notion-databases/index.ts +107 -0
- package/contracts/compliance/notion-pages/index.ts +105 -0
- package/contracts/compliance/offering-reports/index.ts +149 -0
- package/contracts/compliance/offerings/index.ts +233 -0
- package/contracts/compliance/pages/index.ts +178 -0
- package/contracts/compliance/payment-methods/index.ts +57 -0
- package/contracts/compliance/rejection-reasons/index.ts +32 -0
- package/contracts/compliance/review/index.ts +169 -0
- package/contracts/compliance/roles/index.ts +34 -0
- package/contracts/compliance/secondary-customers/index.ts +77 -0
- package/contracts/compliance/secondary-orders/index.ts +60 -0
- package/contracts/compliance/secondary-trades/index.ts +100 -0
- package/contracts/compliance/secure-requests/index.ts +54 -0
- package/contracts/compliance/signer/index.ts +369 -0
- package/contracts/compliance/site-links/index.ts +128 -0
- package/contracts/compliance/site-settings/index.ts +669 -0
- package/contracts/compliance/sites/index.ts +56 -0
- package/contracts/compliance/state-machine/index.ts +94 -0
- package/contracts/compliance/tasks/index.ts +91 -0
- package/contracts/compliance/third-parties/index.ts +52 -0
- package/contracts/compliance/trade-line-items/index.ts +59 -0
- package/contracts/compliance/trades/index.ts +230 -0
- package/contracts/compliance/transactions/index.ts +161 -0
- package/contracts/compliance/user-manuals/index.ts +271 -0
- package/contracts/compliance/user-settings/index.ts +189 -0
- package/contracts/compliance/users/index.ts +200 -0
- package/contracts/compliance/webhooks/index.ts +41 -0
- package/contracts/compliance-apikey/accounts/index.ts +58 -0
- package/contracts/compliance-apikey/index.ts +14 -0
- package/contracts/index.ts +6 -0
- package/contracts/investors/account-contacts/index.ts +58 -0
- package/contracts/investors/aic/index.ts +59 -0
- package/contracts/investors/assets/index.ts +61 -0
- package/contracts/investors/auth/index.ts +116 -0
- package/contracts/investors/bonus-tiers/index.ts +37 -0
- package/contracts/investors/cart/index.ts +75 -0
- package/contracts/investors/contact-us/index.ts +48 -0
- package/contracts/investors/data-records/index.ts +113 -0
- package/contracts/investors/data-rooms/index.ts +96 -0
- package/contracts/investors/files/index.ts +167 -0
- package/contracts/investors/files-public/index.ts +185 -0
- package/contracts/investors/index.ts +72 -0
- package/contracts/investors/individuals/index.ts +99 -0
- package/contracts/investors/investor-accounts/index.ts +110 -0
- package/contracts/investors/issuer-payment-methods/index.ts +36 -0
- package/contracts/investors/issuers/index.ts +30 -0
- package/contracts/investors/legal-entities/index.ts +93 -0
- package/contracts/investors/notes/index.ts +69 -0
- package/contracts/investors/offerings/index.ts +93 -0
- package/contracts/investors/pages/index.ts +88 -0
- package/contracts/investors/payment-methods/index.ts +149 -0
- package/contracts/investors/portfolios/index.ts +53 -0
- package/contracts/investors/sites/index.ts +96 -0
- package/contracts/investors/tasks/index.ts +111 -0
- package/contracts/investors/trade-line-items/index.ts +75 -0
- package/contracts/investors/trades/index.ts +114 -0
- package/contracts/investors/transactions/index.ts +37 -0
- package/contracts/investors/trusted-contacts/index.ts +93 -0
- package/contracts/investors/user-manuals/index.ts +62 -0
- package/contracts/investors/user-settings/index.ts +170 -0
- package/contracts/investors/users/index.ts +45 -0
- package/contracts/investors/webhooks/index.ts +30 -0
- package/contracts/issuers/account-contacts/index.ts +76 -0
- package/contracts/issuers/account-integrations/index.ts +97 -0
- package/contracts/issuers/accounts/index.ts +92 -0
- package/contracts/issuers/activities/index.ts +54 -0
- package/contracts/issuers/aic/index.ts +39 -0
- package/contracts/issuers/api-key-logs/index.ts +53 -0
- package/contracts/issuers/api-keys/index.ts +93 -0
- package/contracts/issuers/assets/index.ts +122 -0
- package/contracts/issuers/auth/index.ts +152 -0
- package/contracts/issuers/bonus-tiers/index.ts +37 -0
- package/contracts/issuers/contact-us/index.ts +48 -0
- package/contracts/issuers/covered-persons/index.ts +136 -0
- package/contracts/issuers/dashboard/index.ts +72 -0
- package/contracts/issuers/data-records/index.ts +257 -0
- package/contracts/issuers/data-rooms/index.ts +134 -0
- package/contracts/issuers/disbursement-approval-users/index.ts +82 -0
- package/contracts/issuers/disbursement-transactions/index.ts +53 -0
- package/contracts/issuers/disbursements/index.ts +153 -0
- package/contracts/issuers/email-themes/index.ts +242 -0
- package/contracts/issuers/escrow-accounts/index.ts +81 -0
- package/contracts/issuers/exchange-api-keys/index.ts +144 -0
- package/contracts/issuers/files/index.ts +166 -0
- package/contracts/issuers/files-public/index.ts +166 -0
- package/contracts/issuers/health/index.ts +24 -0
- package/contracts/issuers/index.ts +112 -0
- package/contracts/issuers/investor-accounts/index.ts +126 -0
- package/contracts/issuers/invites/index.ts +129 -0
- package/contracts/issuers/issuer/index.ts +94 -0
- package/contracts/issuers/issuer-bank-accounts/index.ts +81 -0
- package/contracts/issuers/issuer-payment-methods/index.ts +136 -0
- package/contracts/issuers/kyc/index.ts +38 -0
- package/contracts/issuers/login-histories/index.ts +51 -0
- package/contracts/issuers/notes/index.ts +69 -0
- package/contracts/issuers/offerings/index.ts +206 -0
- package/contracts/issuers/pages/index.ts +138 -0
- package/contracts/issuers/payment-methods/index.ts +61 -0
- package/contracts/issuers/portfolios/index.ts +36 -0
- package/contracts/issuers/rejection-reasons/index.ts +32 -0
- package/contracts/issuers/review/index.ts +63 -0
- package/contracts/issuers/secondary-customers/index.ts +55 -0
- package/contracts/issuers/secondary-orders/index.ts +57 -0
- package/contracts/issuers/secondary-trades/index.ts +57 -0
- package/contracts/issuers/secure-requests/index.ts +34 -0
- package/contracts/issuers/site-links/index.ts +116 -0
- package/contracts/issuers/site-settings/index.ts +585 -0
- package/contracts/issuers/sites/index.ts +32 -0
- package/contracts/issuers/tasks/index.ts +111 -0
- package/contracts/issuers/trades/index.ts +132 -0
- package/contracts/issuers/transactions/index.ts +158 -0
- package/contracts/issuers/user-manuals/index.ts +62 -0
- package/contracts/issuers/user-settings/index.ts +170 -0
- package/contracts/issuers/users/index.ts +126 -0
- package/contracts/secondaries/accounts/index.ts +58 -0
- package/contracts/secondaries/index.ts +23 -0
- package/contracts/secondaries/secondary-customers/index.ts +55 -0
- package/contracts/secondaries/secondary-issuers/index.ts +94 -0
- package/contracts/secondaries/secondary-orders/index.ts +56 -0
- package/contracts/secondaries/secondary-securities/index.ts +95 -0
- package/contracts/secondaries/secondary-trades/index.ts +56 -0
- package/package.json +74 -0
package/README.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# @dalmore/api-contracts
|
|
2
|
+
|
|
3
|
+
Type-safe API contracts for Dalmore Client Portal, powered by [ts-rest](https://ts-rest.com/).
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Production (stable releases from main branch)
|
|
9
|
+
npm install @dalmore/api-contracts
|
|
10
|
+
|
|
11
|
+
# Development (latest from dev branch)
|
|
12
|
+
npm install @dalmore/api-contracts@dev
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
### Import specific contracts (recommended for tree-shaking)
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { complianceContract } from '@dalmore/api-contracts/compliance';
|
|
21
|
+
import { investorsContract } from '@dalmore/api-contracts/investors';
|
|
22
|
+
import { issuersContract } from '@dalmore/api-contracts/issuers';
|
|
23
|
+
import { clientsContract } from '@dalmore/api-contracts/clients';
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Import types
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import type { IInvestorAccount } from '@dalmore/api-contracts/types/investor-account.types';
|
|
30
|
+
import type { ITrade } from '@dalmore/api-contracts/types/trade.types';
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Create a typed client
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
import { complianceContract } from '@dalmore/api-contracts/compliance';
|
|
37
|
+
import { initClient } from '@ts-rest/core';
|
|
38
|
+
|
|
39
|
+
const client = initClient(complianceContract, {
|
|
40
|
+
baseUrl: 'https://platform.dalmoregroup.com',
|
|
41
|
+
baseHeaders: {
|
|
42
|
+
Authorization: `Bearer ${token}`,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// Fully typed API calls
|
|
47
|
+
const { status, body } = await client.accounts.getAccounts({
|
|
48
|
+
query: { page: 1, limit: 10 },
|
|
49
|
+
});
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Peer Dependencies
|
|
53
|
+
|
|
54
|
+
This package requires the following peer dependencies:
|
|
55
|
+
|
|
56
|
+
- `@ts-rest/core` ^3.0.0
|
|
57
|
+
- `zod` ^3.0.0
|
|
58
|
+
|
|
59
|
+
## Available Contracts
|
|
60
|
+
|
|
61
|
+
- `complianceContract` - Compliance portal API
|
|
62
|
+
- `investorsContract` - Investor portal API
|
|
63
|
+
- `issuersContract` - Issuer portal API
|
|
64
|
+
- `clientsContract` - Client API (API key auth)
|
|
65
|
+
- `secondariesContract` - Secondaries API
|
|
66
|
+
- `complianceApiKeyContract` - Compliance API (API key auth)
|
|
67
|
+
|
|
68
|
+
## TypeScript Configuration
|
|
69
|
+
|
|
70
|
+
This package ships TypeScript source files for maximum type safety. Your `tsconfig.json` should include:
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"compilerOptions": {
|
|
75
|
+
"moduleResolution": "node",
|
|
76
|
+
"esModuleInterop": true
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { extendZodWithOpenApi } from '@anatine/zod-openapi';
|
|
2
|
+
import { TypeID } from 'typeid-js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { accountIdSchema } from './account.types';
|
|
5
|
+
import { PhoneZodSchema } from './phone.type';
|
|
6
|
+
import {
|
|
7
|
+
AccountContactType,
|
|
8
|
+
AccountZod,
|
|
9
|
+
IPaginationMeta,
|
|
10
|
+
} from './common.types';
|
|
11
|
+
import { IBaseEntity } from './entity.types';
|
|
12
|
+
import { PhoneNumberData } from './sms.types';
|
|
13
|
+
|
|
14
|
+
extendZodWithOpenApi(z);
|
|
15
|
+
|
|
16
|
+
export const accountContactIdSchema = z.string().refine(
|
|
17
|
+
(value) => {
|
|
18
|
+
try {
|
|
19
|
+
const tid = TypeID.fromString(value);
|
|
20
|
+
return tid.getType() === 'account_contact';
|
|
21
|
+
} catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
message:
|
|
27
|
+
'Invalid account contact ID format. Must be a valid TypeID with "account_contact" prefix.',
|
|
28
|
+
},
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
export const IAccountContact = IBaseEntity.extend({
|
|
32
|
+
id: accountContactIdSchema,
|
|
33
|
+
title: z.string().nullable().openapi({ example: 'Mr' }),
|
|
34
|
+
firstName: z.string().nullable().openapi({ example: 'John' }),
|
|
35
|
+
lastName: z.string().nullable().openapi({ example: 'Doe' }),
|
|
36
|
+
email: z
|
|
37
|
+
.string()
|
|
38
|
+
.email()
|
|
39
|
+
.nullable()
|
|
40
|
+
.openapi({ example: 'john.doe@example.com' }),
|
|
41
|
+
phone: PhoneNumberData.nullable().optional().openapi({ example: null }),
|
|
42
|
+
type: z
|
|
43
|
+
.nativeEnum(AccountContactType)
|
|
44
|
+
.openapi({ example: AccountContactType.GENERAL }),
|
|
45
|
+
accountId: accountIdSchema.openapi({
|
|
46
|
+
example: 'account_01je6ht4b8fbmttkzh2hs82xqp',
|
|
47
|
+
}),
|
|
48
|
+
account: AccountZod.optional().nullable(),
|
|
49
|
+
referenceLink: z.string().nullable().optional(),
|
|
50
|
+
});
|
|
51
|
+
export type IAccountContact = z.infer<typeof IAccountContact>;
|
|
52
|
+
|
|
53
|
+
export const PatchAccountContactZod = z.object({
|
|
54
|
+
title: z
|
|
55
|
+
.string()
|
|
56
|
+
.min(1)
|
|
57
|
+
.max(50)
|
|
58
|
+
.nullable()
|
|
59
|
+
.optional()
|
|
60
|
+
.openapi({ example: 'Mr' }),
|
|
61
|
+
firstName: z.string().min(1).max(150).openapi({ example: 'John' }),
|
|
62
|
+
lastName: z.string().min(1).max(150).openapi({ example: 'Doe' }),
|
|
63
|
+
email: z.string().email().openapi({ example: 'john.doe@example.com' }),
|
|
64
|
+
phone: PhoneZodSchema.nullable()
|
|
65
|
+
.optional()
|
|
66
|
+
.openapi({ example: '+12124567890' }),
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
export type PatchAccountContactZod = z.infer<typeof PatchAccountContactZod>;
|
|
70
|
+
|
|
71
|
+
export const CompliancePatchAccountContactZod = PatchAccountContactZod.extend({
|
|
72
|
+
accountId: accountIdSchema.openapi({
|
|
73
|
+
example: 'account_01je6ht4b8fbmttkzh2hs82xqp',
|
|
74
|
+
}),
|
|
75
|
+
referenceLink: z
|
|
76
|
+
.string()
|
|
77
|
+
.url()
|
|
78
|
+
.max(2048)
|
|
79
|
+
.nullable()
|
|
80
|
+
.optional()
|
|
81
|
+
.openapi({ example: 'https://www.google.com' }),
|
|
82
|
+
});
|
|
83
|
+
export type CompliancePatchAccountContactZod = z.infer<
|
|
84
|
+
typeof CompliancePatchAccountContactZod
|
|
85
|
+
>;
|
|
86
|
+
|
|
87
|
+
export const IPaginatedAccountContact = z.object({
|
|
88
|
+
items: z.array(IAccountContact),
|
|
89
|
+
meta: IPaginationMeta,
|
|
90
|
+
});
|
|
91
|
+
export type IPaginatedAccountContact = z.infer<typeof IPaginatedAccountContact>;
|
|
92
|
+
|
|
93
|
+
export const AccountContactDeleteResponse = z.object({
|
|
94
|
+
status: z.enum(['pass', 'fail']),
|
|
95
|
+
});
|
|
96
|
+
export type AccountContactDeleteResponse = z.infer<
|
|
97
|
+
typeof AccountContactDeleteResponse
|
|
98
|
+
>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { IAsset } from './asset.types';
|
|
3
|
+
import { IIssuer } from './issuer.types';
|
|
4
|
+
import { IOffering } from './offering.types';
|
|
5
|
+
import { IIssuerPaymentMethod } from './issuer-payment-method.types';
|
|
6
|
+
import { SiteZod } from './site.types';
|
|
7
|
+
import { IPage } from './page.types';
|
|
8
|
+
|
|
9
|
+
export const AccountDetailSummaryZod = z.object({
|
|
10
|
+
id: z.string(),
|
|
11
|
+
name: z.string(),
|
|
12
|
+
issuers: z.array(
|
|
13
|
+
IIssuer.extend({
|
|
14
|
+
offerings: z.lazy(() =>
|
|
15
|
+
z.array(
|
|
16
|
+
IOffering.extend({
|
|
17
|
+
assets: z.lazy(() => z.array(IAsset)),
|
|
18
|
+
}),
|
|
19
|
+
),
|
|
20
|
+
),
|
|
21
|
+
paymentMethods: z.lazy(() => z.array(IIssuerPaymentMethod)),
|
|
22
|
+
}),
|
|
23
|
+
),
|
|
24
|
+
sites: z.lazy(() => z.array(SiteZod)),
|
|
25
|
+
pages: z.lazy(() => z.array(IPage)),
|
|
26
|
+
});
|
|
27
|
+
export type AccountDetailSummaryZod = z.infer<typeof AccountDetailSummaryZod>;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { extendZodWithOpenApi } from '@anatine/zod-openapi';
|
|
2
|
+
import { TypeID } from 'typeid-js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { IBaseEntity } from './entity.types';
|
|
5
|
+
import { accountIdSchema } from './account.types';
|
|
6
|
+
import { IPaginationMeta } from './common.types';
|
|
7
|
+
|
|
8
|
+
extendZodWithOpenApi(z);
|
|
9
|
+
|
|
10
|
+
export enum IntegrationType {
|
|
11
|
+
RAISI = 'RAISI',
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const accountIntegrationIdSchema = z.string().refine(
|
|
15
|
+
(value) => {
|
|
16
|
+
try {
|
|
17
|
+
const tid = TypeID.fromString(value);
|
|
18
|
+
return tid.getType() === 'account_integration';
|
|
19
|
+
} catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
message:
|
|
25
|
+
'Invalid account integration ID format. Must be a valid TypeID with "account_integration" prefix.',
|
|
26
|
+
},
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
export const AccountIntegrationZod = IBaseEntity.extend({
|
|
30
|
+
id: accountIntegrationIdSchema,
|
|
31
|
+
name: z.string(),
|
|
32
|
+
integration: z.nativeEnum(IntegrationType),
|
|
33
|
+
description: z.string().nullable(),
|
|
34
|
+
partnerId: z.string().nullable(),
|
|
35
|
+
url: z.string().nullable(),
|
|
36
|
+
webhook: z.string().nullable(),
|
|
37
|
+
active: z.boolean(),
|
|
38
|
+
metadata: z.record(z.string(), z.unknown()).nullable(),
|
|
39
|
+
accountId: z.lazy(() => accountIdSchema),
|
|
40
|
+
});
|
|
41
|
+
export type AccountIntegrationZod = z.infer<typeof AccountIntegrationZod>;
|
|
42
|
+
|
|
43
|
+
export const IPaginatedAccountIntegration = z.object({
|
|
44
|
+
items: z.array(AccountIntegrationZod),
|
|
45
|
+
meta: IPaginationMeta,
|
|
46
|
+
});
|
|
47
|
+
export type IPaginatedAccountIntegration = z.infer<
|
|
48
|
+
typeof IPaginatedAccountIntegration
|
|
49
|
+
>;
|
|
50
|
+
|
|
51
|
+
export const PostAccountIntegrationZod = z.object({
|
|
52
|
+
name: z.string().min(1).max(100).openapi({ example: 'Raisi' }),
|
|
53
|
+
integration: z
|
|
54
|
+
.nativeEnum(IntegrationType)
|
|
55
|
+
.openapi({ example: IntegrationType.RAISI }),
|
|
56
|
+
description: z
|
|
57
|
+
.string()
|
|
58
|
+
.min(1)
|
|
59
|
+
.max(1000)
|
|
60
|
+
.nullable()
|
|
61
|
+
.optional()
|
|
62
|
+
.openapi({ example: 'Raisi integration' }),
|
|
63
|
+
partnerId: z
|
|
64
|
+
.string()
|
|
65
|
+
.min(1)
|
|
66
|
+
.max(100)
|
|
67
|
+
.nullable()
|
|
68
|
+
.optional()
|
|
69
|
+
.openapi({ example: '1234567890' }),
|
|
70
|
+
url: z
|
|
71
|
+
.string()
|
|
72
|
+
.url()
|
|
73
|
+
.nullable()
|
|
74
|
+
.optional()
|
|
75
|
+
.openapi({ example: 'https://www.raisi.com' }),
|
|
76
|
+
webhook: z
|
|
77
|
+
.string()
|
|
78
|
+
.url()
|
|
79
|
+
.nullable()
|
|
80
|
+
.optional()
|
|
81
|
+
.openapi({ example: 'https://www.raisi.com/webhook' }),
|
|
82
|
+
active: z.boolean().default(true).openapi({ example: true }),
|
|
83
|
+
metadata: z
|
|
84
|
+
.record(z.string(), z.unknown())
|
|
85
|
+
.nullable()
|
|
86
|
+
.optional()
|
|
87
|
+
.openapi({ example: { key: 'value' } }),
|
|
88
|
+
});
|
|
89
|
+
export type PostAccountIntegrationZod = z.infer<
|
|
90
|
+
typeof PostAccountIntegrationZod
|
|
91
|
+
>;
|
|
92
|
+
|
|
93
|
+
export const PatchAccountIntegrationZod = z.object({
|
|
94
|
+
name: z
|
|
95
|
+
.string()
|
|
96
|
+
.min(1)
|
|
97
|
+
.max(100)
|
|
98
|
+
.nullable()
|
|
99
|
+
.optional()
|
|
100
|
+
.openapi({ example: 'Raisi' }),
|
|
101
|
+
integration: z
|
|
102
|
+
.nativeEnum(IntegrationType)
|
|
103
|
+
.optional()
|
|
104
|
+
.openapi({ example: IntegrationType.RAISI }),
|
|
105
|
+
description: z
|
|
106
|
+
.string()
|
|
107
|
+
.min(1)
|
|
108
|
+
.max(1000)
|
|
109
|
+
.nullable()
|
|
110
|
+
.optional()
|
|
111
|
+
.openapi({ example: 'Raisi integration' }),
|
|
112
|
+
partnerId: z.string().min(1).max(100).nullable().optional(),
|
|
113
|
+
url: z
|
|
114
|
+
.string()
|
|
115
|
+
.url()
|
|
116
|
+
.nullable()
|
|
117
|
+
.optional()
|
|
118
|
+
.openapi({ example: 'https://www.raisi.com' }),
|
|
119
|
+
webhook: z
|
|
120
|
+
.string()
|
|
121
|
+
.url()
|
|
122
|
+
.nullable()
|
|
123
|
+
.optional()
|
|
124
|
+
.openapi({ example: 'https://www.raisi.com/webhook' }),
|
|
125
|
+
active: z.boolean().nullable().optional(),
|
|
126
|
+
metadata: z
|
|
127
|
+
.record(z.string(), z.unknown())
|
|
128
|
+
.nullable()
|
|
129
|
+
.optional()
|
|
130
|
+
.openapi({ example: { key: 'value' } }),
|
|
131
|
+
});
|
|
132
|
+
export type PatchAccountIntegrationZod = z.infer<
|
|
133
|
+
typeof PatchAccountIntegrationZod
|
|
134
|
+
>;
|
|
135
|
+
|
|
136
|
+
export const AccountIntegrationFiltersZod = z.object({
|
|
137
|
+
search: z.string().max(50).optional(),
|
|
138
|
+
integration: z.nativeEnum(IntegrationType).optional(),
|
|
139
|
+
active: z.boolean().optional(),
|
|
140
|
+
});
|
|
141
|
+
export type AccountIntegrationFiltersZod = z.infer<
|
|
142
|
+
typeof AccountIntegrationFiltersZod
|
|
143
|
+
>;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { extendZodWithOpenApi } from '@anatine/zod-openapi';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { TypeID } from 'typeid-js';
|
|
4
|
+
import { IBaseEntity } from './entity.types';
|
|
5
|
+
import { PhoneNumberData } from './sms.types';
|
|
6
|
+
import { userIdSchema, UserZod } from './user.types';
|
|
7
|
+
import { IPaginationMeta } from './common.types';
|
|
8
|
+
import { PhoneZodSchema } from './phone.type';
|
|
9
|
+
|
|
10
|
+
extendZodWithOpenApi(z);
|
|
11
|
+
export const accountManagerIdSchema = z.string().refine(
|
|
12
|
+
(value) => {
|
|
13
|
+
try {
|
|
14
|
+
const tid = TypeID.fromString(value);
|
|
15
|
+
return tid.getType() === 'account_manager';
|
|
16
|
+
} catch {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
message: `Invalid account manager ID format. Must be a valid TypeID with "account_manager" prefix. Example: account_manager_01j5y5ghx5fg68d663j1fvy2x7`,
|
|
22
|
+
},
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
export const accountManagersInclude = z.enum(['accounts', 'user']);
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @description Query parameters for including related entities
|
|
29
|
+
* @xample in contract us as -> query: z.object({}).merge(AccountManagersIncludeQuery),
|
|
30
|
+
*/
|
|
31
|
+
export const AccountManagersIncludeQuery = z.object({
|
|
32
|
+
include: z
|
|
33
|
+
.string()
|
|
34
|
+
.optional()
|
|
35
|
+
.transform((str) => (str ? str.split(',') : []))
|
|
36
|
+
.refine(
|
|
37
|
+
(includes) =>
|
|
38
|
+
includes.every((include) =>
|
|
39
|
+
accountManagersInclude.options.includes(include as any),
|
|
40
|
+
),
|
|
41
|
+
{
|
|
42
|
+
message: `Invalid include option provided. Valid options are: ${accountManagersInclude.options.join(',')}`,
|
|
43
|
+
},
|
|
44
|
+
)
|
|
45
|
+
.openapi({
|
|
46
|
+
example: `${accountManagersInclude.options.join(',')}`,
|
|
47
|
+
}),
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
export const IAccountManagerZod = IBaseEntity.extend({
|
|
51
|
+
firstName: z.string().openapi({ example: 'John' }),
|
|
52
|
+
lastName: z.string().openapi({ example: 'Doe' }),
|
|
53
|
+
email: z.string().email().openapi({ example: 'john.doe@example.com' }),
|
|
54
|
+
phone: PhoneNumberData.nullable().openapi({ example: '+12124567890' }),
|
|
55
|
+
isDefault: z.boolean().openapi({ example: false }),
|
|
56
|
+
userId: z
|
|
57
|
+
.lazy(() => userIdSchema)
|
|
58
|
+
.nullable()
|
|
59
|
+
.openapi({ example: 'user_01je6ht4b8fbmttkzh2hs82xqp' }),
|
|
60
|
+
user: z
|
|
61
|
+
.lazy(() => UserZod)
|
|
62
|
+
.optional()
|
|
63
|
+
.nullable(),
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
export type IAccountManagerZod = z.infer<typeof IAccountManagerZod>;
|
|
67
|
+
|
|
68
|
+
export const PostAccountManagerZod = z.object({
|
|
69
|
+
firstName: z.string().min(1).max(255).openapi({ example: 'John' }),
|
|
70
|
+
lastName: z.string().min(1).max(255).openapi({ example: 'Doe' }),
|
|
71
|
+
email: z.string().email().openapi({ example: 'john.doe@example.com' }),
|
|
72
|
+
phone: PhoneZodSchema.nullable()
|
|
73
|
+
.optional()
|
|
74
|
+
.openapi({ example: '+12124567890' }),
|
|
75
|
+
isDefault: z.boolean().openapi({ example: false }),
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
export type PostAccountManagerZod = z.infer<typeof PostAccountManagerZod>;
|
|
79
|
+
|
|
80
|
+
export const PatchAccountManagerZod = z.object({
|
|
81
|
+
firstName: z.string().min(1).max(255).optional().openapi({ example: 'John' }),
|
|
82
|
+
lastName: z.string().min(1).max(255).optional().openapi({ example: 'Doe' }),
|
|
83
|
+
email: z
|
|
84
|
+
.string()
|
|
85
|
+
.email()
|
|
86
|
+
.optional()
|
|
87
|
+
.openapi({ example: 'john.doe@example.com' }),
|
|
88
|
+
phone: PhoneZodSchema.nullable()
|
|
89
|
+
.optional()
|
|
90
|
+
.openapi({ example: '+12124567890' }),
|
|
91
|
+
isDefault: z.boolean().optional().openapi({ example: false }),
|
|
92
|
+
});
|
|
93
|
+
export type PatchAccountManagerZod = z.infer<typeof PatchAccountManagerZod>;
|
|
94
|
+
|
|
95
|
+
export const IPaginatedAccountManager = z.object({
|
|
96
|
+
items: z.array(IAccountManagerZod),
|
|
97
|
+
meta: IPaginationMeta,
|
|
98
|
+
});
|
|
99
|
+
export type IPaginatedAccountManager = z.infer<typeof IPaginatedAccountManager>;
|
|
100
|
+
|
|
101
|
+
export const AccountManagerDeleteResponse = z.object({
|
|
102
|
+
status: z.boolean().openapi({ example: true }),
|
|
103
|
+
});
|
|
104
|
+
export type AccountManagerDeleteResponse = z.infer<
|
|
105
|
+
typeof AccountManagerDeleteResponse
|
|
106
|
+
>;
|
|
107
|
+
export const SetDefaultAccountManagerForAllAccountsResponse = z.object({
|
|
108
|
+
message: z
|
|
109
|
+
.string()
|
|
110
|
+
.openapi({ example: 'Default account manager set for all accounts' }),
|
|
111
|
+
});
|
|
112
|
+
export type SetDefaultAccountManagerForAllAccountsResponse = z.infer<
|
|
113
|
+
typeof SetDefaultAccountManagerForAllAccountsResponse
|
|
114
|
+
>;
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { extendZodWithOpenApi } from '@anatine/zod-openapi';
|
|
2
|
+
import { TypeID } from 'typeid-js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import {
|
|
5
|
+
AccountZod,
|
|
6
|
+
dateSchema,
|
|
7
|
+
IPaginationMeta,
|
|
8
|
+
IssuerOnboardingSetupType,
|
|
9
|
+
ManagedByType,
|
|
10
|
+
Platform,
|
|
11
|
+
SortBy,
|
|
12
|
+
SortOrder,
|
|
13
|
+
AccountStatus,
|
|
14
|
+
} from './common.types';
|
|
15
|
+
import { notionPageIdSchema } from './notion-page.types';
|
|
16
|
+
|
|
17
|
+
extendZodWithOpenApi(z);
|
|
18
|
+
|
|
19
|
+
export const accountIdSchema = z.string().refine(
|
|
20
|
+
(value) => {
|
|
21
|
+
try {
|
|
22
|
+
const tid = TypeID.fromString(value);
|
|
23
|
+
return tid.getType() === 'account';
|
|
24
|
+
} catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
message:
|
|
30
|
+
'Invalid account ID format. Must be a valid TypeID with "account" prefix.',
|
|
31
|
+
},
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
export const UpdateAccountZod = z.object({
|
|
35
|
+
name: z.string().min(1).max(100),
|
|
36
|
+
status: z.nativeEnum(AccountStatus).optional(),
|
|
37
|
+
platform: z
|
|
38
|
+
.nativeEnum(Platform)
|
|
39
|
+
.optional()
|
|
40
|
+
.openapi({ example: Platform.INTEGRATION }),
|
|
41
|
+
managedBy: z
|
|
42
|
+
.nativeEnum(ManagedByType)
|
|
43
|
+
.optional()
|
|
44
|
+
.openapi({ example: ManagedByType.DALMORE }),
|
|
45
|
+
approversCount: z.number().min(1).max(5).optional(),
|
|
46
|
+
});
|
|
47
|
+
export type UpdateAccountZod = z.infer<typeof UpdateAccountZod>;
|
|
48
|
+
|
|
49
|
+
export const CreateAccountZod = z.object({
|
|
50
|
+
name: z.string().min(1).max(100),
|
|
51
|
+
platform: z
|
|
52
|
+
.nativeEnum(Platform)
|
|
53
|
+
.optional()
|
|
54
|
+
.openapi({ example: Platform.INTEGRATION }),
|
|
55
|
+
managedBy: z
|
|
56
|
+
.nativeEnum(ManagedByType)
|
|
57
|
+
.optional()
|
|
58
|
+
.openapi({ example: ManagedByType.DALMORE }),
|
|
59
|
+
approversCount: z.number().min(1).max(5).optional(),
|
|
60
|
+
});
|
|
61
|
+
export type CreateAccountZod = z.infer<typeof CreateAccountZod>;
|
|
62
|
+
|
|
63
|
+
export const IPaginatedAccount = z.object({
|
|
64
|
+
items: z.array(AccountZod),
|
|
65
|
+
meta: IPaginationMeta,
|
|
66
|
+
});
|
|
67
|
+
export type IPaginatedAccount = z.infer<typeof IPaginatedAccount>;
|
|
68
|
+
|
|
69
|
+
export const AccountFiltersZod = z.object({
|
|
70
|
+
search: z.string().max(50).optional(),
|
|
71
|
+
status: z.nativeEnum(AccountStatus).optional(),
|
|
72
|
+
platform: z
|
|
73
|
+
.nativeEnum(Platform)
|
|
74
|
+
.optional()
|
|
75
|
+
.openapi({ example: Platform.INTEGRATION }),
|
|
76
|
+
managedBy: z
|
|
77
|
+
.nativeEnum(ManagedByType)
|
|
78
|
+
.optional()
|
|
79
|
+
.openapi({ example: ManagedByType.DALMORE }),
|
|
80
|
+
from: dateSchema.optional().openapi({ example: 'MM/DD/YYYY' }),
|
|
81
|
+
to: dateSchema.optional().openapi({ example: 'MM/DD/YYYY' }),
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
const accountsInclude = z.enum([
|
|
85
|
+
'accountManager',
|
|
86
|
+
'accountIntegrations',
|
|
87
|
+
'apiKeys',
|
|
88
|
+
'assets',
|
|
89
|
+
'dataRooms',
|
|
90
|
+
'individuals',
|
|
91
|
+
'investorAccounts',
|
|
92
|
+
'invites',
|
|
93
|
+
'issuers',
|
|
94
|
+
'legalEntities',
|
|
95
|
+
'offerings',
|
|
96
|
+
'sites',
|
|
97
|
+
'trades',
|
|
98
|
+
'users',
|
|
99
|
+
]);
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* @description Query parameters for including related entities
|
|
103
|
+
* @xample in contract us as -> query: z.object({}).merge(AccountsIncludeQuery),
|
|
104
|
+
*/
|
|
105
|
+
export const AccountsIncludeQuery = z.object({
|
|
106
|
+
include: z
|
|
107
|
+
.string()
|
|
108
|
+
.optional()
|
|
109
|
+
.transform((str) => (str ? str.split(',') : []))
|
|
110
|
+
.refine(
|
|
111
|
+
(includes) =>
|
|
112
|
+
includes.every((include) =>
|
|
113
|
+
accountsInclude.options.includes(include as any),
|
|
114
|
+
),
|
|
115
|
+
{
|
|
116
|
+
message: `Invalid include option provided. Valid options are: ${accountsInclude.options.join(',')}`,
|
|
117
|
+
},
|
|
118
|
+
)
|
|
119
|
+
.openapi({
|
|
120
|
+
example: `${accountsInclude.options.join(',')}`,
|
|
121
|
+
}),
|
|
122
|
+
});
|
|
123
|
+
export interface AccountsIncludeQuery
|
|
124
|
+
extends z.infer<typeof AccountsIncludeQuery> {}
|
|
125
|
+
|
|
126
|
+
export const PatchAccountZod = z.object({
|
|
127
|
+
name: z.string().min(1).max(100),
|
|
128
|
+
approversCount: z.number().min(1).max(5).optional(),
|
|
129
|
+
managedBy: z.nativeEnum(ManagedByType).optional(),
|
|
130
|
+
platform: z.nativeEnum(Platform).optional(),
|
|
131
|
+
integrationGuideId: notionPageIdSchema.nullable().optional(),
|
|
132
|
+
productPrimaries: z.boolean().optional(),
|
|
133
|
+
productSecondaries: z.boolean().optional(),
|
|
134
|
+
featureDisbursements: z.boolean().optional(),
|
|
135
|
+
});
|
|
136
|
+
export type PatchAccountZod = z.infer<typeof PatchAccountZod>;
|
|
137
|
+
|
|
138
|
+
export const PostAccountResponse = z.object({
|
|
139
|
+
id: z.string(),
|
|
140
|
+
});
|
|
141
|
+
export type PostAccountResponse = z.infer<typeof PostAccountResponse>;
|
|
142
|
+
|
|
143
|
+
export const GetAccountIssuersZod = z.object({
|
|
144
|
+
name: z.string().optional(),
|
|
145
|
+
accountId: accountIdSchema.optional(),
|
|
146
|
+
});
|
|
147
|
+
export type GetAccountIssuersZod = z.infer<typeof GetAccountIssuersZod>;
|
|
148
|
+
|
|
149
|
+
export const UpdateAccountIssuersStatusZod = z.object({
|
|
150
|
+
status: z.nativeEnum(AccountStatus),
|
|
151
|
+
});
|
|
152
|
+
export type UpdateAccountIssuersStatusZod = z.infer<
|
|
153
|
+
typeof UpdateAccountIssuersStatusZod
|
|
154
|
+
>;
|
|
155
|
+
|
|
156
|
+
export const UpdateAccountStatusReponse = z.object({
|
|
157
|
+
id: accountIdSchema,
|
|
158
|
+
status: z.nativeEnum(AccountStatus),
|
|
159
|
+
});
|
|
160
|
+
export type UpdateAccountStatusReponse = z.infer<
|
|
161
|
+
typeof UpdateAccountStatusReponse
|
|
162
|
+
>;
|
|
163
|
+
|
|
164
|
+
export const AccountsSummaryFilterZod = z.object({
|
|
165
|
+
search: z.string().trim().max(50).optional(),
|
|
166
|
+
status: z.nativeEnum(AccountStatus).optional(),
|
|
167
|
+
from: dateSchema.optional().openapi({ example: 'MM/DD/YYYY' }),
|
|
168
|
+
to: dateSchema.optional().openapi({ example: 'MM/DD/YYYY' }),
|
|
169
|
+
});
|
|
170
|
+
export type AccountsSummaryFilterZod = z.infer<typeof AccountsSummaryFilterZod>;
|
|
171
|
+
|
|
172
|
+
export const AccountSortZod = z.object({
|
|
173
|
+
sort: z.enum([SortBy.NAME, SortBy.CREATED_AT, SortBy.UPDATED_AT]).optional(),
|
|
174
|
+
dir: z.nativeEnum(SortOrder).optional(),
|
|
175
|
+
});
|
|
176
|
+
export type AccountSortZod = z.infer<typeof AccountSortZod>;
|
|
177
|
+
|
|
178
|
+
export const AccountsSummaryZod = z.object({
|
|
179
|
+
accountId: accountIdSchema,
|
|
180
|
+
accountName: z.string(),
|
|
181
|
+
issuers: z.number().int(),
|
|
182
|
+
offerings: z.number().int(),
|
|
183
|
+
assets: z.number().int(),
|
|
184
|
+
users: z.number().int(),
|
|
185
|
+
createdOn: z.string(),
|
|
186
|
+
status: z.string(),
|
|
187
|
+
});
|
|
188
|
+
export type AccountsSummaryZod = z.infer<typeof AccountsSummaryZod>;
|
|
189
|
+
|
|
190
|
+
export const IPaginatedAccountsSummaryResponse = z.object({
|
|
191
|
+
items: z.array(AccountsSummaryZod),
|
|
192
|
+
meta: IPaginationMeta,
|
|
193
|
+
});
|
|
194
|
+
export type IPaginatedAccountsSummaryResponse = z.infer<
|
|
195
|
+
typeof IPaginatedAccountsSummaryResponse
|
|
196
|
+
>;
|
|
197
|
+
export const PatchIssuerOnboardingStep = z.object({
|
|
198
|
+
step: z.nativeEnum(IssuerOnboardingSetupType),
|
|
199
|
+
});
|
|
200
|
+
export type PatchIssuerOnboardingStep = z.infer<
|
|
201
|
+
typeof PatchIssuerOnboardingStep
|
|
202
|
+
>;
|
|
203
|
+
|
|
204
|
+
export const IssuerOnboardingStepZod = z.object({
|
|
205
|
+
offeringSetup: z.boolean().default(false),
|
|
206
|
+
investorPortalSetup: z.boolean().default(false),
|
|
207
|
+
paymentMethodSetup: z.boolean().default(false),
|
|
208
|
+
accountContactsSetup: z.boolean().default(false),
|
|
209
|
+
});
|
|
210
|
+
export type IssuerOnboardingStepZod = z.infer<typeof IssuerOnboardingStepZod>;
|
|
211
|
+
|
|
212
|
+
export const OnboardingAccountSummaryZod = z.object({
|
|
213
|
+
accountId: accountIdSchema,
|
|
214
|
+
accountName: z.string(),
|
|
215
|
+
siteId: z.string().nullable(),
|
|
216
|
+
offeringId: z.string().nullable(),
|
|
217
|
+
investorPortalSetup: z.boolean(),
|
|
218
|
+
offeringSetup: z.boolean(),
|
|
219
|
+
paymentMethodSetup: z.boolean(),
|
|
220
|
+
accountContactsSetup: z.boolean(),
|
|
221
|
+
});
|
|
222
|
+
export type OnboardingAccountSummaryZod = z.infer<
|
|
223
|
+
typeof OnboardingAccountSummaryZod
|
|
224
|
+
>;
|
|
225
|
+
|
|
226
|
+
export const IPaginatedOnboardingAccountSummaryResponse = z.object({
|
|
227
|
+
items: z.array(OnboardingAccountSummaryZod),
|
|
228
|
+
meta: IPaginationMeta,
|
|
229
|
+
});
|
|
230
|
+
export type IPaginatedOnboardingAccountSummaryResponse = z.infer<
|
|
231
|
+
typeof IPaginatedOnboardingAccountSummaryResponse
|
|
232
|
+
>;
|
|
233
|
+
|
|
234
|
+
export const OnboardingAccountSummaryFilterZod = z.object({
|
|
235
|
+
status: z.nativeEnum(AccountStatus).optional(),
|
|
236
|
+
});
|
|
237
|
+
export type OnboardingAccountSummaryFilterZod = z.infer<
|
|
238
|
+
typeof OnboardingAccountSummaryFilterZod
|
|
239
|
+
>;
|