dutchman-bridge 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 +212 -0
- package/dist/client/client.gen.d.ts +2 -0
- package/dist/client/client.gen.js +220 -0
- package/dist/client/index.d.ts +10 -0
- package/dist/client/index.js +17 -0
- package/dist/client/types.gen.d.ts +120 -0
- package/dist/client/types.gen.js +3 -0
- package/dist/client/utils.gen.d.ts +37 -0
- package/dist/client/utils.gen.js +241 -0
- package/dist/client.gen.d.ts +12 -0
- package/dist/client.gen.js +6 -0
- package/dist/core/auth.gen.d.ts +25 -0
- package/dist/core/auth.gen.js +18 -0
- package/dist/core/bodySerializer.gen.d.ts +25 -0
- package/dist/core/bodySerializer.gen.js +60 -0
- package/dist/core/params.gen.d.ts +43 -0
- package/dist/core/params.gen.js +112 -0
- package/dist/core/pathSerializer.gen.d.ts +33 -0
- package/dist/core/pathSerializer.gen.js +115 -0
- package/dist/core/queryKeySerializer.gen.d.ts +18 -0
- package/dist/core/queryKeySerializer.gen.js +98 -0
- package/dist/core/serverSentEvents.gen.d.ts +71 -0
- package/dist/core/serverSentEvents.gen.js +135 -0
- package/dist/core/types.gen.d.ts +83 -0
- package/dist/core/types.gen.js +3 -0
- package/dist/core/utils.gen.d.ts +19 -0
- package/dist/core/utils.gen.js +93 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +20 -0
- package/dist/sdk.gen.d.ts +339 -0
- package/dist/sdk.gen.js +794 -0
- package/dist/types.gen.d.ts +1935 -0
- package/dist/types.gen.js +3 -0
- package/package.json +32 -0
- package/src/client/client.gen.ts +277 -0
- package/src/client/index.ts +27 -0
- package/src/client/types.gen.ts +218 -0
- package/src/client/utils.gen.ts +316 -0
- package/src/client.gen.ts +16 -0
- package/src/core/auth.gen.ts +48 -0
- package/src/core/bodySerializer.gen.ts +82 -0
- package/src/core/params.gen.ts +178 -0
- package/src/core/pathSerializer.gen.ts +171 -0
- package/src/core/queryKeySerializer.gen.ts +117 -0
- package/src/core/serverSentEvents.gen.ts +242 -0
- package/src/core/types.gen.ts +110 -0
- package/src/core/utils.gen.ts +140 -0
- package/src/index.ts +5 -0
- package/src/sdk.gen.ts +887 -0
- package/src/types.gen.ts +2178 -0
package/src/sdk.gen.ts
ADDED
|
@@ -0,0 +1,887 @@
|
|
|
1
|
+
// This file is auto-generated by @hey-api/openapi-ts
|
|
2
|
+
|
|
3
|
+
import { type Client, type ClientMeta, formDataBodySerializer, type Options as Options2, type RequestResult, type TDataShape } from './client';
|
|
4
|
+
import { client } from './client.gen';
|
|
5
|
+
import type { BankAddAccountData, BankAddAccountResponses, BankBanksData, BankBanksResponses, BankDeleteAccountData, BankDeleteAccountResponses, BankGetAccountsData, BankGetAccountsResponses, BankSetDefaultAccountData, BankSetDefaultAccountResponses, BankVerifyAccountData, BankVerifyAccountResponses, CountriesListData, CountriesListResponses, CustomersFullData, CustomersFullResponses, CustomersGetData, CustomersGetResponses, CustomersRegisterData, CustomersRegisterResponses, FeaturesListData, FeaturesListResponses, GlobalSendCorridorsData, GlobalSendCorridorsResponses, GlobalSendInitiateData, GlobalSendInitiateResponses, GlobalSendQuoteData, GlobalSendQuoteResponses, GlobalSendVerificationStatusData, GlobalSendVerificationStatusResponses, KycDocumentData, KycDocumentResponses, KycReverificationData, KycReverificationResponses, KycSelfieCheckRouteData, KycSelfieCheckRouteResponses, KycStatusData, KycStatusResponses, KycTier1Data, KycTier1Responses, KycTier2Data, KycTier2Responses, KycTier3Data, KycTier3Responses, ProfileChangePasswordData, ProfileChangePasswordResponses, ProfileDeleteAccountData, ProfileDeleteAccountResponses, ProfileGetSettlementModeData, ProfileGetSettlementModeResponses, ProfileProfileData, ProfileProfileResponses, ProfileSetSettlementModeData, ProfileSetSettlementModeResponses, ProfileUpdateProfileData, ProfileUpdateProfileResponses, ProfileWithdrawalsData, ProfileWithdrawalsResponses, RampBuyData, RampBuyQuoteData, RampBuyQuoteResponses, RampBuyResponses, RampRateData, RampRateResponses, RampSellData, RampSellNetworksData, RampSellNetworksResponses, RampSellQuoteData, RampSellQuoteResponses, RampSellResponses, ReceivingActivityData, ReceivingActivityResponses, ReceivingCurrenciesData, ReceivingCurrenciesResponses, ReceivingListData, ReceivingListResponses, ReceivingOpenData, ReceivingOpenResponses, ReceivingRefreshData, ReceivingRefreshResponses, SendNetworksData, SendNetworksResponses, SendQuoteData, SendQuoteResponses, SendSubmitData, SendSubmitResponses, WalletAddressesData, WalletAddressesResponses, WalletBalanceData, WalletBalanceResponses, WalletFundingChargesData, WalletFundingChargesResponses, WalletInitiateFundingChargeData, WalletInitiateFundingChargeResponses, WalletStreamBalanceData, WalletStreamBalanceResponses, WalletTransactionsData, WalletTransactionsResponses, WalletVirtualAccountForData, WalletVirtualAccountForResponses, WalletWithdrawData, WalletWithdrawResponses, WebhookConfigData, WebhookConfigResponses, WebhookDeliveriesData, WebhookDeliveriesResponses, WebhookDeliveryData, WebhookDeliveryResponses, WebhookReplayData, WebhookReplayResponses, WebhookRotateSecretData, WebhookRotateSecretResponses, WebhookSetUrlData, WebhookSetUrlResponses } from './types.gen';
|
|
6
|
+
|
|
7
|
+
export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown> = Options2<TData, ThrowOnError, TResponse> & {
|
|
8
|
+
/**
|
|
9
|
+
* You can provide a client instance returned by `createClient()` instead of
|
|
10
|
+
* individual options. This might be also useful if you want to implement a
|
|
11
|
+
* custom client.
|
|
12
|
+
*/
|
|
13
|
+
client?: Client;
|
|
14
|
+
/**
|
|
15
|
+
* You can pass arbitrary values through the `meta` object. This can be
|
|
16
|
+
* used to access values that aren't defined as part of the SDK function.
|
|
17
|
+
*/
|
|
18
|
+
meta?: keyof ClientMeta extends never ? Record<string, unknown> : ClientMeta;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
class HeyApiClient {
|
|
22
|
+
protected client: Client;
|
|
23
|
+
|
|
24
|
+
constructor(args?: {
|
|
25
|
+
client?: Client;
|
|
26
|
+
}) {
|
|
27
|
+
this.client = args?.client ?? client;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
class HeyApiRegistry<T> {
|
|
32
|
+
private readonly defaultKey = 'default';
|
|
33
|
+
|
|
34
|
+
private readonly instances: Map<string, T> = new Map();
|
|
35
|
+
|
|
36
|
+
get(key?: string): T {
|
|
37
|
+
const instance = this.instances.get(key ?? this.defaultKey);
|
|
38
|
+
if (!instance) {
|
|
39
|
+
throw new Error(`No SDK client found. Create one with "new DutchmanBridge()" to fix this error.`);
|
|
40
|
+
}
|
|
41
|
+
return instance;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
set(value: T, key?: string): void {
|
|
45
|
+
this.instances.set(key ?? this.defaultKey, value);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export class Customers extends HeyApiClient {
|
|
50
|
+
/**
|
|
51
|
+
* Register a customer under your account
|
|
52
|
+
*
|
|
53
|
+
* The customer never authenticates with Dutchman Bridge directly -- that's entirely yours to manage. This just attributes a new customer id to your account so every other Partner API call can reference it.
|
|
54
|
+
*/
|
|
55
|
+
public register<ThrowOnError extends boolean = false>(options: Options<CustomersRegisterData, ThrowOnError>): RequestResult<CustomersRegisterResponses, unknown, ThrowOnError> {
|
|
56
|
+
return (options.client ?? this.client).post<CustomersRegisterResponses, unknown, ThrowOnError>({
|
|
57
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
58
|
+
url: '/api/v1/partner/v1/customers',
|
|
59
|
+
...options,
|
|
60
|
+
headers: {
|
|
61
|
+
'Content-Type': 'application/json',
|
|
62
|
+
...options.headers
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Read one of your customer's profile
|
|
69
|
+
*/
|
|
70
|
+
public get<ThrowOnError extends boolean = false>(options: Options<CustomersGetData, ThrowOnError>): RequestResult<CustomersGetResponses, unknown, ThrowOnError> {
|
|
71
|
+
return (options.client ?? this.client).get<CustomersGetResponses, unknown, ThrowOnError>({
|
|
72
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
73
|
+
url: '/api/v1/partner/v1/customers/{customerId}',
|
|
74
|
+
...options
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* A customer's full snapshot -- profile, KYC, and wallet -- in one call
|
|
80
|
+
*
|
|
81
|
+
* Replaces separately calling profile/kyc/wallet routes when you just need a customer's current state, e.g. right after registration or to reconcile after a webhook. Not a substitute for the wallet routes' live balance -- fetch this fresh rather than caching it indefinitely, since a crypto deposit or fiat funding event has no webhook of its own yet.
|
|
82
|
+
*/
|
|
83
|
+
public full<ThrowOnError extends boolean = false>(options: Options<CustomersFullData, ThrowOnError>): RequestResult<CustomersFullResponses, unknown, ThrowOnError> {
|
|
84
|
+
return (options.client ?? this.client).get<CustomersFullResponses, unknown, ThrowOnError>({
|
|
85
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
86
|
+
url: '/api/v1/partner/v1/customers/{customerId}/full',
|
|
87
|
+
...options
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export class Profile extends HeyApiClient {
|
|
93
|
+
/**
|
|
94
|
+
* Delete the customer's account
|
|
95
|
+
*
|
|
96
|
+
* Refused (409) while the customer still holds a balance or has a transfer in flight. Deleting twice is not an error.
|
|
97
|
+
*/
|
|
98
|
+
public deleteAccount<ThrowOnError extends boolean = false>(options: Options<ProfileDeleteAccountData, ThrowOnError>): RequestResult<ProfileDeleteAccountResponses, unknown, ThrowOnError> {
|
|
99
|
+
return (options.client ?? this.client).delete<ProfileDeleteAccountResponses, unknown, ThrowOnError>({
|
|
100
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
101
|
+
url: '/api/v1/partner/v1/customers/{customerId}',
|
|
102
|
+
...options
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* The customer's profile
|
|
108
|
+
*/
|
|
109
|
+
public profile<ThrowOnError extends boolean = false>(options: Options<ProfileProfileData, ThrowOnError>): RequestResult<ProfileProfileResponses, unknown, ThrowOnError> {
|
|
110
|
+
return (options.client ?? this.client).get<ProfileProfileResponses, unknown, ThrowOnError>({
|
|
111
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
112
|
+
url: '/api/v1/partner/v1/customers/{customerId}/profile',
|
|
113
|
+
...options
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Update the customer's profile
|
|
119
|
+
*
|
|
120
|
+
* Identity fields can be filled in while empty; once KYC is approved they lock, and only an admin re-verification request reopens them.
|
|
121
|
+
*/
|
|
122
|
+
public updateProfile<ThrowOnError extends boolean = false>(options: Options<ProfileUpdateProfileData, ThrowOnError>): RequestResult<ProfileUpdateProfileResponses, unknown, ThrowOnError> {
|
|
123
|
+
return (options.client ?? this.client).patch<ProfileUpdateProfileResponses, unknown, ThrowOnError>({
|
|
124
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
125
|
+
url: '/api/v1/partner/v1/customers/{customerId}/profile',
|
|
126
|
+
...options,
|
|
127
|
+
headers: {
|
|
128
|
+
'Content-Type': 'application/json',
|
|
129
|
+
...options.headers
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Change the customer's password
|
|
136
|
+
*/
|
|
137
|
+
public changePassword<ThrowOnError extends boolean = false>(options: Options<ProfileChangePasswordData, ThrowOnError>): RequestResult<ProfileChangePasswordResponses, unknown, ThrowOnError> {
|
|
138
|
+
return (options.client ?? this.client).patch<ProfileChangePasswordResponses, unknown, ThrowOnError>({
|
|
139
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
140
|
+
url: '/api/v1/partner/v1/customers/{customerId}/change-password',
|
|
141
|
+
...options,
|
|
142
|
+
headers: {
|
|
143
|
+
'Content-Type': 'application/json',
|
|
144
|
+
...options.headers
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Read the customer's settlement preference (AUTO to default bank vs MANUAL hold)
|
|
151
|
+
*/
|
|
152
|
+
public getSettlementMode<ThrowOnError extends boolean = false>(options: Options<ProfileGetSettlementModeData, ThrowOnError>): RequestResult<ProfileGetSettlementModeResponses, unknown, ThrowOnError> {
|
|
153
|
+
return (options.client ?? this.client).get<ProfileGetSettlementModeResponses, unknown, ThrowOnError>({
|
|
154
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
155
|
+
url: '/api/v1/partner/v1/customers/{customerId}/settlement-mode',
|
|
156
|
+
...options
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Update how the customer's sale proceeds settle
|
|
162
|
+
*/
|
|
163
|
+
public setSettlementMode<ThrowOnError extends boolean = false>(options: Options<ProfileSetSettlementModeData, ThrowOnError>): RequestResult<ProfileSetSettlementModeResponses, unknown, ThrowOnError> {
|
|
164
|
+
return (options.client ?? this.client).patch<ProfileSetSettlementModeResponses, unknown, ThrowOnError>({
|
|
165
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
166
|
+
url: '/api/v1/partner/v1/customers/{customerId}/settlement-mode',
|
|
167
|
+
...options,
|
|
168
|
+
headers: {
|
|
169
|
+
'Content-Type': 'application/json',
|
|
170
|
+
...options.headers
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* The customer's withdrawal / global payout history, newest first
|
|
177
|
+
*/
|
|
178
|
+
public withdrawals<ThrowOnError extends boolean = false>(options: Options<ProfileWithdrawalsData, ThrowOnError>): RequestResult<ProfileWithdrawalsResponses, unknown, ThrowOnError> {
|
|
179
|
+
return (options.client ?? this.client).get<ProfileWithdrawalsResponses, unknown, ThrowOnError>({
|
|
180
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
181
|
+
url: '/api/v1/partner/v1/customers/{customerId}/withdrawals',
|
|
182
|
+
...options
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export class Kyc extends HeyApiClient {
|
|
188
|
+
/**
|
|
189
|
+
* A customer's KYC records, newest first
|
|
190
|
+
*/
|
|
191
|
+
public status<ThrowOnError extends boolean = false>(options: Options<KycStatusData, ThrowOnError>): RequestResult<KycStatusResponses, unknown, ThrowOnError> {
|
|
192
|
+
return (options.client ?? this.client).get<KycStatusResponses, unknown, ThrowOnError>({
|
|
193
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
194
|
+
url: '/api/v1/partner/v1/customers/{customerId}/kyc',
|
|
195
|
+
...options
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Any open re-verification request an admin has raised for the customer
|
|
201
|
+
*
|
|
202
|
+
* The items to re-provide plus the message, or null when there is nothing to re-verify.
|
|
203
|
+
*/
|
|
204
|
+
public reverification<ThrowOnError extends boolean = false>(options: Options<KycReverificationData, ThrowOnError>): RequestResult<KycReverificationResponses, unknown, ThrowOnError> {
|
|
205
|
+
return (options.client ?? this.client).get<KycReverificationResponses, unknown, ThrowOnError>({
|
|
206
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
207
|
+
url: '/api/v1/partner/v1/customers/{customerId}/kyc/reverification',
|
|
208
|
+
...options
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Submit Tier 1 (BVN + NIN)
|
|
214
|
+
*/
|
|
215
|
+
public tier1<ThrowOnError extends boolean = false>(options: Options<KycTier1Data, ThrowOnError>): RequestResult<KycTier1Responses, unknown, ThrowOnError> {
|
|
216
|
+
return (options.client ?? this.client).post<KycTier1Responses, unknown, ThrowOnError>({
|
|
217
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
218
|
+
url: '/api/v1/partner/v1/customers/{customerId}/kyc/tier1',
|
|
219
|
+
...options,
|
|
220
|
+
headers: {
|
|
221
|
+
'Content-Type': 'application/json',
|
|
222
|
+
...options.headers
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Submit Tier 2 (ID document, from a prior /kyc/documents upload)
|
|
229
|
+
*/
|
|
230
|
+
public tier2<ThrowOnError extends boolean = false>(options: Options<KycTier2Data, ThrowOnError>): RequestResult<KycTier2Responses, unknown, ThrowOnError> {
|
|
231
|
+
return (options.client ?? this.client).post<KycTier2Responses, unknown, ThrowOnError>({
|
|
232
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
233
|
+
url: '/api/v1/partner/v1/customers/{customerId}/kyc/tier2',
|
|
234
|
+
...options,
|
|
235
|
+
headers: {
|
|
236
|
+
'Content-Type': 'application/json',
|
|
237
|
+
...options.headers
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Submit Tier 3 (date of birth + address, for cross-border corridors)
|
|
244
|
+
*/
|
|
245
|
+
public tier3<ThrowOnError extends boolean = false>(options: Options<KycTier3Data, ThrowOnError>): RequestResult<KycTier3Responses, unknown, ThrowOnError> {
|
|
246
|
+
return (options.client ?? this.client).post<KycTier3Responses, unknown, ThrowOnError>({
|
|
247
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
248
|
+
url: '/api/v1/partner/v1/customers/{customerId}/kyc/tier3',
|
|
249
|
+
...options,
|
|
250
|
+
headers: {
|
|
251
|
+
'Content-Type': 'application/json',
|
|
252
|
+
...options.headers
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Check a customer's selfie before submitting it
|
|
259
|
+
*
|
|
260
|
+
* Returns what to change -- too dark, blurry, sunglasses, more than one face -- so it can be retaken now rather than rejected by a reviewer days later. Advisory only: a submission is never blocked on this.
|
|
261
|
+
*/
|
|
262
|
+
public selfieCheckRoute<ThrowOnError extends boolean = false>(options: Options<KycSelfieCheckRouteData, ThrowOnError>): RequestResult<KycSelfieCheckRouteResponses, unknown, ThrowOnError> {
|
|
263
|
+
return (options.client ?? this.client).post<KycSelfieCheckRouteResponses, unknown, ThrowOnError>({
|
|
264
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
265
|
+
url: '/api/v1/partner/v1/customers/{customerId}/kyc/selfie-check',
|
|
266
|
+
...options,
|
|
267
|
+
headers: {
|
|
268
|
+
'Content-Type': 'application/json',
|
|
269
|
+
...options.headers
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Upload a customer's ID document or selfie ahead of Tier 2
|
|
276
|
+
*/
|
|
277
|
+
public document<ThrowOnError extends boolean = false>(options: Options<KycDocumentData, ThrowOnError>): RequestResult<KycDocumentResponses, unknown, ThrowOnError> {
|
|
278
|
+
return (options.client ?? this.client).post<KycDocumentResponses, unknown, ThrowOnError>({
|
|
279
|
+
...formDataBodySerializer,
|
|
280
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
281
|
+
url: '/api/v1/partner/v1/customers/{customerId}/kyc/documents',
|
|
282
|
+
...options,
|
|
283
|
+
headers: {
|
|
284
|
+
'Content-Type': null,
|
|
285
|
+
...options.headers
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
export class Wallet extends HeyApiClient {
|
|
292
|
+
/**
|
|
293
|
+
* USDT + local fiat balance
|
|
294
|
+
*/
|
|
295
|
+
public balance<ThrowOnError extends boolean = false>(options: Options<WalletBalanceData, ThrowOnError>): RequestResult<WalletBalanceResponses, unknown, ThrowOnError> {
|
|
296
|
+
return (options.client ?? this.client).get<WalletBalanceResponses, unknown, ThrowOnError>({
|
|
297
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
298
|
+
url: '/api/v1/partner/v1/customers/{customerId}/balance',
|
|
299
|
+
...options
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Live updates: re-emits the customer's balance on every credit/debit
|
|
305
|
+
*
|
|
306
|
+
* Mirrors Dutchman Bridge's own consumer /user/balance/stream, scoped to the customer instead of the caller's own JWT. Long-lived --keep the connection open rather than reconnecting per update.
|
|
307
|
+
*/
|
|
308
|
+
public streamBalance<ThrowOnError extends boolean = false>(options: Options<WalletStreamBalanceData, ThrowOnError>): RequestResult<WalletStreamBalanceResponses, unknown, ThrowOnError> {
|
|
309
|
+
return (options.client ?? this.client).get<WalletStreamBalanceResponses, unknown, ThrowOnError>({
|
|
310
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
311
|
+
url: '/api/v1/partner/v1/customers/{customerId}/balance/stream',
|
|
312
|
+
...options
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Recent balance movements, cursor-paginated
|
|
318
|
+
*/
|
|
319
|
+
public transactions<ThrowOnError extends boolean = false>(options: Options<WalletTransactionsData, ThrowOnError>): RequestResult<WalletTransactionsResponses, unknown, ThrowOnError> {
|
|
320
|
+
return (options.client ?? this.client).get<WalletTransactionsResponses, unknown, ThrowOnError>({
|
|
321
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
322
|
+
url: '/api/v1/partner/v1/customers/{customerId}/transactions',
|
|
323
|
+
...options
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* The customer's per-network USDT deposit addresses
|
|
329
|
+
*/
|
|
330
|
+
public addresses<ThrowOnError extends boolean = false>(options: Options<WalletAddressesData, ThrowOnError>): RequestResult<WalletAddressesResponses, unknown, ThrowOnError> {
|
|
331
|
+
return (options.client ?? this.client).get<WalletAddressesResponses, unknown, ThrowOnError>({
|
|
332
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
333
|
+
url: '/api/v1/partner/v1/customers/{customerId}/addresses',
|
|
334
|
+
...options
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* Local-currency virtual account for fiat funding
|
|
340
|
+
*
|
|
341
|
+
* Issued on first read in the customer's own fiat (NGN needs an approved BVN first); the same account is returned on every read after.
|
|
342
|
+
*/
|
|
343
|
+
public virtualAccountFor<ThrowOnError extends boolean = false>(options: Options<WalletVirtualAccountForData, ThrowOnError>): RequestResult<WalletVirtualAccountForResponses, unknown, ThrowOnError> {
|
|
344
|
+
return (options.client ?? this.client).get<WalletVirtualAccountForResponses, unknown, ThrowOnError>({
|
|
345
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
346
|
+
url: '/api/v1/partner/v1/customers/{customerId}/virtual-account',
|
|
347
|
+
...options
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Pay a held balance out to the customer's default bank account
|
|
353
|
+
*/
|
|
354
|
+
public withdraw<ThrowOnError extends boolean = false>(options: Options<WalletWithdrawData, ThrowOnError>): RequestResult<WalletWithdrawResponses, unknown, ThrowOnError> {
|
|
355
|
+
return (options.client ?? this.client).post<WalletWithdrawResponses, unknown, ThrowOnError>({
|
|
356
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
357
|
+
url: '/api/v1/partner/v1/customers/{customerId}/withdraw',
|
|
358
|
+
...options,
|
|
359
|
+
headers: {
|
|
360
|
+
'Content-Type': 'application/json',
|
|
361
|
+
...options.headers
|
|
362
|
+
}
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Start a fund-by-charge: a one-off bank account (bank_transfer) or a redirect URL to authorise (eft, ZAR)
|
|
368
|
+
*/
|
|
369
|
+
public initiateFundingCharge<ThrowOnError extends boolean = false>(options: Options<WalletInitiateFundingChargeData, ThrowOnError>): RequestResult<WalletInitiateFundingChargeResponses, unknown, ThrowOnError> {
|
|
370
|
+
return (options.client ?? this.client).post<WalletInitiateFundingChargeResponses, unknown, ThrowOnError>({
|
|
371
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
372
|
+
url: '/api/v1/partner/v1/customers/{customerId}/funding/charge',
|
|
373
|
+
...options,
|
|
374
|
+
headers: {
|
|
375
|
+
'Content-Type': 'application/json',
|
|
376
|
+
...options.headers
|
|
377
|
+
}
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* The customer's funding charges, newest first
|
|
383
|
+
*/
|
|
384
|
+
public fundingCharges<ThrowOnError extends boolean = false>(options: Options<WalletFundingChargesData, ThrowOnError>): RequestResult<WalletFundingChargesResponses, unknown, ThrowOnError> {
|
|
385
|
+
return (options.client ?? this.client).get<WalletFundingChargesResponses, unknown, ThrowOnError>({
|
|
386
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
387
|
+
url: '/api/v1/partner/v1/customers/{customerId}/funding/charges',
|
|
388
|
+
...options
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
export class Send extends HeyApiClient {
|
|
394
|
+
/**
|
|
395
|
+
* Networks the customer can send USDT/USDC on, with fee and minimum
|
|
396
|
+
*/
|
|
397
|
+
public networks<ThrowOnError extends boolean = false>(options: Options<SendNetworksData, ThrowOnError>): RequestResult<SendNetworksResponses, unknown, ThrowOnError> {
|
|
398
|
+
return (options.client ?? this.client).get<SendNetworksResponses, unknown, ThrowOnError>({
|
|
399
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
400
|
+
url: '/api/v1/partner/v1/customers/{customerId}/send/networks',
|
|
401
|
+
...options
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Quote a send before submitting it
|
|
407
|
+
*/
|
|
408
|
+
public quote<ThrowOnError extends boolean = false>(options: Options<SendQuoteData, ThrowOnError>): RequestResult<SendQuoteResponses, unknown, ThrowOnError> {
|
|
409
|
+
return (options.client ?? this.client).post<SendQuoteResponses, unknown, ThrowOnError>({
|
|
410
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
411
|
+
url: '/api/v1/partner/v1/customers/{customerId}/send/quote',
|
|
412
|
+
...options,
|
|
413
|
+
headers: {
|
|
414
|
+
'Content-Type': 'application/json',
|
|
415
|
+
...options.headers
|
|
416
|
+
}
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* Send USDT on-chain to the given address
|
|
422
|
+
*/
|
|
423
|
+
public submit<ThrowOnError extends boolean = false>(options: Options<SendSubmitData, ThrowOnError>): RequestResult<SendSubmitResponses, unknown, ThrowOnError> {
|
|
424
|
+
return (options.client ?? this.client).post<SendSubmitResponses, unknown, ThrowOnError>({
|
|
425
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
426
|
+
url: '/api/v1/partner/v1/customers/{customerId}/send',
|
|
427
|
+
...options,
|
|
428
|
+
headers: {
|
|
429
|
+
'Content-Type': 'application/json',
|
|
430
|
+
...options.headers
|
|
431
|
+
}
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
export class GlobalSend extends HeyApiClient {
|
|
437
|
+
/**
|
|
438
|
+
* Re-check the customer's level 3 verification status with the partner
|
|
439
|
+
*/
|
|
440
|
+
public verificationStatus<ThrowOnError extends boolean = false>(options: Options<GlobalSendVerificationStatusData, ThrowOnError>): RequestResult<GlobalSendVerificationStatusResponses, unknown, ThrowOnError> {
|
|
441
|
+
return (options.client ?? this.client).get<GlobalSendVerificationStatusResponses, unknown, ThrowOnError>({
|
|
442
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
443
|
+
url: '/api/v1/partner/v1/customers/{customerId}/global-send/verification',
|
|
444
|
+
...options
|
|
445
|
+
});
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Countries the customer can send to, with their currency and rails
|
|
450
|
+
*/
|
|
451
|
+
public corridors<ThrowOnError extends boolean = false>(options: Options<GlobalSendCorridorsData, ThrowOnError>): RequestResult<GlobalSendCorridorsResponses, unknown, ThrowOnError> {
|
|
452
|
+
return (options.client ?? this.client).get<GlobalSendCorridorsResponses, unknown, ThrowOnError>({
|
|
453
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
454
|
+
url: '/api/v1/partner/v1/customers/{customerId}/global-send/corridors',
|
|
455
|
+
...options
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
/**
|
|
460
|
+
* Price a cross-border send for the customer
|
|
461
|
+
*/
|
|
462
|
+
public quote<ThrowOnError extends boolean = false>(options: Options<GlobalSendQuoteData, ThrowOnError>): RequestResult<GlobalSendQuoteResponses, unknown, ThrowOnError> {
|
|
463
|
+
return (options.client ?? this.client).post<GlobalSendQuoteResponses, unknown, ThrowOnError>({
|
|
464
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
465
|
+
url: '/api/v1/partner/v1/customers/{customerId}/global-send/quote',
|
|
466
|
+
...options,
|
|
467
|
+
headers: {
|
|
468
|
+
'Content-Type': 'application/json',
|
|
469
|
+
...options.headers
|
|
470
|
+
}
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
/**
|
|
475
|
+
* Initiate a cross-border send for the customer
|
|
476
|
+
*/
|
|
477
|
+
public initiate<ThrowOnError extends boolean = false>(options: Options<GlobalSendInitiateData, ThrowOnError>): RequestResult<GlobalSendInitiateResponses, unknown, ThrowOnError> {
|
|
478
|
+
return (options.client ?? this.client).post<GlobalSendInitiateResponses, unknown, ThrowOnError>({
|
|
479
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
480
|
+
url: '/api/v1/partner/v1/customers/{customerId}/global-send/initiate',
|
|
481
|
+
...options,
|
|
482
|
+
headers: {
|
|
483
|
+
'Content-Type': 'application/json',
|
|
484
|
+
...options.headers
|
|
485
|
+
}
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
export class Ramp extends HeyApiClient {
|
|
491
|
+
/**
|
|
492
|
+
* Price a buy (fiat -> USDT) against the customer's fiat balance
|
|
493
|
+
*/
|
|
494
|
+
public buyQuote<ThrowOnError extends boolean = false>(options: Options<RampBuyQuoteData, ThrowOnError>): RequestResult<RampBuyQuoteResponses, unknown, ThrowOnError> {
|
|
495
|
+
return (options.client ?? this.client).post<RampBuyQuoteResponses, unknown, ThrowOnError>({
|
|
496
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
497
|
+
url: '/api/v1/partner/v1/customers/{customerId}/buy/quote',
|
|
498
|
+
...options,
|
|
499
|
+
headers: {
|
|
500
|
+
'Content-Type': 'application/json',
|
|
501
|
+
...options.headers
|
|
502
|
+
}
|
|
503
|
+
});
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* Execute a buy from the customer's fiat balance
|
|
508
|
+
*/
|
|
509
|
+
public buy<ThrowOnError extends boolean = false>(options: Options<RampBuyData, ThrowOnError>): RequestResult<RampBuyResponses, unknown, ThrowOnError> {
|
|
510
|
+
return (options.client ?? this.client).post<RampBuyResponses, unknown, ThrowOnError>({
|
|
511
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
512
|
+
url: '/api/v1/partner/v1/customers/{customerId}/buy/execute',
|
|
513
|
+
...options,
|
|
514
|
+
headers: {
|
|
515
|
+
'Content-Type': 'application/json',
|
|
516
|
+
...options.headers
|
|
517
|
+
}
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
/**
|
|
522
|
+
* Networks the customer can sell USDT on
|
|
523
|
+
*/
|
|
524
|
+
public sellNetworks<ThrowOnError extends boolean = false>(options: Options<RampSellNetworksData, ThrowOnError>): RequestResult<RampSellNetworksResponses, unknown, ThrowOnError> {
|
|
525
|
+
return (options.client ?? this.client).get<RampSellNetworksResponses, unknown, ThrowOnError>({
|
|
526
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
527
|
+
url: '/api/v1/partner/v1/customers/{customerId}/sell/networks',
|
|
528
|
+
...options
|
|
529
|
+
});
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* Live USDT rates in the customer's local fiat, for previewing a conversion
|
|
534
|
+
*
|
|
535
|
+
* Does not lock a rate -- checkout still goes through the quote routes.
|
|
536
|
+
*/
|
|
537
|
+
public rate<ThrowOnError extends boolean = false>(options: Options<RampRateData, ThrowOnError>): RequestResult<RampRateResponses, unknown, ThrowOnError> {
|
|
538
|
+
return (options.client ?? this.client).get<RampRateResponses, unknown, ThrowOnError>({
|
|
539
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
540
|
+
url: '/api/v1/partner/v1/customers/{customerId}/rate',
|
|
541
|
+
...options
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
/**
|
|
546
|
+
* Price a sell (USDT -> fiat) against the customer's USDT balance
|
|
547
|
+
*/
|
|
548
|
+
public sellQuote<ThrowOnError extends boolean = false>(options: Options<RampSellQuoteData, ThrowOnError>): RequestResult<RampSellQuoteResponses, unknown, ThrowOnError> {
|
|
549
|
+
return (options.client ?? this.client).post<RampSellQuoteResponses, unknown, ThrowOnError>({
|
|
550
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
551
|
+
url: '/api/v1/partner/v1/customers/{customerId}/sell/quote',
|
|
552
|
+
...options,
|
|
553
|
+
headers: {
|
|
554
|
+
'Content-Type': 'application/json',
|
|
555
|
+
...options.headers
|
|
556
|
+
}
|
|
557
|
+
});
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
* Execute a sell from the customer's USDT balance
|
|
562
|
+
*/
|
|
563
|
+
public sell<ThrowOnError extends boolean = false>(options: Options<RampSellData, ThrowOnError>): RequestResult<RampSellResponses, unknown, ThrowOnError> {
|
|
564
|
+
return (options.client ?? this.client).post<RampSellResponses, unknown, ThrowOnError>({
|
|
565
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
566
|
+
url: '/api/v1/partner/v1/customers/{customerId}/sell/execute',
|
|
567
|
+
...options,
|
|
568
|
+
headers: {
|
|
569
|
+
'Content-Type': 'application/json',
|
|
570
|
+
...options.headers
|
|
571
|
+
}
|
|
572
|
+
});
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
export class Bank extends HeyApiClient {
|
|
577
|
+
/**
|
|
578
|
+
* Banks for the given (or the customer's own) country/currency
|
|
579
|
+
*/
|
|
580
|
+
public banks<ThrowOnError extends boolean = false>(options: Options<BankBanksData, ThrowOnError>): RequestResult<BankBanksResponses, unknown, ThrowOnError> {
|
|
581
|
+
return (options.client ?? this.client).get<BankBanksResponses, unknown, ThrowOnError>({
|
|
582
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
583
|
+
url: '/api/v1/partner/v1/customers/{customerId}/banks',
|
|
584
|
+
...options
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
/**
|
|
589
|
+
* Resolve an account number to its account name
|
|
590
|
+
*/
|
|
591
|
+
public verifyAccount<ThrowOnError extends boolean = false>(options: Options<BankVerifyAccountData, ThrowOnError>): RequestResult<BankVerifyAccountResponses, unknown, ThrowOnError> {
|
|
592
|
+
return (options.client ?? this.client).post<BankVerifyAccountResponses, unknown, ThrowOnError>({
|
|
593
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
594
|
+
url: '/api/v1/partner/v1/customers/{customerId}/bank/verify-account',
|
|
595
|
+
...options,
|
|
596
|
+
headers: {
|
|
597
|
+
'Content-Type': 'application/json',
|
|
598
|
+
...options.headers
|
|
599
|
+
}
|
|
600
|
+
});
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* List the customer's linked payout accounts, default first
|
|
605
|
+
*/
|
|
606
|
+
public getAccounts<ThrowOnError extends boolean = false>(options: Options<BankGetAccountsData, ThrowOnError>): RequestResult<BankGetAccountsResponses, unknown, ThrowOnError> {
|
|
607
|
+
return (options.client ?? this.client).get<BankGetAccountsResponses, unknown, ThrowOnError>({
|
|
608
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
609
|
+
url: '/api/v1/partner/v1/customers/{customerId}/accounts',
|
|
610
|
+
...options
|
|
611
|
+
});
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
/**
|
|
615
|
+
* Link a payout bank account to the customer
|
|
616
|
+
*/
|
|
617
|
+
public addAccount<ThrowOnError extends boolean = false>(options: Options<BankAddAccountData, ThrowOnError>): RequestResult<BankAddAccountResponses, unknown, ThrowOnError> {
|
|
618
|
+
return (options.client ?? this.client).post<BankAddAccountResponses, unknown, ThrowOnError>({
|
|
619
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
620
|
+
url: '/api/v1/partner/v1/customers/{customerId}/accounts',
|
|
621
|
+
...options,
|
|
622
|
+
headers: {
|
|
623
|
+
'Content-Type': 'application/json',
|
|
624
|
+
...options.headers
|
|
625
|
+
}
|
|
626
|
+
});
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
/**
|
|
630
|
+
* Make a linked account the customer's default payout destination
|
|
631
|
+
*/
|
|
632
|
+
public setDefaultAccount<ThrowOnError extends boolean = false>(options: Options<BankSetDefaultAccountData, ThrowOnError>): RequestResult<BankSetDefaultAccountResponses, unknown, ThrowOnError> {
|
|
633
|
+
return (options.client ?? this.client).patch<BankSetDefaultAccountResponses, unknown, ThrowOnError>({
|
|
634
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
635
|
+
url: '/api/v1/partner/v1/customers/{customerId}/accounts/{accountId}/default',
|
|
636
|
+
...options
|
|
637
|
+
});
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
/**
|
|
641
|
+
* Remove a customer's linked payout account
|
|
642
|
+
*/
|
|
643
|
+
public deleteAccount<ThrowOnError extends boolean = false>(options: Options<BankDeleteAccountData, ThrowOnError>): RequestResult<BankDeleteAccountResponses, unknown, ThrowOnError> {
|
|
644
|
+
return (options.client ?? this.client).delete<BankDeleteAccountResponses, unknown, ThrowOnError>({
|
|
645
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
646
|
+
url: '/api/v1/partner/v1/customers/{customerId}/accounts/{accountId}',
|
|
647
|
+
...options
|
|
648
|
+
});
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
export class Receiving extends HeyApiClient {
|
|
653
|
+
/**
|
|
654
|
+
* Foreign currencies the customer can be paid in
|
|
655
|
+
*/
|
|
656
|
+
public currencies<ThrowOnError extends boolean = false>(options: Options<ReceivingCurrenciesData, ThrowOnError>): RequestResult<ReceivingCurrenciesResponses, unknown, ThrowOnError> {
|
|
657
|
+
return (options.client ?? this.client).get<ReceivingCurrenciesResponses, unknown, ThrowOnError>({
|
|
658
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
659
|
+
url: '/api/v1/partner/v1/customers/{customerId}/receiving-accounts/currencies',
|
|
660
|
+
...options
|
|
661
|
+
});
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
/**
|
|
665
|
+
* Every foreign-currency account the customer holds
|
|
666
|
+
*/
|
|
667
|
+
public list<ThrowOnError extends boolean = false>(options: Options<ReceivingListData, ThrowOnError>): RequestResult<ReceivingListResponses, unknown, ThrowOnError> {
|
|
668
|
+
return (options.client ?? this.client).get<ReceivingListResponses, unknown, ThrowOnError>({
|
|
669
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
670
|
+
url: '/api/v1/partner/v1/customers/{customerId}/receiving-accounts',
|
|
671
|
+
...options
|
|
672
|
+
});
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
/**
|
|
676
|
+
* Payments seen on the customer's receiving accounts, including ones still in flight
|
|
677
|
+
*/
|
|
678
|
+
public activity<ThrowOnError extends boolean = false>(options: Options<ReceivingActivityData, ThrowOnError>): RequestResult<ReceivingActivityResponses, unknown, ThrowOnError> {
|
|
679
|
+
return (options.client ?? this.client).get<ReceivingActivityResponses, unknown, ThrowOnError>({
|
|
680
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
681
|
+
url: '/api/v1/partner/v1/customers/{customerId}/receiving-accounts/activity',
|
|
682
|
+
...options
|
|
683
|
+
});
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
/**
|
|
687
|
+
* Open (or return) the customer's account for one currency
|
|
688
|
+
*
|
|
689
|
+
* Idempotent per currency -- calling twice returns the same account rather than opening a second one.
|
|
690
|
+
*/
|
|
691
|
+
public open<ThrowOnError extends boolean = false>(options: Options<ReceivingOpenData, ThrowOnError>): RequestResult<ReceivingOpenResponses, unknown, ThrowOnError> {
|
|
692
|
+
return (options.client ?? this.client).post<ReceivingOpenResponses, unknown, ThrowOnError>({
|
|
693
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
694
|
+
url: '/api/v1/partner/v1/customers/{customerId}/receiving-accounts/{currency}',
|
|
695
|
+
...options
|
|
696
|
+
});
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
/**
|
|
700
|
+
* Re-read one of the customer's accounts from the partner
|
|
701
|
+
*
|
|
702
|
+
* An account is often issued pending and activated shortly after, and nothing pushes a notification for that transition.
|
|
703
|
+
*/
|
|
704
|
+
public refresh<ThrowOnError extends boolean = false>(options: Options<ReceivingRefreshData, ThrowOnError>): RequestResult<ReceivingRefreshResponses, unknown, ThrowOnError> {
|
|
705
|
+
return (options.client ?? this.client).post<ReceivingRefreshResponses, unknown, ThrowOnError>({
|
|
706
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
707
|
+
url: '/api/v1/partner/v1/customers/{customerId}/receiving-accounts/{currency}/refresh',
|
|
708
|
+
...options
|
|
709
|
+
});
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
export class Countries extends HeyApiClient {
|
|
714
|
+
/**
|
|
715
|
+
* Countries currently enabled for onboarding
|
|
716
|
+
*/
|
|
717
|
+
public list<ThrowOnError extends boolean = false>(options?: Options<CountriesListData, ThrowOnError>): RequestResult<CountriesListResponses, unknown, ThrowOnError> {
|
|
718
|
+
return (options?.client ?? this.client).get<CountriesListResponses, unknown, ThrowOnError>({
|
|
719
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
720
|
+
url: '/api/v1/partner/v1/countries',
|
|
721
|
+
...options
|
|
722
|
+
});
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
export class Features extends HeyApiClient {
|
|
727
|
+
/**
|
|
728
|
+
* Every switchable capability and its current state
|
|
729
|
+
*/
|
|
730
|
+
public list<ThrowOnError extends boolean = false>(options?: Options<FeaturesListData, ThrowOnError>): RequestResult<FeaturesListResponses, unknown, ThrowOnError> {
|
|
731
|
+
return (options?.client ?? this.client).get<FeaturesListResponses, unknown, ThrowOnError>({
|
|
732
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
733
|
+
url: '/api/v1/partner/v1/features',
|
|
734
|
+
...options
|
|
735
|
+
});
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
export class Webhook extends HeyApiClient {
|
|
740
|
+
/**
|
|
741
|
+
* Your current webhook URL and whether a secret is set
|
|
742
|
+
*/
|
|
743
|
+
public config<ThrowOnError extends boolean = false>(options?: Options<WebhookConfigData, ThrowOnError>): RequestResult<WebhookConfigResponses, unknown, ThrowOnError> {
|
|
744
|
+
return (options?.client ?? this.client).get<WebhookConfigResponses, unknown, ThrowOnError>({
|
|
745
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
746
|
+
url: '/api/v1/partner/v1/webhook',
|
|
747
|
+
...options
|
|
748
|
+
});
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
/**
|
|
752
|
+
* Set your webhook URL and receive a new signing secret
|
|
753
|
+
*
|
|
754
|
+
* Validates the URL, mints a fresh secret (the old one stops working), stores it encrypted, and immediately POSTs a signed `webhook.test` event to the URL. The secret is returned here and nowhere else.
|
|
755
|
+
*/
|
|
756
|
+
public setUrl<ThrowOnError extends boolean = false>(options: Options<WebhookSetUrlData, ThrowOnError>): RequestResult<WebhookSetUrlResponses, unknown, ThrowOnError> {
|
|
757
|
+
return (options.client ?? this.client).put<WebhookSetUrlResponses, unknown, ThrowOnError>({
|
|
758
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
759
|
+
url: '/api/v1/partner/v1/webhook',
|
|
760
|
+
...options,
|
|
761
|
+
headers: {
|
|
762
|
+
'Content-Type': 'application/json',
|
|
763
|
+
...options.headers
|
|
764
|
+
}
|
|
765
|
+
});
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
/**
|
|
769
|
+
* Rotate the signing secret
|
|
770
|
+
*
|
|
771
|
+
* The previous secret stops working immediately; queued deliveries are signed with the new one. A `webhook.test` ping is sent, as on PUT.
|
|
772
|
+
*/
|
|
773
|
+
public rotateSecret<ThrowOnError extends boolean = false>(options?: Options<WebhookRotateSecretData, ThrowOnError>): RequestResult<WebhookRotateSecretResponses, unknown, ThrowOnError> {
|
|
774
|
+
return (options?.client ?? this.client).post<WebhookRotateSecretResponses, unknown, ThrowOnError>({
|
|
775
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
776
|
+
url: '/api/v1/partner/v1/webhook/rotate-secret',
|
|
777
|
+
...options
|
|
778
|
+
});
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
/**
|
|
782
|
+
* Your delivery log, newest first
|
|
783
|
+
*/
|
|
784
|
+
public deliveries<ThrowOnError extends boolean = false>(options?: Options<WebhookDeliveriesData, ThrowOnError>): RequestResult<WebhookDeliveriesResponses, unknown, ThrowOnError> {
|
|
785
|
+
return (options?.client ?? this.client).get<WebhookDeliveriesResponses, unknown, ThrowOnError>({
|
|
786
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
787
|
+
url: '/api/v1/partner/v1/webhook/deliveries',
|
|
788
|
+
...options
|
|
789
|
+
});
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
/**
|
|
793
|
+
* One delivery, including the payload that was sent
|
|
794
|
+
*/
|
|
795
|
+
public delivery<ThrowOnError extends boolean = false>(options: Options<WebhookDeliveryData, ThrowOnError>): RequestResult<WebhookDeliveryResponses, unknown, ThrowOnError> {
|
|
796
|
+
return (options.client ?? this.client).get<WebhookDeliveryResponses, unknown, ThrowOnError>({
|
|
797
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
798
|
+
url: '/api/v1/partner/v1/webhook/deliveries/{id}',
|
|
799
|
+
...options
|
|
800
|
+
});
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
/**
|
|
804
|
+
* Send a delivery again
|
|
805
|
+
*
|
|
806
|
+
* Queues it for immediate re-delivery with the SAME event id, so your handler can recognise it as a duplicate if the original did land.
|
|
807
|
+
*/
|
|
808
|
+
public replay<ThrowOnError extends boolean = false>(options: Options<WebhookReplayData, ThrowOnError>): RequestResult<WebhookReplayResponses, unknown, ThrowOnError> {
|
|
809
|
+
return (options.client ?? this.client).post<WebhookReplayResponses, unknown, ThrowOnError>({
|
|
810
|
+
security: [{ name: 'x-api-key', type: 'apiKey' }],
|
|
811
|
+
url: '/api/v1/partner/v1/webhook/deliveries/{id}/replay',
|
|
812
|
+
...options
|
|
813
|
+
});
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
export class DutchmanBridge extends HeyApiClient {
|
|
818
|
+
public static readonly __registry: HeyApiRegistry<DutchmanBridge> = new HeyApiRegistry<DutchmanBridge>();
|
|
819
|
+
|
|
820
|
+
constructor(args?: {
|
|
821
|
+
client?: Client;
|
|
822
|
+
key?: string;
|
|
823
|
+
}) {
|
|
824
|
+
super(args);
|
|
825
|
+
DutchmanBridge.__registry.set(this, args?.key);
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
private _customers?: Customers;
|
|
829
|
+
get customers(): Customers {
|
|
830
|
+
return this._customers ??= new Customers({ client: this.client });
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
private _profile?: Profile;
|
|
834
|
+
get profile(): Profile {
|
|
835
|
+
return this._profile ??= new Profile({ client: this.client });
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
private _kyc?: Kyc;
|
|
839
|
+
get kyc(): Kyc {
|
|
840
|
+
return this._kyc ??= new Kyc({ client: this.client });
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
private _wallet?: Wallet;
|
|
844
|
+
get wallet(): Wallet {
|
|
845
|
+
return this._wallet ??= new Wallet({ client: this.client });
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
private _send?: Send;
|
|
849
|
+
get send(): Send {
|
|
850
|
+
return this._send ??= new Send({ client: this.client });
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
private _globalSend?: GlobalSend;
|
|
854
|
+
get globalSend(): GlobalSend {
|
|
855
|
+
return this._globalSend ??= new GlobalSend({ client: this.client });
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
private _ramp?: Ramp;
|
|
859
|
+
get ramp(): Ramp {
|
|
860
|
+
return this._ramp ??= new Ramp({ client: this.client });
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
private _bank?: Bank;
|
|
864
|
+
get bank(): Bank {
|
|
865
|
+
return this._bank ??= new Bank({ client: this.client });
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
private _receiving?: Receiving;
|
|
869
|
+
get receiving(): Receiving {
|
|
870
|
+
return this._receiving ??= new Receiving({ client: this.client });
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
private _countries?: Countries;
|
|
874
|
+
get countries(): Countries {
|
|
875
|
+
return this._countries ??= new Countries({ client: this.client });
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
private _features?: Features;
|
|
879
|
+
get features(): Features {
|
|
880
|
+
return this._features ??= new Features({ client: this.client });
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
private _webhook?: Webhook;
|
|
884
|
+
get webhook(): Webhook {
|
|
885
|
+
return this._webhook ??= new Webhook({ client: this.client });
|
|
886
|
+
}
|
|
887
|
+
}
|