@dalmore/api-contracts 0.0.0-dev.801385 → 0.0.0-dev.9d42e16
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.types.ts +1 -0
- package/common/types/comply-advantage-api.types.ts +3 -3
- package/common/types/mail-template.types.ts +34 -0
- package/common/types/notification.types.ts +10 -0
- package/common/types/trade.types.ts +2 -0
- package/common/types/webhook.types.ts +142 -0
- 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/account-settings/index.ts +0 -59
- 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 -135
- package/contracts/compliance/batch-jobs/index.ts +0 -62
- package/contracts/compliance/bonus-tiers/index.ts +0 -74
- 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 -151
- package/contracts/compliance/individuals/index.ts +0 -57
- package/contracts/compliance/investor-accounts/index.ts +0 -141
- package/contracts/compliance/invites/index.ts +0 -129
- 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/notification-channels/index.ts +0 -251
- 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 -249
- 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 -221
- 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 -55
- 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/transactions/index.ts +0 -37
- 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/account-settings/index.ts +0 -36
- 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 -153
- package/contracts/issuers/bonus-tiers/index.ts +0 -73
- 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 -189
- 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 -116
- 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/notification-channels/index.ts +0 -251
- 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
package/README.md
CHANGED
|
@@ -14,32 +14,33 @@ npm install @dalmore/api-contracts@dev
|
|
|
14
14
|
|
|
15
15
|
## Usage
|
|
16
16
|
|
|
17
|
-
### Import
|
|
17
|
+
### Import from main entry
|
|
18
18
|
|
|
19
19
|
```typescript
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import { issuersContract } from '@dalmore/api-contracts/issuers';
|
|
23
|
-
import { clientsContract } from '@dalmore/api-contracts/clients';
|
|
20
|
+
import { clientsContract } from '@dalmore/api-contracts';
|
|
21
|
+
import type { IInvestorAccount } from '@dalmore/api-contracts';
|
|
24
22
|
```
|
|
25
23
|
|
|
26
|
-
### Import
|
|
24
|
+
### Import specific subpaths (recommended for tree-shaking)
|
|
27
25
|
|
|
28
26
|
```typescript
|
|
29
|
-
|
|
30
|
-
import
|
|
27
|
+
// Import clients contract
|
|
28
|
+
import { clientsContract } from '@dalmore/api-contracts/clients';
|
|
29
|
+
|
|
30
|
+
// Import types
|
|
31
|
+
import type { IInvestorAccount, ITrade } from '@dalmore/api-contracts/types';
|
|
31
32
|
```
|
|
32
33
|
|
|
33
34
|
### Create a typed client
|
|
34
35
|
|
|
35
36
|
```typescript
|
|
36
|
-
import {
|
|
37
|
+
import { clientsContract } from '@dalmore/api-contracts/clients';
|
|
37
38
|
import { initClient } from '@ts-rest/core';
|
|
38
39
|
|
|
39
|
-
const client = initClient(
|
|
40
|
+
const client = initClient(clientsContract, {
|
|
40
41
|
baseUrl: 'https://platform.dalmoregroup.com',
|
|
41
42
|
baseHeaders: {
|
|
42
|
-
|
|
43
|
+
'X-API-Key': `${apiKey}`,
|
|
43
44
|
},
|
|
44
45
|
});
|
|
45
46
|
|
|
@@ -53,17 +54,20 @@ const { status, body } = await client.accounts.getAccounts({
|
|
|
53
54
|
|
|
54
55
|
This package requires the following peer dependencies:
|
|
55
56
|
|
|
56
|
-
- `@
|
|
57
|
-
- `
|
|
57
|
+
- `@anatine/zod-openapi` ^1.14.2
|
|
58
|
+
- `@ts-rest/core` ^3.52.1
|
|
59
|
+
- `typeid-js` ^1.2.0
|
|
60
|
+
- `zod` ^3.24.4
|
|
58
61
|
|
|
59
|
-
## Available
|
|
62
|
+
## Available Exports
|
|
60
63
|
|
|
61
|
-
- `complianceContract` - Compliance portal API
|
|
62
|
-
- `investorsContract` - Investor portal API
|
|
63
|
-
- `issuersContract` - Issuer portal API
|
|
64
64
|
- `clientsContract` - Client API (API key auth)
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
|
|
66
|
+
## Available Subpath Exports
|
|
67
|
+
|
|
68
|
+
- `@dalmore/api-contracts` - Main entry (clients contract and types)
|
|
69
|
+
- `@dalmore/api-contracts/clients` - Clients contract
|
|
70
|
+
- `@dalmore/api-contracts/types` - All common types
|
|
67
71
|
|
|
68
72
|
## TypeScript Configuration
|
|
69
73
|
|
|
@@ -30,7 +30,7 @@ export const CreateSearchRequestSchema = z.object({
|
|
|
30
30
|
.optional(),
|
|
31
31
|
})
|
|
32
32
|
.optional(),
|
|
33
|
-
tags: z.record(z.string()).optional(),
|
|
33
|
+
tags: z.union([z.record(z.string()), z.array(z.any())]).optional(),
|
|
34
34
|
share_url: z.union([z.literal(0), z.literal(1)]).optional(),
|
|
35
35
|
exact_match: z.boolean().optional(),
|
|
36
36
|
});
|
|
@@ -268,7 +268,7 @@ export const GetSearchDetailsResponseSchema = z.object({
|
|
|
268
268
|
total_matches: z.number(),
|
|
269
269
|
updated_at: z.string(),
|
|
270
270
|
created_at: z.string(),
|
|
271
|
-
tags: z.record(z.string()).optional(),
|
|
271
|
+
tags: z.union([z.record(z.string()), z.array(z.any())]).optional(),
|
|
272
272
|
labels: z
|
|
273
273
|
.array(
|
|
274
274
|
z.object({
|
|
@@ -310,7 +310,7 @@ export const UpdateSearchRequestSchema = z.object({
|
|
|
310
310
|
risk_level: z.enum(['low', 'medium', 'high', 'unknown']).optional(),
|
|
311
311
|
assignee_id: z.number().optional(),
|
|
312
312
|
limit: z.number().int().max(100).optional(),
|
|
313
|
-
tags: z.record(z.string()).optional(),
|
|
313
|
+
tags: z.union([z.record(z.string()), z.array(z.any())]).optional(),
|
|
314
314
|
});
|
|
315
315
|
|
|
316
316
|
export type UpdateSearchRequest = z.infer<typeof UpdateSearchRequestSchema>;
|
|
@@ -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>;
|
|
@@ -208,6 +208,16 @@ export type EmailNotificationPayload = z.infer<
|
|
|
208
208
|
typeof EmailNotificationPayloadSchema
|
|
209
209
|
>;
|
|
210
210
|
|
|
211
|
+
/**
|
|
212
|
+
* Payload for Slack notifications sent via Incoming Webhooks.
|
|
213
|
+
*
|
|
214
|
+
* @property webhookUrl - Slack Incoming Webhook URL
|
|
215
|
+
* @property channelEmail - Slack channel email integration (alternative delivery method)
|
|
216
|
+
* @property message - Plain text message (also serves as fallback for notifications)
|
|
217
|
+
* @property blocks - Optional Slack Block Kit elements for rich message formatting.
|
|
218
|
+
* Blocks allow structured layouts with headers, sections, images, buttons, etc.
|
|
219
|
+
* @see https://docs.slack.dev/messaging/creating-interactive-messages
|
|
220
|
+
*/
|
|
211
221
|
export const SlackNotificationPayloadSchema = z.object({
|
|
212
222
|
webhookUrl: z.string().url().optional(),
|
|
213
223
|
channelEmail: z.string().email().optional(),
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
createDateSchema,
|
|
22
22
|
AccountStatus,
|
|
23
23
|
SavedQuery,
|
|
24
|
+
AccountZod,
|
|
24
25
|
} from './common.types';
|
|
25
26
|
import { IOffering, offeringIdSchema } from './offering.types';
|
|
26
27
|
import { IBaseEntity } from './entity.types';
|
|
@@ -301,6 +302,7 @@ export const TradeZod = IBaseEntity.extend({
|
|
|
301
302
|
.optional()
|
|
302
303
|
.nullable(),
|
|
303
304
|
accountId: accountIdSchema.nullable(),
|
|
305
|
+
account: z.lazy(() => AccountZod).nullable(),
|
|
304
306
|
offeringId: z.lazy(() => offeringIdSchema.nullable()),
|
|
305
307
|
paymentMethodId: z.lazy(() => paymentMethodIdSchema).nullable(),
|
|
306
308
|
paymentMethod: z
|
|
@@ -1,6 +1,148 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { PersonaStatus } from './common.types';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Hook0 Webhook Provider Types
|
|
6
|
+
*
|
|
7
|
+
* Types for interacting with Hook0's webhooks-as-a-service API.
|
|
8
|
+
* @see https://documentation.hook0.com/api - API Reference
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Hook0 API error response format.
|
|
13
|
+
* @see https://documentation.hook0.com/api
|
|
14
|
+
*/
|
|
15
|
+
export const Hook0ApiErrorSchema = z.object({
|
|
16
|
+
type: z.string(),
|
|
17
|
+
status: z.number(),
|
|
18
|
+
title: z.string(),
|
|
19
|
+
detail: z.string(),
|
|
20
|
+
validation: z.unknown().nullable(),
|
|
21
|
+
id: z.string(),
|
|
22
|
+
});
|
|
23
|
+
export type Hook0ApiError = z.infer<typeof Hook0ApiErrorSchema>;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Error returned from Hook0 provider operations.
|
|
27
|
+
* Wraps Hook0 API errors with additional context.
|
|
28
|
+
*/
|
|
29
|
+
export const Hook0ProviderErrorSchema = z.object({
|
|
30
|
+
message: z.string(),
|
|
31
|
+
statusCode: z.number().optional(),
|
|
32
|
+
code: z.string().optional(),
|
|
33
|
+
apiError: Hook0ApiErrorSchema.optional(),
|
|
34
|
+
});
|
|
35
|
+
export type Hook0ProviderError = z.infer<typeof Hook0ProviderErrorSchema>;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Hook0 subscription target configuration.
|
|
39
|
+
* Defines where and how webhooks are delivered.
|
|
40
|
+
* @see https://documentation.hook0.com/reference/subscriptionscreate
|
|
41
|
+
*/
|
|
42
|
+
export const Hook0SubscriptionTargetSchema = z.object({
|
|
43
|
+
type: z.literal('http'),
|
|
44
|
+
method: z.string(),
|
|
45
|
+
url: z.string().url(),
|
|
46
|
+
headers: z.record(z.string()).optional(),
|
|
47
|
+
});
|
|
48
|
+
export type Hook0SubscriptionTarget = z.infer<
|
|
49
|
+
typeof Hook0SubscriptionTargetSchema
|
|
50
|
+
>;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Hook0 subscription response from create/get operations.
|
|
54
|
+
* @see https://documentation.hook0.com/reference/subscriptionscreate
|
|
55
|
+
* @see https://documentation.hook0.com/reference/subscriptionsget
|
|
56
|
+
*/
|
|
57
|
+
export const Hook0SubscriptionResponseSchema = z.object({
|
|
58
|
+
subscription_id: z.string().uuid(),
|
|
59
|
+
application_id: z.string().uuid(),
|
|
60
|
+
created_at: z.string().datetime().optional(),
|
|
61
|
+
dedicated_workers: z.array(z.string()).optional(),
|
|
62
|
+
description: z.string().optional(),
|
|
63
|
+
event_types: z.array(z.string()).optional(),
|
|
64
|
+
is_enabled: z.boolean().optional(),
|
|
65
|
+
label_key: z.string().optional(),
|
|
66
|
+
label_value: z.string().optional(),
|
|
67
|
+
labels: z.record(z.string()).optional(),
|
|
68
|
+
metadata: z.record(z.string()).optional(),
|
|
69
|
+
secret: z.string(),
|
|
70
|
+
target: Hook0SubscriptionTargetSchema.optional(),
|
|
71
|
+
});
|
|
72
|
+
export type Hook0SubscriptionResponse = z.infer<
|
|
73
|
+
typeof Hook0SubscriptionResponseSchema
|
|
74
|
+
>;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Simplified subscription result returned to callers.
|
|
78
|
+
*/
|
|
79
|
+
export const WebhookSubscriptionSchema = z.object({
|
|
80
|
+
subscriptionId: z.string(),
|
|
81
|
+
secret: z.string(),
|
|
82
|
+
});
|
|
83
|
+
export type WebhookSubscription = z.infer<typeof WebhookSubscriptionSchema>;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Hook0 event type response from create operation.
|
|
87
|
+
* @see https://documentation.hook0.com/reference/eventtypescreate
|
|
88
|
+
*/
|
|
89
|
+
export const Hook0EventTypeResponseSchema = z.object({
|
|
90
|
+
service_name: z.string(),
|
|
91
|
+
resource_type_name: z.string(),
|
|
92
|
+
verb_name: z.string(),
|
|
93
|
+
event_type_name: z.string(),
|
|
94
|
+
});
|
|
95
|
+
export type Hook0EventTypeResponse = z.infer<
|
|
96
|
+
typeof Hook0EventTypeResponseSchema
|
|
97
|
+
>;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Hook0 event type list item.
|
|
101
|
+
* @see https://documentation.hook0.com/reference/eventtypeslist
|
|
102
|
+
*/
|
|
103
|
+
export const Hook0EventTypeSchema = z.object({
|
|
104
|
+
name: z.string(),
|
|
105
|
+
service: z.string().optional(),
|
|
106
|
+
resource_type: z.string().optional(),
|
|
107
|
+
verb: z.string().optional(),
|
|
108
|
+
});
|
|
109
|
+
export type Hook0EventType = z.infer<typeof Hook0EventTypeSchema>;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Hook0 event ingestion response.
|
|
113
|
+
* @see https://documentation.hook0.com/api/#tag/events-ingestion/POST/api/v1/event/
|
|
114
|
+
*/
|
|
115
|
+
export const Hook0EventResponseSchema = z.object({
|
|
116
|
+
event_id: z.string().uuid().optional(),
|
|
117
|
+
received_at: z.string().datetime().optional(),
|
|
118
|
+
});
|
|
119
|
+
export type Hook0EventResponse = z.infer<typeof Hook0EventResponseSchema>;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Simplified event response returned to callers.
|
|
123
|
+
*/
|
|
124
|
+
export const WebhookEventResponseSchema = z.object({
|
|
125
|
+
eventId: z.string(),
|
|
126
|
+
receivedAt: z.string(),
|
|
127
|
+
});
|
|
128
|
+
export type WebhookEventResponse = z.infer<typeof WebhookEventResponseSchema>;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Payload sent when ingesting events to Hook0.
|
|
132
|
+
* Contains activity data to be delivered to webhook subscribers.
|
|
133
|
+
*/
|
|
134
|
+
export const WebhookEventPayloadSchema = z.object({
|
|
135
|
+
activityId: z.string(),
|
|
136
|
+
activityType: z.string(),
|
|
137
|
+
accountId: z.string(),
|
|
138
|
+
targetId: z.string().nullable(),
|
|
139
|
+
targetTable: z.string().nullable(),
|
|
140
|
+
message: z.string(),
|
|
141
|
+
metadata: z.record(z.unknown()),
|
|
142
|
+
occurredAt: z.string(),
|
|
143
|
+
});
|
|
144
|
+
export type WebhookEventPayload = z.infer<typeof WebhookEventPayloadSchema>;
|
|
145
|
+
|
|
4
146
|
export const WebhookReceived = z.object({
|
|
5
147
|
received: z.boolean(),
|
|
6
148
|
});
|
package/index.ts
ADDED
package/package.json
CHANGED
|
@@ -1,48 +1,42 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dalmore/api-contracts",
|
|
3
|
-
"version": "0.0.0-dev.
|
|
3
|
+
"version": "0.0.0-dev.9d42e16",
|
|
4
4
|
"description": "Type-safe API contracts for Dalmore Client Portal",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./index.ts",
|
|
7
|
+
"types": "./index.ts",
|
|
7
8
|
"exports": {
|
|
8
9
|
".": {
|
|
9
|
-
"types": "./
|
|
10
|
-
"
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
);
|