@vrplatform/hyperline-client 1.0.30 → 1.0.32
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/build/main/_types.generated.d.ts +44928 -16283
- package/build/main/_types.generated.js.map +1 -1
- package/build/main/client.d.ts +1634 -428
- package/build/main/client.js +87 -62
- package/build/main/client.js.map +1 -1
- package/build/main/const.d.ts +19 -20
- package/build/main/const.js +31 -22
- package/build/main/const.js.map +1 -1
- package/build/main/hyperlineError.d.ts +5 -0
- package/build/main/hyperlineError.js +14 -0
- package/build/main/hyperlineError.js.map +1 -0
- package/build/main/index.d.ts +1 -0
- package/build/main/index.js +1 -0
- package/build/main/index.js.map +1 -1
- package/build/main/types.d.ts +3 -10
- package/build/main/types.js.map +1 -1
- package/build/main/utils/calculateMrr.d.ts +5 -5
- package/build/main/utils/calculateMrr.js +7 -16
- package/build/main/utils/calculateMrr.js.map +1 -1
- package/build/main/utils/index.d.ts +0 -1
- package/build/main/utils/index.js +0 -1
- package/build/main/utils/index.js.map +1 -1
- package/build/module/_types.generated.d.ts +44928 -16283
- package/build/module/_types.generated.js.map +1 -1
- package/build/module/client.d.ts +1634 -428
- package/build/module/client.js +87 -62
- package/build/module/client.js.map +1 -1
- package/build/module/const.d.ts +19 -20
- package/build/module/const.js +31 -22
- package/build/module/const.js.map +1 -1
- package/build/module/hyperlineError.d.ts +5 -0
- package/build/module/hyperlineError.js +16 -0
- package/build/module/hyperlineError.js.map +1 -0
- package/build/module/index.d.ts +1 -0
- package/build/module/index.js +1 -0
- package/build/module/index.js.map +1 -1
- package/build/module/types.d.ts +3 -10
- package/build/module/types.js.map +1 -1
- package/build/module/utils/calculateMrr.d.ts +5 -5
- package/build/module/utils/calculateMrr.js +7 -16
- package/build/module/utils/calculateMrr.js.map +1 -1
- package/build/module/utils/index.d.ts +0 -1
- package/build/module/utils/index.js +0 -1
- package/build/module/utils/index.js.map +1 -1
- package/package.json +4 -4
- package/src/_types.generated.ts +44918 -16274
- package/src/client.ts +152 -92
- package/src/const.ts +41 -28
- package/src/hyperlineError.ts +17 -0
- package/src/index.ts +1 -0
- package/src/types.ts +3 -11
- package/src/utils/calculateMrr.ts +15 -33
- package/src/utils/index.ts +0 -1
- package/build/main/utils/isTestingTeam.d.ts +0 -5
- package/build/main/utils/isTestingTeam.js +0 -4
- package/build/main/utils/isTestingTeam.js.map +0 -1
- package/build/module/utils/isTestingTeam.d.ts +0 -5
- package/build/module/utils/isTestingTeam.js +0 -4
- package/build/module/utils/isTestingTeam.js.map +0 -1
- package/src/utils/isTestingTeam.ts +0 -11
package/build/main/client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HyperlineError } from './hyperlineError';
|
|
2
2
|
import { arrayBufferToBase64 } from './utils';
|
|
3
3
|
export class HyperlineAPI {
|
|
4
4
|
constructor(token, logger = console) {
|
|
@@ -45,19 +45,11 @@ export class HyperlineAPI {
|
|
|
45
45
|
(typeof content === 'string' ? content : null) ||
|
|
46
46
|
(content ? JSON.stringify(content) : null) ||
|
|
47
47
|
'Unknown error';
|
|
48
|
-
if (status ===
|
|
49
|
-
// get difference between rate limit reset and now
|
|
50
|
-
const rateLimitReset = utc(result?.headers.get('x-ratelimit-reset'));
|
|
51
|
-
const diff = rateLimitReset.diff(utc(), 'milliseconds');
|
|
52
|
-
// wait until rate limit resets
|
|
53
|
-
await new Promise((resolve) => setTimeout(resolve, diff));
|
|
54
|
-
return await this.fetchBasic(path, options, data);
|
|
55
|
-
}
|
|
56
|
-
else if (status === 404 && method === 'GET') {
|
|
48
|
+
if (status === 404 && method === 'GET') {
|
|
57
49
|
return null;
|
|
58
50
|
}
|
|
59
51
|
else {
|
|
60
|
-
throw new
|
|
52
|
+
throw new HyperlineError(`Hyperline Error ${status} (${statusText}) in ${path} for ${method}: ${message}`, status, result.headers.get('Retry-After'));
|
|
61
53
|
}
|
|
62
54
|
}
|
|
63
55
|
else if (result.headers.get('content-type')?.includes('application/pdf'))
|
|
@@ -84,42 +76,60 @@ export class HyperlineAPI {
|
|
|
84
76
|
return await this.fetch(`/v1/invoicing-entities/${id}`);
|
|
85
77
|
}
|
|
86
78
|
// CUSTOMER
|
|
79
|
+
async getOrganisation(id) {
|
|
80
|
+
if (!id)
|
|
81
|
+
throw new Error('Missing organisation ID');
|
|
82
|
+
return await this.fetch(`/v1/organisations/${id}`);
|
|
83
|
+
}
|
|
84
|
+
async updateOrganisation(id, data) {
|
|
85
|
+
if (!id)
|
|
86
|
+
throw new Error('Missing organisation ID');
|
|
87
|
+
return await this.fetch(`/v1/organisations/${id}`, { method: 'PATCH' }, data);
|
|
88
|
+
}
|
|
87
89
|
async getCustomer(id) {
|
|
88
90
|
if (!id) {
|
|
89
91
|
this.logger.error('Missing customer ID', { id });
|
|
90
92
|
throw new Error('Missing customer ID');
|
|
91
93
|
}
|
|
92
|
-
return await this.fetch(`/
|
|
94
|
+
return await this.fetch(`/v2/customers/${id}`);
|
|
93
95
|
}
|
|
94
96
|
async getCustomerById(id) {
|
|
95
97
|
if (!id) {
|
|
96
98
|
this.logger.error('Missing tenant ID', { id });
|
|
97
99
|
throw new Error('Missing tenant ID');
|
|
98
100
|
}
|
|
99
|
-
const results = await this.
|
|
101
|
+
const results = await this.getCustomers({
|
|
102
|
+
external_id__equals: id,
|
|
103
|
+
status: 'all',
|
|
104
|
+
limit: 1,
|
|
105
|
+
});
|
|
100
106
|
return results?.data[0];
|
|
101
107
|
}
|
|
102
|
-
async getCustomers(
|
|
108
|
+
async getCustomers(query = {}) {
|
|
103
109
|
const queryParams = new URLSearchParams();
|
|
104
|
-
|
|
105
|
-
queryParams.set('skip', skip.toString());
|
|
106
|
-
for (const [key, value] of Object.entries(query)) {
|
|
110
|
+
for (const [key, value] of Object.entries({ limit: 100, ...query })) {
|
|
107
111
|
if (value === undefined || value === null)
|
|
108
112
|
continue;
|
|
109
113
|
queryParams.set(key, value.toString());
|
|
110
114
|
}
|
|
111
|
-
return await this.fetch(`/
|
|
115
|
+
return await this.fetch(`/v2/customers?${queryParams.toString()}`);
|
|
112
116
|
}
|
|
113
117
|
async getAllCustomers(items = [], query = {}) {
|
|
114
|
-
|
|
118
|
+
await new Promise((resolve) => setTimeout(resolve, 300));
|
|
119
|
+
const page = await this.getCustomers({
|
|
115
120
|
status: 'all',
|
|
116
121
|
...query,
|
|
117
|
-
})
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
122
|
+
});
|
|
123
|
+
if (!page)
|
|
124
|
+
throw new Error('Customer list not found');
|
|
125
|
+
if (page.has_more && !page.next_cursor)
|
|
126
|
+
throw new Error('Incomplete customer list');
|
|
127
|
+
return page.next_cursor
|
|
128
|
+
? this.getAllCustomers([...items, ...page.data], {
|
|
129
|
+
...query,
|
|
130
|
+
cursor: page.next_cursor,
|
|
131
|
+
})
|
|
132
|
+
: [...items, ...page.data];
|
|
123
133
|
}
|
|
124
134
|
async createCustomer(data) {
|
|
125
135
|
return await this.fetch('/v1/customers', { method: 'POST' }, { currency: 'USD', timezone: 'Etc/UTC', ...data });
|
|
@@ -151,6 +161,20 @@ export class HyperlineAPI {
|
|
|
151
161
|
async getCustomerPortal(id) {
|
|
152
162
|
return await this.fetch(`/v1/customers/${id}/portal`);
|
|
153
163
|
}
|
|
164
|
+
// SUBSCRIPTION TEMPLATES
|
|
165
|
+
async getSubscriptionTemplate(id) {
|
|
166
|
+
if (!id) {
|
|
167
|
+
this.logger.error('Missing subscription template ID', { id });
|
|
168
|
+
throw new Error('Missing subscription template ID');
|
|
169
|
+
}
|
|
170
|
+
return await this.fetch(`/v1/subscriptions/templates/${id}`);
|
|
171
|
+
}
|
|
172
|
+
async previewSubscriptionTransition(data) {
|
|
173
|
+
return await this.fetch('/v2/subscriptions/transitions/preview', { method: 'POST' }, data);
|
|
174
|
+
}
|
|
175
|
+
async createSubscriptionTransition(data) {
|
|
176
|
+
return await this.fetch('/v2/subscriptions/transitions', { method: 'POST' }, data);
|
|
177
|
+
}
|
|
154
178
|
// SUBSCRIPTION
|
|
155
179
|
async getSubscription(id, liveBilling = false) {
|
|
156
180
|
if (!id) {
|
|
@@ -181,12 +205,18 @@ export class HyperlineAPI {
|
|
|
181
205
|
async createSubscription(data) {
|
|
182
206
|
return await this.fetch('/v2/subscriptions', { method: 'POST' }, data);
|
|
183
207
|
}
|
|
208
|
+
async activateSubscription(id) {
|
|
209
|
+
return await this.fetch(`/v1/subscriptions/${id}/activate`, { method: 'POST' });
|
|
210
|
+
}
|
|
184
211
|
async updateSubscription(id, data) {
|
|
185
212
|
return await this.fetch(`/v2/subscriptions/${id}`, { method: 'PUT' }, data);
|
|
186
213
|
}
|
|
187
214
|
async createSubscriptionUpdate(id, data) {
|
|
188
215
|
return await this.fetch(`/v1/subscriptions/${id}/update`, { method: 'POST' }, data);
|
|
189
216
|
}
|
|
217
|
+
async createSubscriptionUpdates(id, data) {
|
|
218
|
+
return await this.fetch(`/v1/subscriptions/${id}/update-many`, { method: 'POST' }, data);
|
|
219
|
+
}
|
|
190
220
|
async cancelSubscription(id, data) {
|
|
191
221
|
return await this.fetch(`/v1/subscriptions/${id}/cancel`, {
|
|
192
222
|
method: 'POST',
|
|
@@ -197,47 +227,42 @@ export class HyperlineAPI {
|
|
|
197
227
|
method: 'POST',
|
|
198
228
|
});
|
|
199
229
|
}
|
|
200
|
-
//
|
|
201
|
-
async
|
|
202
|
-
|
|
203
|
-
this.logger.error('Missing plan ID', { id });
|
|
204
|
-
throw new Error('Missing plan ID');
|
|
205
|
-
}
|
|
206
|
-
return await this.fetch(`/v1/plans/${id}`);
|
|
230
|
+
// INVOICE
|
|
231
|
+
async createInvoice(data) {
|
|
232
|
+
return await this.fetch('/v1/invoices', { method: 'POST' }, data);
|
|
207
233
|
}
|
|
208
|
-
async
|
|
209
|
-
|
|
234
|
+
async updateInvoice(id, data) {
|
|
235
|
+
if (!id)
|
|
236
|
+
throw new Error('Missing invoice ID');
|
|
237
|
+
return await this.fetch(`/v1/invoices/${id}`, { method: 'PATCH' }, data);
|
|
210
238
|
}
|
|
211
|
-
// INVOICE
|
|
212
239
|
async getInvoice(id) {
|
|
213
240
|
if (!id) {
|
|
214
241
|
this.logger.error('Missing invoice ID', { id });
|
|
215
242
|
throw new Error('Missing invoice ID');
|
|
216
243
|
}
|
|
217
|
-
return await this.fetch(`/
|
|
244
|
+
return await this.fetch(`/v2/invoices/${id}`);
|
|
245
|
+
}
|
|
246
|
+
async validateInvoice(id) {
|
|
247
|
+
if (!id)
|
|
248
|
+
throw new Error('Missing invoice ID');
|
|
249
|
+
return await this.fetch(`/v1/invoices/${id}/validate`, { method: 'POST' });
|
|
218
250
|
}
|
|
219
|
-
async getInvoices(
|
|
251
|
+
async getInvoices(query = {}) {
|
|
220
252
|
const queryParams = new URLSearchParams();
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
253
|
+
for (const [key, value] of Object.entries({
|
|
254
|
+
limit: 100,
|
|
255
|
+
status: 'all',
|
|
256
|
+
...query,
|
|
257
|
+
})) {
|
|
224
258
|
if (value === undefined || value === null)
|
|
225
259
|
continue;
|
|
226
260
|
queryParams.set(key, value.toString());
|
|
227
261
|
}
|
|
228
|
-
return await this.fetch(`/
|
|
262
|
+
return await this.fetch(`/v2/invoices?${queryParams.toString()}`);
|
|
229
263
|
}
|
|
230
264
|
async getInvoicesByCustomerId(id, filters) {
|
|
231
|
-
|
|
232
|
-
queryParams.append('customerId__equals', id);
|
|
233
|
-
if (filters) {
|
|
234
|
-
Object.entries(filters).forEach(([key, value]) => {
|
|
235
|
-
if (value !== undefined && value !== null) {
|
|
236
|
-
queryParams.append(key, value.toString());
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
return await this.fetch(`/v1/invoices?${queryParams.toString()}`);
|
|
265
|
+
return await this.getInvoices({ ...filters, customer_id: id });
|
|
241
266
|
}
|
|
242
267
|
async getInvoiceDownload(id) {
|
|
243
268
|
return await this.fetch(
|
|
@@ -246,16 +271,16 @@ export class HyperlineAPI {
|
|
|
246
271
|
headers: { 'Content-type': 'application/pdf' },
|
|
247
272
|
});
|
|
248
273
|
}
|
|
249
|
-
async getAllInvoices(items = [], query = {
|
|
250
|
-
const
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
: [...items, ...data];
|
|
274
|
+
async getAllInvoices(items = [], query = {}) {
|
|
275
|
+
const page = await this.getInvoices(query);
|
|
276
|
+
if (!page)
|
|
277
|
+
throw new Error('Invoice list not found');
|
|
278
|
+
return page.next_cursor
|
|
279
|
+
? this.getAllInvoices([...items, ...page.data], {
|
|
280
|
+
...query,
|
|
281
|
+
cursor: page.next_cursor,
|
|
282
|
+
})
|
|
283
|
+
: [...items, ...page.data];
|
|
259
284
|
}
|
|
260
285
|
async voidInvoice(id, data = { send_email: false }) {
|
|
261
286
|
if (!id) {
|
|
@@ -284,7 +309,7 @@ export class HyperlineAPI {
|
|
|
284
309
|
}
|
|
285
310
|
async createBillableEvent(data) {
|
|
286
311
|
if (!data.length)
|
|
287
|
-
return { events_created: [] };
|
|
312
|
+
return { events_created: [], events_failed: [] };
|
|
288
313
|
return await this.fetchIngest('/v1/events/batch', { method: 'POST' }, data);
|
|
289
314
|
}
|
|
290
315
|
async getComponentToken(data) {
|
package/build/main/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"src/","sources":["client.ts"],"names":[],"mappings":"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","sourcesContent":["import { utc } from '@vrplatform/utils';\nimport type { operations, paths } from './_types.generated';\nimport { BillableEvents, CreateBillableEvent } from './types';\nimport { arrayBufferToBase64 } from './utils';\n\nexport type Logger = { error(message?: any, ...optionalParams: any[]): void };\n\nexport class HyperlineAPI {\n constructor(token: string, logger: Logger = console) {\n this.headers = {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n };\n this.logger = logger;\n }\n\n private headers: Record<string, string>;\n\n private logger: Logger;\n\n private async fetchBasic<T>(\n path: string,\n options?: RequestInit,\n data?: Record<string, any>\n ): Promise<T | null> {\n if (data) options = { body: JSON.stringify(data), ...(options || {}) };\n\n const method = (options?.method || 'GET').toUpperCase();\n const sandbox = this.headers.Authorization.includes('test')\n ? 'sandbox.'\n : '';\n\n const result = await fetch(`https://${sandbox}${path}`, {\n method: 'GET',\n ...options,\n headers: { ...this.headers, ...options?.headers },\n });\n\n if (!result?.ok) {\n const status = result?.status;\n const statusText = result?.statusText;\n let content: any = null;\n\n try {\n const rawBody = await result.text();\n const trimmedBody = rawBody.trim();\n\n if (trimmedBody) {\n try {\n content = JSON.parse(trimmedBody);\n } catch (_) {\n content = rawBody;\n }\n }\n } catch (_) {\n // ignore\n }\n\n const message =\n (content && typeof content === 'object' && 'message' in content\n ? (content as any).message\n : null) ||\n (typeof content === 'string' ? content : null) ||\n (content ? JSON.stringify(content) : null) ||\n 'Unknown error';\n\n if (status === 429) {\n // get difference between rate limit reset and now\n const rateLimitReset = utc(result?.headers.get('x-ratelimit-reset'));\n const diff = rateLimitReset.diff(utc(), 'milliseconds');\n\n // wait until rate limit resets\n await new Promise((resolve) => setTimeout(resolve, diff));\n\n return await this.fetchBasic<T>(path, options, data);\n } else if (status === 404 && method === 'GET') {\n return null;\n } else {\n throw new Error(\n `Hyperline Error ${status} (${statusText}) in ${path} for ${method}: ${message}`\n );\n }\n } else if (result.headers.get('content-type')?.includes('application/pdf'))\n return arrayBufferToBase64(await result.arrayBuffer()) as T;\n\n if (result.status === 204) return null;\n\n return (await result.json()) as T;\n }\n\n private async fetch<T>(\n path: string,\n options?: RequestInit,\n data?: Record<string, any>\n ): Promise<T | null> {\n return await this.fetchBasic(`api.hyperline.co${path}`, options, data);\n }\n\n private async fetchIngest<T>(\n path: string,\n options?: RequestInit,\n data?: Record<string, any>\n ): Promise<T | null> {\n return await this.fetchBasic(`ingest.hyperline.co${path}`, options, data);\n }\n\n // INVOICING ENTITY\n\n async getInvoicingEntities() {\n return await this.fetch<\n paths['/v1/invoicing-entities']['get']['responses'][200]['content']['application/json']\n >('/v1/invoicing-entities');\n }\n\n async getInvoicingEntity(id?: string) {\n if (!id) {\n this.logger.error('Missing invoicing entity ID', { id });\n throw new Error('Missing invoicing entity ID');\n }\n\n return await this.fetch<\n paths['/v1/invoicing-entities/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v1/invoicing-entities/${id}`);\n }\n\n // CUSTOMER\n\n async getCustomer(id?: string) {\n if (!id) {\n this.logger.error('Missing customer ID', { id });\n throw new Error('Missing customer ID');\n }\n\n return await this.fetch<\n paths['/v1/customers/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}`);\n }\n\n async getCustomerById(id?: string) {\n if (!id) {\n this.logger.error('Missing tenant ID', { id });\n throw new Error('Missing tenant ID');\n }\n\n const results = await this.fetch<\n paths['/v1/customers']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers?external_id__equals=${id}`);\n\n return results?.data[0];\n }\n\n async getCustomers(\n skip = 0,\n take = 100,\n query: operations['getCustomers']['parameters']['query'] = {}\n ) {\n const queryParams = new URLSearchParams();\n queryParams.set('take', take.toString());\n queryParams.set('skip', skip.toString());\n\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) continue;\n queryParams.set(key, value.toString());\n }\n\n return await this.fetch<\n paths['/v1/customers']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers?${queryParams.toString()}`);\n }\n\n async getAllCustomers(\n items: paths['/v1/customers']['get']['responses'][200]['content']['application/json']['data'] = [],\n query: operations['getCustomers']['parameters']['query'] = {}\n ): Promise<\n paths['/v1/customers']['get']['responses'][200]['content']['application/json']['data']\n > {\n const { data } = (await this.getCustomers(items.length, 100, {\n status: 'all',\n ...query,\n })) || {\n data: [],\n };\n\n return data.length\n ? this.getAllCustomers([...items, ...data], { status: 'all', ...query })\n : [...items, ...data];\n }\n\n async createCustomer(\n data: NonNullable<\n paths['/v1/customers']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v1/customers']['post']['responses'][201]['content']['application/json']\n >(\n '/v1/customers',\n { method: 'POST' },\n { currency: 'USD', timezone: 'Etc/UTC', ...data }\n );\n }\n\n async updateCustomer(\n id: string,\n data: NonNullable<\n paths['/v1/customers/{id}']['put']['requestBody']\n >['content']['application/json']\n ) {\n if (!id) {\n this.logger.error('Missing customer ID', { id });\n throw new Error('Missing customer ID');\n }\n\n return await this.fetch<\n paths['/v1/customers/{id}']['put']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}`, { method: 'PUT' }, data);\n }\n\n async deleteCustomer(id: string) {\n return await this.fetch<\n paths['/v1/customers/{id}']['delete']['responses'][204]['content']\n >(`/v1/customers/${id}`, {\n method: 'DELETE',\n });\n }\n\n async archiveCustomer(id: string) {\n return await this.fetch<\n paths['/v1/customers/{id}/archive']['put']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}/archive`, {\n method: 'PUT',\n });\n }\n\n async unarchiveCustomer(id: string) {\n if (!id) {\n this.logger.error('Missing customer ID', { id });\n throw new Error('Missing customer ID');\n }\n\n return await this.fetch<\n paths['/v1/customers/{id}/unarchive']['put']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}/unarchive`, { method: 'PUT' });\n }\n\n async getCustomerPortal(id: string) {\n return await this.fetch<\n paths['/v1/customers/{id}/portal']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}/portal`);\n }\n\n // SUBSCRIPTION\n\n async getSubscription(id: string, liveBilling = false) {\n if (!id) {\n this.logger.error('Missing subscription ID', { id });\n throw new Error('Missing subscription ID');\n }\n\n return await this.fetch<\n paths['/v2/subscriptions/{id}']['get']['responses'][200]['content']['application/json']\n >(\n `/v2/subscriptions/${id}?include_live_billing=${liveBilling ? 'true' : 'false'}`\n );\n }\n\n async getSubscriptions(\n skip = 0,\n take = 100,\n query: operations['getSubscriptions']['parameters']['query'] = {\n status: 'all',\n }\n ) {\n const queryParams = new URLSearchParams();\n queryParams.set('take', take.toString());\n queryParams.set('skip', skip.toString());\n\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) continue;\n queryParams.set(key, value.toString());\n }\n\n return await this.fetch<\n paths['/v2/subscriptions']['get']['responses'][200]['content']['application/json']\n >(`/v2/subscriptions?${queryParams.toString()}`);\n }\n\n async getAllSubscriptions(\n items: paths['/v2/subscriptions']['get']['responses'][200]['content']['application/json']['data'] = [],\n query: operations['getSubscriptions']['parameters']['query'] = {}\n ): Promise<\n paths['/v2/subscriptions']['get']['responses'][200]['content']['application/json']['data']\n > {\n const { data } = (await this.getSubscriptions(\n items.length,\n 100,\n query\n )) || { data: [] };\n\n return data.length\n ? this.getAllSubscriptions([...items, ...data], query)\n : [...items, ...data];\n }\n\n async createSubscription(\n data: NonNullable<\n paths['/v2/subscriptions']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v2/subscriptions']['post']['responses'][201]['content']['application/json']\n >('/v2/subscriptions', { method: 'POST' }, data);\n }\n\n async updateSubscription(\n id: string,\n data: NonNullable<\n paths['/v2/subscriptions/{id}']['put']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v2/subscriptions/{id}']['put']['responses'][200]['content']['application/json']\n >(`/v2/subscriptions/${id}`, { method: 'PUT' }, data);\n }\n\n async createSubscriptionUpdate(\n id: string,\n data: NonNullable<\n paths['/v1/subscriptions/{id}/update']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v1/subscriptions/{id}/update']['post']['responses'][201]['content']['application/json']\n >(`/v1/subscriptions/${id}/update`, { method: 'POST' }, data);\n }\n\n async cancelSubscription(\n id: string,\n data: NonNullable<\n paths['/v1/subscriptions/{id}/cancel']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v1/subscriptions/{id}/cancel']['post']['responses'][200]['content']['application/json']\n >(\n `/v1/subscriptions/${id}/cancel`,\n {\n method: 'POST',\n },\n data\n );\n }\n\n async reinstateSubscription(id: string) {\n return await this.fetch<\n paths['/v1/subscriptions/{id}/reinstate']['post']['responses'][200]['content']['application/json']\n >(`/v1/subscriptions/${id}/reinstate`, {\n method: 'POST',\n });\n }\n\n // PLAN\n\n async getPlan(id: string) {\n if (!id) {\n this.logger.error('Missing plan ID', { id });\n throw new Error('Missing plan ID');\n }\n\n return await this.fetch<\n paths['/v1/plans/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v1/plans/${id}`);\n }\n\n async getPlans(skip = 0, take = 100) {\n return await this.fetch<\n paths['/v1/plans']['get']['responses'][200]['content']['application/json']\n >(`/v1/plans?take=${take}&skip=${skip}`);\n }\n\n // INVOICE\n\n async getInvoice(id: string) {\n if (!id) {\n this.logger.error('Missing invoice ID', { id });\n throw new Error('Missing invoice ID');\n }\n\n return await this.fetch<\n paths['/v1/invoices/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v1/invoices/${id}`);\n }\n\n async getInvoices(\n skip = 0,\n take = 100,\n query: operations['getInvoices']['parameters']['query'] = { status: 'all' }\n ) {\n const queryParams = new URLSearchParams();\n queryParams.set('take', take.toString());\n queryParams.set('skip', skip.toString());\n\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) continue;\n queryParams.set(key, value.toString());\n }\n\n return await this.fetch<\n paths['/v1/invoices']['get']['responses'][200]['content']['application/json']\n >(`/v1/invoices?${queryParams.toString()}`);\n }\n\n async getInvoicesByCustomerId(\n id: string,\n filters?: Partial<operations['getInvoices']['parameters']['query']>\n ) {\n const queryParams = new URLSearchParams();\n queryParams.append('customerId__equals', id);\n\n if (filters) {\n Object.entries(filters).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n queryParams.append(key, value.toString());\n }\n });\n }\n\n return await this.fetch<\n paths['/v1/invoices']['get']['responses'][200]['content']['application/json']\n >(`/v1/invoices?${queryParams.toString()}`);\n }\n\n async getInvoiceDownload(id: string) {\n return await this.fetch<string>(\n // TODO: fix if type != unknown paths['/v1/invoices/{id}/download']['get']['responses'][200]['content']['application/pdf']\n `/v1/invoices/${id}/download`,\n {\n headers: { 'Content-type': 'application/pdf' },\n }\n );\n }\n\n async getAllInvoices(\n items: paths['/v1/invoices']['get']['responses'][200]['content']['application/json']['data'] = [],\n query: operations['getInvoices']['parameters']['query'] = { status: 'all' }\n ): Promise<\n paths['/v1/invoices']['get']['responses'][200]['content']['application/json']['data']\n > {\n const { data } = (await this.getInvoices(items.length, 100, {\n status: 'all',\n ...query,\n })) || {\n data: [],\n };\n\n return data.length\n ? this.getAllInvoices([...items, ...data], { status: 'all', ...query })\n : [...items, ...data];\n }\n\n async voidInvoice(\n id: string,\n data: NonNullable<\n paths['/v1/invoices/{id}/void']['post']['requestBody']\n >['content']['application/json'] = { send_email: false }\n ) {\n if (!id) {\n this.logger.error('Missing invoice ID', { id });\n throw new Error('Missing invoice ID');\n }\n\n return await this.fetch<\n paths['/v1/invoices/{id}/void']['post']['responses'][200]['content']['application/json']\n >(`/v1/invoices/${id}/void`, { method: 'POST' }, data);\n }\n\n async deleteInvoice(id: string) {\n if (!id) {\n this.logger.error('Missing invoice ID', { id });\n throw new Error('Missing invoice ID');\n }\n\n return await this.fetch<\n paths['/v1/invoices/{id}']['delete']['responses'][204]['content']\n >(`/v1/invoices/${id}`, { method: 'DELETE' });\n }\n\n // OTHERS\n\n async getCustomerPaymentMethods(customerId: string) {\n if (!customerId) {\n this.logger.error('Missing customer ID', { customerId });\n throw new Error('Missing customer ID');\n }\n\n return await this.fetch<\n paths['/v1/customers/{id}/payment-methods']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers/${customerId}/payment-methods`);\n }\n\n async getPaymentMethod(customerId: string, paymentMethodId: string) {\n return await this.fetch<\n paths['/v1/customers/{id}/payment-methods/{paymentMethodId}']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers/${customerId}/payment-methods/${paymentMethodId}`);\n }\n\n async createBillableEvent(data: CreateBillableEvent[]) {\n if (!data.length) return { events_created: [] };\n\n return await this.fetchIngest<BillableEvents>(\n '/v1/events/batch',\n { method: 'POST' },\n data\n );\n }\n\n async getComponentToken(data: { customer_id: string }) {\n return await this.fetch<\n paths['/v1/integrations/components/token']['post']['responses'][201]['content']['application/json']\n >('/v1/integrations/components/token', { method: 'POST' }, data);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"src/","sources":["client.ts"],"names":[],"mappings":"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","sourcesContent":["import type { paths } from './_types.generated';\nimport { HyperlineError } from './hyperlineError';\nimport { BillableEvents, CreateBillableEvent } from './types';\nimport { arrayBufferToBase64 } from './utils';\n\nexport type Logger = { error(message?: any, ...optionalParams: any[]): void };\n\nexport class HyperlineAPI {\n constructor(token: string, logger: Logger = console) {\n this.headers = {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n };\n this.logger = logger;\n }\n\n private headers: Record<string, string>;\n\n private logger: Logger;\n\n private async fetchBasic<T>(\n path: string,\n options?: RequestInit,\n data?: Record<string, any>\n ): Promise<T | null> {\n if (data) options = { body: JSON.stringify(data), ...(options || {}) };\n\n const method = (options?.method || 'GET').toUpperCase();\n const sandbox = this.headers.Authorization.includes('test')\n ? 'sandbox.'\n : '';\n\n const result = await fetch(`https://${sandbox}${path}`, {\n method: 'GET',\n ...options,\n headers: { ...this.headers, ...options?.headers },\n });\n\n if (!result?.ok) {\n const status = result?.status;\n const statusText = result?.statusText;\n let content: any = null;\n\n try {\n const rawBody = await result.text();\n const trimmedBody = rawBody.trim();\n\n if (trimmedBody) {\n try {\n content = JSON.parse(trimmedBody);\n } catch (_) {\n content = rawBody;\n }\n }\n } catch (_) {\n // ignore\n }\n\n const message =\n (content && typeof content === 'object' && 'message' in content\n ? (content as any).message\n : null) ||\n (typeof content === 'string' ? content : null) ||\n (content ? JSON.stringify(content) : null) ||\n 'Unknown error';\n\n if (status === 404 && method === 'GET') {\n return null;\n } else {\n throw new HyperlineError(\n `Hyperline Error ${status} (${statusText}) in ${path} for ${method}: ${message}`,\n status,\n result.headers.get('Retry-After')\n );\n }\n } else if (result.headers.get('content-type')?.includes('application/pdf'))\n return arrayBufferToBase64(await result.arrayBuffer()) as T;\n\n if (result.status === 204) return null;\n\n return (await result.json()) as T;\n }\n\n private async fetch<T>(\n path: string,\n options?: RequestInit,\n data?: Record<string, any>\n ): Promise<T | null> {\n return await this.fetchBasic(`api.hyperline.co${path}`, options, data);\n }\n\n private async fetchIngest<T>(\n path: string,\n options?: RequestInit,\n data?: Record<string, any>\n ): Promise<T | null> {\n return await this.fetchBasic(`ingest.hyperline.co${path}`, options, data);\n }\n\n // INVOICING ENTITY\n\n async getInvoicingEntities() {\n return await this.fetch<\n paths['/v1/invoicing-entities']['get']['responses'][200]['content']['application/json']\n >('/v1/invoicing-entities');\n }\n\n async getInvoicingEntity(id?: string) {\n if (!id) {\n this.logger.error('Missing invoicing entity ID', { id });\n throw new Error('Missing invoicing entity ID');\n }\n\n return await this.fetch<\n paths['/v1/invoicing-entities/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v1/invoicing-entities/${id}`);\n }\n\n // CUSTOMER\n\n async getOrganisation(id: string) {\n if (!id) throw new Error('Missing organisation ID');\n return await this.fetch<\n paths['/v1/organisations/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v1/organisations/${id}`);\n }\n\n async updateOrganisation(\n id: string,\n data: NonNullable<\n paths['/v1/organisations/{id}']['patch']['requestBody']\n >['content']['application/json']\n ) {\n if (!id) throw new Error('Missing organisation ID');\n return await this.fetch<\n paths['/v1/organisations/{id}']['patch']['responses'][200]['content']['application/json']\n >(`/v1/organisations/${id}`, { method: 'PATCH' }, data);\n }\n\n async getCustomer(id?: string) {\n if (!id) {\n this.logger.error('Missing customer ID', { id });\n throw new Error('Missing customer ID');\n }\n\n return await this.fetch<\n paths['/v2/customers/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v2/customers/${id}`);\n }\n\n async getCustomerById(id?: string) {\n if (!id) {\n this.logger.error('Missing tenant ID', { id });\n throw new Error('Missing tenant ID');\n }\n\n const results = await this.getCustomers({\n external_id__equals: id,\n status: 'all',\n limit: 1,\n });\n\n return results?.data[0];\n }\n\n async getCustomers(\n query: paths['/v2/customers']['get']['parameters']['query'] = {}\n ) {\n const queryParams = new URLSearchParams();\n\n for (const [key, value] of Object.entries({ limit: 100, ...query })) {\n if (value === undefined || value === null) continue;\n queryParams.set(key, value.toString());\n }\n\n return await this.fetch<\n paths['/v2/customers']['get']['responses'][200]['content']['application/json']\n >(`/v2/customers?${queryParams.toString()}`);\n }\n\n async getAllCustomers(\n items: paths['/v2/customers']['get']['responses'][200]['content']['application/json']['data'] = [],\n query: paths['/v2/customers']['get']['parameters']['query'] = {}\n ): Promise<\n paths['/v2/customers']['get']['responses'][200]['content']['application/json']['data']\n > {\n await new Promise((resolve) => setTimeout(resolve, 300));\n const page = await this.getCustomers({\n status: 'all',\n ...query,\n });\n if (!page) throw new Error('Customer list not found');\n if (page.has_more && !page.next_cursor)\n throw new Error('Incomplete customer list');\n\n return page.next_cursor\n ? this.getAllCustomers([...items, ...page.data], {\n ...query,\n cursor: page.next_cursor,\n })\n : [...items, ...page.data];\n }\n\n async createCustomer(\n data: NonNullable<\n paths['/v1/customers']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v1/customers']['post']['responses'][201]['content']['application/json']\n >(\n '/v1/customers',\n { method: 'POST' },\n { currency: 'USD', timezone: 'Etc/UTC', ...data }\n );\n }\n\n async updateCustomer(\n id: string,\n data: NonNullable<\n paths['/v1/customers/{id}']['put']['requestBody']\n >['content']['application/json']\n ) {\n if (!id) {\n this.logger.error('Missing customer ID', { id });\n throw new Error('Missing customer ID');\n }\n\n return await this.fetch<\n paths['/v1/customers/{id}']['put']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}`, { method: 'PUT' }, data);\n }\n\n async deleteCustomer(id: string) {\n return await this.fetch<\n paths['/v1/customers/{id}']['delete']['responses'][204]['content']\n >(`/v1/customers/${id}`, {\n method: 'DELETE',\n });\n }\n\n async archiveCustomer(id: string) {\n return await this.fetch<\n paths['/v1/customers/{id}/archive']['put']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}/archive`, {\n method: 'PUT',\n });\n }\n\n async unarchiveCustomer(id: string) {\n if (!id) {\n this.logger.error('Missing customer ID', { id });\n throw new Error('Missing customer ID');\n }\n\n return await this.fetch<\n paths['/v1/customers/{id}/unarchive']['put']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}/unarchive`, { method: 'PUT' });\n }\n\n async getCustomerPortal(id: string) {\n return await this.fetch<\n paths['/v1/customers/{id}/portal']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}/portal`);\n }\n\n // SUBSCRIPTION TEMPLATES\n\n async getSubscriptionTemplate(id: string) {\n if (!id) {\n this.logger.error('Missing subscription template ID', { id });\n throw new Error('Missing subscription template ID');\n }\n\n return await this.fetch<\n paths['/v1/subscriptions/templates/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v1/subscriptions/templates/${id}`);\n }\n\n async previewSubscriptionTransition(\n data: NonNullable<\n paths['/v2/subscriptions/transitions/preview']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v2/subscriptions/transitions/preview']['post']['responses'][200]['content']['application/json']\n >('/v2/subscriptions/transitions/preview', { method: 'POST' }, data);\n }\n\n async createSubscriptionTransition(\n data: NonNullable<\n paths['/v2/subscriptions/transitions']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v2/subscriptions/transitions']['post']['responses'][200]['content']['application/json']\n >('/v2/subscriptions/transitions', { method: 'POST' }, data);\n }\n\n // SUBSCRIPTION\n\n async getSubscription(id: string, liveBilling = false) {\n if (!id) {\n this.logger.error('Missing subscription ID', { id });\n throw new Error('Missing subscription ID');\n }\n\n return await this.fetch<\n paths['/v2/subscriptions/{id}']['get']['responses'][200]['content']['application/json']\n >(\n `/v2/subscriptions/${id}?include_live_billing=${liveBilling ? 'true' : 'false'}`\n );\n }\n\n async getSubscriptions(\n skip = 0,\n take = 100,\n query: paths['/v2/subscriptions']['get']['parameters']['query'] = {\n status: 'all',\n }\n ) {\n const queryParams = new URLSearchParams();\n queryParams.set('take', take.toString());\n queryParams.set('skip', skip.toString());\n\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) continue;\n queryParams.set(key, value.toString());\n }\n\n return await this.fetch<\n paths['/v2/subscriptions']['get']['responses'][200]['content']['application/json']\n >(`/v2/subscriptions?${queryParams.toString()}`);\n }\n\n async getAllSubscriptions(\n items: paths['/v2/subscriptions']['get']['responses'][200]['content']['application/json']['data'] = [],\n query: paths['/v2/subscriptions']['get']['parameters']['query'] = {}\n ): Promise<\n paths['/v2/subscriptions']['get']['responses'][200]['content']['application/json']['data']\n > {\n const { data } = (await this.getSubscriptions(\n items.length,\n 100,\n query\n )) || { data: [] };\n\n return data.length\n ? this.getAllSubscriptions([...items, ...data], query)\n : [...items, ...data];\n }\n\n async createSubscription(\n data: NonNullable<\n paths['/v2/subscriptions']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v2/subscriptions']['post']['responses'][201]['content']['application/json']\n >('/v2/subscriptions', { method: 'POST' }, data);\n }\n\n async activateSubscription(id: string) {\n return await this.fetch<\n paths['/v1/subscriptions/{id}/activate']['post']['responses'][200]['content']['application/json']\n >(`/v1/subscriptions/${id}/activate`, { method: 'POST' });\n }\n\n async updateSubscription(\n id: string,\n data: NonNullable<\n paths['/v2/subscriptions/{id}']['put']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v2/subscriptions/{id}']['put']['responses'][200]['content']['application/json']\n >(`/v2/subscriptions/${id}`, { method: 'PUT' }, data);\n }\n\n async createSubscriptionUpdate(\n id: string,\n data: NonNullable<\n paths['/v1/subscriptions/{id}/update']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v1/subscriptions/{id}/update']['post']['responses'][201]['content']['application/json']\n >(`/v1/subscriptions/${id}/update`, { method: 'POST' }, data);\n }\n\n async createSubscriptionUpdates(\n id: string,\n data: NonNullable<\n paths['/v1/subscriptions/{id}/update-many']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v1/subscriptions/{id}/update-many']['post']['responses'][201]['content']['application/json']\n >(`/v1/subscriptions/${id}/update-many`, { method: 'POST' }, data);\n }\n\n async cancelSubscription(\n id: string,\n data: NonNullable<\n paths['/v1/subscriptions/{id}/cancel']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v1/subscriptions/{id}/cancel']['post']['responses'][200]['content']['application/json']\n >(\n `/v1/subscriptions/${id}/cancel`,\n {\n method: 'POST',\n },\n data\n );\n }\n\n async reinstateSubscription(id: string) {\n return await this.fetch<\n paths['/v1/subscriptions/{id}/reinstate']['post']['responses'][200]['content']['application/json']\n >(`/v1/subscriptions/${id}/reinstate`, {\n method: 'POST',\n });\n }\n\n // INVOICE\n\n async createInvoice(\n data: NonNullable<\n paths['/v1/invoices']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v1/invoices']['post']['responses'][201]['content']['application/json']\n >('/v1/invoices', { method: 'POST' }, data);\n }\n\n async updateInvoice(\n id: string,\n data: NonNullable<\n paths['/v1/invoices/{id}']['patch']['requestBody']\n >['content']['application/json']\n ) {\n if (!id) throw new Error('Missing invoice ID');\n return await this.fetch<\n paths['/v1/invoices/{id}']['patch']['responses'][200]['content']['application/json']\n >(`/v1/invoices/${id}`, { method: 'PATCH' }, data);\n }\n\n async getInvoice(id: string) {\n if (!id) {\n this.logger.error('Missing invoice ID', { id });\n throw new Error('Missing invoice ID');\n }\n\n return await this.fetch<\n paths['/v2/invoices/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v2/invoices/${id}`);\n }\n\n async validateInvoice(id: string) {\n if (!id) throw new Error('Missing invoice ID');\n return await this.fetch<\n paths['/v1/invoices/{id}/validate']['post']['responses'][200]['content']['application/json']\n >(`/v1/invoices/${id}/validate`, { method: 'POST' });\n }\n\n async getInvoices(\n query: paths['/v2/invoices']['get']['parameters']['query'] = {}\n ) {\n const queryParams = new URLSearchParams();\n for (const [key, value] of Object.entries({\n limit: 100,\n status: 'all',\n ...query,\n })) {\n if (value === undefined || value === null) continue;\n queryParams.set(key, value.toString());\n }\n\n return await this.fetch<\n paths['/v2/invoices']['get']['responses'][200]['content']['application/json']\n >(`/v2/invoices?${queryParams.toString()}`);\n }\n\n async getInvoicesByCustomerId(\n id: string,\n filters?: paths['/v2/invoices']['get']['parameters']['query']\n ) {\n return await this.getInvoices({ ...filters, customer_id: id });\n }\n\n async getInvoiceDownload(id: string) {\n return await this.fetch<string>(\n // TODO: fix if type != unknown paths['/v1/invoices/{id}/download']['get']['responses'][200]['content']['application/pdf']\n `/v1/invoices/${id}/download`,\n {\n headers: { 'Content-type': 'application/pdf' },\n }\n );\n }\n\n async getAllInvoices(\n items: paths['/v2/invoices']['get']['responses'][200]['content']['application/json']['data'] = [],\n query: paths['/v2/invoices']['get']['parameters']['query'] = {}\n ): Promise<\n paths['/v2/invoices']['get']['responses'][200]['content']['application/json']['data']\n > {\n const page = await this.getInvoices(query);\n if (!page) throw new Error('Invoice list not found');\n\n return page.next_cursor\n ? this.getAllInvoices([...items, ...page.data], {\n ...query,\n cursor: page.next_cursor,\n })\n : [...items, ...page.data];\n }\n\n async voidInvoice(\n id: string,\n data: NonNullable<\n paths['/v1/invoices/{id}/void']['post']['requestBody']\n >['content']['application/json'] = { send_email: false }\n ) {\n if (!id) {\n this.logger.error('Missing invoice ID', { id });\n throw new Error('Missing invoice ID');\n }\n\n return await this.fetch<\n paths['/v1/invoices/{id}/void']['post']['responses'][200]['content']['application/json']\n >(`/v1/invoices/${id}/void`, { method: 'POST' }, data);\n }\n\n async deleteInvoice(id: string) {\n if (!id) {\n this.logger.error('Missing invoice ID', { id });\n throw new Error('Missing invoice ID');\n }\n\n return await this.fetch<\n paths['/v1/invoices/{id}']['delete']['responses'][204]['content']\n >(`/v1/invoices/${id}`, { method: 'DELETE' });\n }\n\n // OTHERS\n\n async getCustomerPaymentMethods(customerId: string) {\n if (!customerId) {\n this.logger.error('Missing customer ID', { customerId });\n throw new Error('Missing customer ID');\n }\n\n return await this.fetch<\n paths['/v1/customers/{id}/payment-methods']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers/${customerId}/payment-methods`);\n }\n\n async getPaymentMethod(customerId: string, paymentMethodId: string) {\n return await this.fetch<\n paths['/v1/customers/{id}/payment-methods/{paymentMethodId}']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers/${customerId}/payment-methods/${paymentMethodId}`);\n }\n\n async createBillableEvent(data: CreateBillableEvent[]) {\n if (!data.length) return { events_created: [], events_failed: [] };\n\n return await this.fetchIngest<BillableEvents>(\n '/v1/events/batch',\n { method: 'POST' },\n data\n );\n }\n\n async getComponentToken(data: { customer_id: string }) {\n return await this.fetch<\n paths['/v1/integrations/components/token']['post']['responses'][201]['content']['application/json']\n >('/v1/integrations/components/token', { method: 'POST' }, data);\n }\n}\n"]}
|
package/build/main/const.d.ts
CHANGED
|
@@ -2,10 +2,11 @@ export declare const VRP_TENANT_ID = "7bfec41f-aa3f-4602-95d2-f7996e4f0e59";
|
|
|
2
2
|
export declare const DEMO_TEST_PARTNER_TENANT_ID = "0b6a7bd6-56cc-46b5-b2ab-1bd7d1e994fa";
|
|
3
3
|
export declare const XIMPLIFI_TENANT_ID = "d6ab2bbe-e0fc-48d9-89a3-c3c05f4e79b5";
|
|
4
4
|
export declare const TEST_TENANT_ID = "fa4d1a20-2f47-4021-9c72-c5a809be9c48";
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const
|
|
8
|
-
export declare const
|
|
5
|
+
export declare const BOBW_TENANT_ID = "cb23b44b-c96b-4fc4-95aa-1bf71b1c0f92";
|
|
6
|
+
export declare const HOSTAWAY_PRODUCTION_TENANT_ID = "4d1583e6-1c76-4bd2-bf8d-ca07d45eedb7";
|
|
7
|
+
export declare const HOSTAWAY_STAGING_TENANT_ID = "10834664-606b-4b92-acb9-f3e454632f7a";
|
|
8
|
+
export declare const HOSTAWAY_COSELLING_TENANT_ID = "636dcf13-7b34-4a7f-9b45-60bbb1380d15";
|
|
9
|
+
export declare const HOSTAWAY_PARTNER_TENANT_IDS: string[];
|
|
9
10
|
export declare const ACCOUNTING_PARTNER_COUPON_ID = "cou_PJQ328MBAD9kxY";
|
|
10
11
|
export declare const ACCOUNTING_PARTNER_DEV_COUPON_ID = "cou_y6UfaI2X1m34Qg";
|
|
11
12
|
export declare const VRTRUST_HALF_PRICE_COUPON_ID = "cou_CTOQqs0SOeSc-e";
|
|
@@ -26,32 +27,30 @@ export declare const HYPERLINE_PARTNER_TIER_COUPON_IDS: {
|
|
|
26
27
|
readonly 50: "cou_1saVofWCoJsVyz";
|
|
27
28
|
readonly 60: "cou_tJI9hmHkQXjXOp";
|
|
28
29
|
};
|
|
29
|
-
export declare const
|
|
30
|
-
export declare const
|
|
31
|
-
export declare const
|
|
30
|
+
export declare const DIRECT_PRICING_TEMPLATE_ID = "subt_Knj7TspKQNAdgE";
|
|
31
|
+
export declare const DIRECT_PRICING_DEV_TEMPLATE_ID = "subt_3kdBL2APUz94Vh";
|
|
32
|
+
export declare const PARTNER_CLIENT_PRICING_TEMPLATE_ID = "subt_p0bWvUpe59ilo4";
|
|
33
|
+
export declare const PARTNER_CLIENT_PRICING_DEV_TEMPLATE_ID = "subt_c972Mz800ZB3C8";
|
|
34
|
+
export declare const PARTNER_PRICING_TEMPLATE_ID = "subt_qt58CknWGtPHxH";
|
|
35
|
+
export declare const PARTNER_PRICING_DEV_TEMPLATE_ID = "subt_NIoe1kA3Xs4353";
|
|
36
|
+
export declare const HOSTAWAY_PRICING_TEMPLATE_ID = "subt_gVo8boDZBZvsZk";
|
|
37
|
+
export declare const HOSTAWAY_PRICING_DEV_TEMPLATE_ID = "subt_PkEm701PH78Bgn";
|
|
38
|
+
export declare const BOBW_PRICING_TEMPLATE_ID = "subt_XpHcieqR2Exn4q";
|
|
39
|
+
export declare const BOBW_PRICING_DEV_TEMPLATE_ID = "subt_yRmLj6Fdr5R9Sh";
|
|
40
|
+
export declare const SUBSCRIPTION_TEMPLATE_NAMES: readonly ["VRPlatform Subscription - Direct", "VRPlatform Subscription - Partner Clients", "VRPlatform Subscription - Partner", "VRPlatform Subscription - Hostaway", "VRPlatform Subscription - BobW"];
|
|
32
41
|
export declare const HYPERLINE_DEFAULT_PRODUCT_ID = "itm_9NU7ffT14I4ris";
|
|
33
|
-
export declare const HYPERLINE_DEFAULT_MIN_AMOUNT = 12500;
|
|
34
|
-
export declare const HYPERLINE_NEW_PRICING_DIRECT_PRODUCT_ID = "itm_VeR6AJi9OyUQN2";
|
|
35
|
-
export declare const HYPERLINE_NEW_PRICING_PARTNER_CLIENT_PRODUCT_ID = "itm_wrrT0HuAZ8Tlh1";
|
|
36
|
-
export declare const HYPERLINE_PARTNER_PLAN_ID = "plan_vkYJcCz7z0XD0N";
|
|
37
|
-
export declare const HYPERLINE_PARTNER_DEV_PLAN_ID = "plan_8qtj8T4j0W3oiS";
|
|
38
|
-
export declare const HYPERLINE_PARTNER_PLAN_NAME = "VRP Subscription - Partners";
|
|
39
42
|
export declare const HYPERLINE_PARTNER_PRODUCT_ID = "itm_AJBM0_jPsrqizl";
|
|
40
|
-
export declare const GL_HYPERLINE_DEFAULT_PLAN_ID = "plan_JXviWSpU5yuokD";
|
|
41
|
-
export declare const GL_HYPERLINE_DEFAULT_DEV_PLAN_ID = "plan_Nnozk8_TfYqTkj";
|
|
42
|
-
export declare const GL_HYPERLINE_DEFAULT_PLAN_NAME = "VRTrust Subscription";
|
|
43
43
|
export declare const GL_HYPERLINE_DEFAULT_PRODUCT_ID = "itm_NRTRBQ0fc8bFGW";
|
|
44
|
-
export declare const GL_HYPERLINE_DEFAULT_MIN_AMOUNT = 25000;
|
|
45
|
-
export declare const GL_HYPERLINE_PARTNER_PLAN_ID = "plan_vyxckdvUi8X_mr";
|
|
46
|
-
export declare const GL_HYPERLINE_PARTNER_DEV_PLAN_ID = "plan_CVXQ47ErOWANhJ";
|
|
47
|
-
export declare const GL_HYPERLINE_PARTNER_PLAN_NAME = "VRTrust Subscription - Partners";
|
|
48
44
|
export declare const GL_HYPERLINE_PARTNER_PRODUCT_ID = "itm_bE4y9lhrZ6Qtsf";
|
|
45
|
+
export declare const HYPERLINE_NEW_PRICING_DIRECT_PRODUCT_ID = "itm_VeR6AJi9OyUQN2";
|
|
46
|
+
export declare const HYPERLINE_NEW_PRICING_PARTNER_CLIENT_PRODUCT_ID = "itm_wrrT0HuAZ8Tlh1";
|
|
49
47
|
export declare const WEBHOOKS: {
|
|
50
48
|
'payment_method.created': "hyperline_payment_method_created";
|
|
51
49
|
'payment_method.errored': "hyperline_payment_method_errored";
|
|
52
50
|
'payment_method.deleted': "hyperline_payment_method_deleted";
|
|
53
51
|
'payment_method.expired': "hyperline_payment_method_expired";
|
|
54
52
|
'subscription.activated': "hyperline_subscription_status_changed";
|
|
53
|
+
'subscription.updated': "hyperline_subscription_status_changed";
|
|
55
54
|
'subscription.reactivated': "hyperline_subscription_status_changed";
|
|
56
55
|
'subscription.cancellation_scheduled': "hyperline_subscription_cancellation_scheduled";
|
|
57
56
|
'subscription.cancelled': "hyperline_subscription_status_changed";
|
package/build/main/const.js
CHANGED
|
@@ -3,12 +3,16 @@ export const VRP_TENANT_ID = '7bfec41f-aa3f-4602-95d2-f7996e4f0e59';
|
|
|
3
3
|
export const DEMO_TEST_PARTNER_TENANT_ID = '0b6a7bd6-56cc-46b5-b2ab-1bd7d1e994fa';
|
|
4
4
|
export const XIMPLIFI_TENANT_ID = 'd6ab2bbe-e0fc-48d9-89a3-c3c05f4e79b5';
|
|
5
5
|
export const TEST_TENANT_ID = 'fa4d1a20-2f47-4021-9c72-c5a809be9c48';
|
|
6
|
-
|
|
7
|
-
export const
|
|
8
|
-
export const
|
|
6
|
+
export const BOBW_TENANT_ID = 'cb23b44b-c96b-4fc4-95aa-1bf71b1c0f92';
|
|
7
|
+
export const HOSTAWAY_PRODUCTION_TENANT_ID = '4d1583e6-1c76-4bd2-bf8d-ca07d45eedb7';
|
|
8
|
+
export const HOSTAWAY_STAGING_TENANT_ID = '10834664-606b-4b92-acb9-f3e454632f7a';
|
|
9
|
+
export const HOSTAWAY_COSELLING_TENANT_ID = '636dcf13-7b34-4a7f-9b45-60bbb1380d15';
|
|
10
|
+
export const HOSTAWAY_PARTNER_TENANT_IDS = [
|
|
11
|
+
HOSTAWAY_STAGING_TENANT_ID,
|
|
12
|
+
HOSTAWAY_PRODUCTION_TENANT_ID,
|
|
13
|
+
HOSTAWAY_COSELLING_TENANT_ID,
|
|
14
|
+
];
|
|
9
15
|
// Coupons
|
|
10
|
-
export const XIMPLIFI_COUPON_ID = 'cou_MXCaik3r19_Xkn';
|
|
11
|
-
export const XIMPLIFI_DEV_COUPON_ID = 'cou_MGtxHbT8IR1gK9';
|
|
12
16
|
export const ACCOUNTING_PARTNER_COUPON_ID = 'cou_PJQ328MBAD9kxY';
|
|
13
17
|
export const ACCOUNTING_PARTNER_DEV_COUPON_ID = 'cou_y6UfaI2X1m34Qg';
|
|
14
18
|
export const VRTRUST_HALF_PRICE_COUPON_ID = 'cou_CTOQqs0SOeSc-e'; // 50% off
|
|
@@ -29,33 +33,38 @@ export const HYPERLINE_PARTNER_TIER_COUPON_IDS = {
|
|
|
29
33
|
50: HYPERLINE_PARTNER_TIER_50_PERCENT_COUPON_ID,
|
|
30
34
|
60: HYPERLINE_PARTNER_TIER_60_PERCENT_COUPON_ID,
|
|
31
35
|
};
|
|
32
|
-
//
|
|
33
|
-
export const
|
|
34
|
-
export const
|
|
35
|
-
export const
|
|
36
|
+
// Subscription templates
|
|
37
|
+
export const DIRECT_PRICING_TEMPLATE_ID = 'subt_Knj7TspKQNAdgE';
|
|
38
|
+
export const DIRECT_PRICING_DEV_TEMPLATE_ID = 'subt_3kdBL2APUz94Vh';
|
|
39
|
+
export const PARTNER_CLIENT_PRICING_TEMPLATE_ID = 'subt_p0bWvUpe59ilo4';
|
|
40
|
+
export const PARTNER_CLIENT_PRICING_DEV_TEMPLATE_ID = 'subt_c972Mz800ZB3C8';
|
|
41
|
+
export const PARTNER_PRICING_TEMPLATE_ID = 'subt_qt58CknWGtPHxH';
|
|
42
|
+
export const PARTNER_PRICING_DEV_TEMPLATE_ID = 'subt_NIoe1kA3Xs4353';
|
|
43
|
+
export const HOSTAWAY_PRICING_TEMPLATE_ID = 'subt_gVo8boDZBZvsZk';
|
|
44
|
+
export const HOSTAWAY_PRICING_DEV_TEMPLATE_ID = 'subt_PkEm701PH78Bgn';
|
|
45
|
+
export const BOBW_PRICING_TEMPLATE_ID = 'subt_XpHcieqR2Exn4q';
|
|
46
|
+
export const BOBW_PRICING_DEV_TEMPLATE_ID = 'subt_yRmLj6Fdr5R9Sh';
|
|
47
|
+
export const SUBSCRIPTION_TEMPLATE_NAMES = [
|
|
48
|
+
'VRPlatform Subscription - Direct',
|
|
49
|
+
'VRPlatform Subscription - Partner Clients',
|
|
50
|
+
'VRPlatform Subscription - Partner',
|
|
51
|
+
'VRPlatform Subscription - Hostaway',
|
|
52
|
+
'VRPlatform Subscription - BobW',
|
|
53
|
+
];
|
|
54
|
+
// Product identifiers retained only for historical invoice comparisons.
|
|
36
55
|
export const HYPERLINE_DEFAULT_PRODUCT_ID = 'itm_9NU7ffT14I4ris';
|
|
37
|
-
export const HYPERLINE_DEFAULT_MIN_AMOUNT = 12500;
|
|
38
|
-
export const HYPERLINE_NEW_PRICING_DIRECT_PRODUCT_ID = 'itm_VeR6AJi9OyUQN2';
|
|
39
|
-
export const HYPERLINE_NEW_PRICING_PARTNER_CLIENT_PRODUCT_ID = 'itm_wrrT0HuAZ8Tlh1';
|
|
40
|
-
export const HYPERLINE_PARTNER_PLAN_ID = 'plan_vkYJcCz7z0XD0N';
|
|
41
|
-
export const HYPERLINE_PARTNER_DEV_PLAN_ID = 'plan_8qtj8T4j0W3oiS';
|
|
42
|
-
export const HYPERLINE_PARTNER_PLAN_NAME = 'VRP Subscription - Partners';
|
|
43
56
|
export const HYPERLINE_PARTNER_PRODUCT_ID = 'itm_AJBM0_jPsrqizl';
|
|
44
|
-
export const GL_HYPERLINE_DEFAULT_PLAN_ID = 'plan_JXviWSpU5yuokD';
|
|
45
|
-
export const GL_HYPERLINE_DEFAULT_DEV_PLAN_ID = 'plan_Nnozk8_TfYqTkj';
|
|
46
|
-
export const GL_HYPERLINE_DEFAULT_PLAN_NAME = 'VRTrust Subscription';
|
|
47
57
|
export const GL_HYPERLINE_DEFAULT_PRODUCT_ID = 'itm_NRTRBQ0fc8bFGW';
|
|
48
|
-
export const GL_HYPERLINE_DEFAULT_MIN_AMOUNT = 25000;
|
|
49
|
-
export const GL_HYPERLINE_PARTNER_PLAN_ID = 'plan_vyxckdvUi8X_mr';
|
|
50
|
-
export const GL_HYPERLINE_PARTNER_DEV_PLAN_ID = 'plan_CVXQ47ErOWANhJ';
|
|
51
|
-
export const GL_HYPERLINE_PARTNER_PLAN_NAME = 'VRTrust Subscription - Partners';
|
|
52
58
|
export const GL_HYPERLINE_PARTNER_PRODUCT_ID = 'itm_bE4y9lhrZ6Qtsf';
|
|
59
|
+
export const HYPERLINE_NEW_PRICING_DIRECT_PRODUCT_ID = 'itm_VeR6AJi9OyUQN2';
|
|
60
|
+
export const HYPERLINE_NEW_PRICING_PARTNER_CLIENT_PRODUCT_ID = 'itm_wrrT0HuAZ8Tlh1';
|
|
53
61
|
export const WEBHOOKS = {
|
|
54
62
|
'payment_method.created': 'hyperline_payment_method_created',
|
|
55
63
|
'payment_method.errored': 'hyperline_payment_method_errored',
|
|
56
64
|
'payment_method.deleted': 'hyperline_payment_method_deleted',
|
|
57
65
|
'payment_method.expired': 'hyperline_payment_method_expired',
|
|
58
66
|
'subscription.activated': 'hyperline_subscription_status_changed',
|
|
67
|
+
'subscription.updated': 'hyperline_subscription_status_changed',
|
|
59
68
|
'subscription.reactivated': 'hyperline_subscription_status_changed',
|
|
60
69
|
'subscription.cancellation_scheduled': 'hyperline_subscription_cancellation_scheduled',
|
|
61
70
|
'subscription.cancelled': 'hyperline_subscription_status_changed',
|