@blocklet/payment-js 1.19.0 → 1.19.2
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 +97 -1
- package/lib/index.d.ts +103 -0
- package/lib/index.js +8 -0
- package/lib/resources/credit-grant.d.ts +56 -0
- package/lib/resources/credit-grant.js +25 -0
- package/lib/resources/credit-transaction.d.ts +62 -0
- package/lib/resources/credit-transaction.js +17 -0
- package/lib/resources/meter-event.d.ts +52 -0
- package/lib/resources/meter-event.js +25 -0
- package/lib/resources/meter.d.ts +39 -0
- package/lib/resources/meter.js +29 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# PaymentKit Node.js SDK
|
|
2
2
|
|
|
3
|
-
A Node.js SDK for the PaymentKit API. This package allows you to manage resources in PaymentKit including customers, subscriptions, products, prices, payments, checkout sessions, usage records, and
|
|
3
|
+
A Node.js SDK for the PaymentKit API. This package allows you to manage resources in PaymentKit including customers, subscriptions, products, prices, payments, checkout sessions, usage records, webhooks, and **credit-based billing with meters and credit grants**.
|
|
4
4
|
|
|
5
5
|
## Related Links
|
|
6
6
|
|
|
@@ -116,6 +116,54 @@ await payment.subscriptionItems.createUsageRecord({
|
|
|
116
116
|
});
|
|
117
117
|
```
|
|
118
118
|
|
|
119
|
+
### Credit-Based Billing with Meters
|
|
120
|
+
|
|
121
|
+
```js
|
|
122
|
+
// Create a meter to track usage
|
|
123
|
+
const meter = await payment.meters.create({
|
|
124
|
+
name: 'API Calls',
|
|
125
|
+
event_name: 'api_calls',
|
|
126
|
+
aggregation_method: 'sum',
|
|
127
|
+
unit: 'calls',
|
|
128
|
+
description: 'Track API usage'
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
// Create a credit grant for a customer
|
|
132
|
+
const creditGrant = await payment.creditGrants.create({
|
|
133
|
+
customer_id: 'cus_xxx',
|
|
134
|
+
amount: '1000',
|
|
135
|
+
currency_id: 'pc_xxx',
|
|
136
|
+
category: 'promotional',
|
|
137
|
+
name: 'New user bonus credits',
|
|
138
|
+
expires_at: Math.floor(Date.now() / 1000) + (30 * 24 * 60 * 60) // 30 days
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
// Report usage events
|
|
142
|
+
const meterEvent = await payment.meterEvents.create({
|
|
143
|
+
event_name: 'api_calls',
|
|
144
|
+
payload: {
|
|
145
|
+
customer_id: 'cus_xxx',
|
|
146
|
+
value: '10',
|
|
147
|
+
subscription_id: 'sub_xxx'
|
|
148
|
+
},
|
|
149
|
+
identifier: `unique_${Date.now()}`,
|
|
150
|
+
timestamp: Math.floor(Date.now() / 1000)
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
// Check credit balance
|
|
154
|
+
const creditSummary = await payment.creditGrants.summary({
|
|
155
|
+
customer_id: 'cus_xxx'
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
// View transaction history
|
|
160
|
+
const transactions = await payment.creditTransactions.list({
|
|
161
|
+
customer_id: 'cus_xxx',
|
|
162
|
+
page: 1,
|
|
163
|
+
pageSize: 20
|
|
164
|
+
});
|
|
165
|
+
```
|
|
166
|
+
|
|
119
167
|
### Handling Refunds
|
|
120
168
|
|
|
121
169
|
```js
|
|
@@ -220,6 +268,35 @@ const webhook = await payment.webhookEndpoints.create({
|
|
|
220
268
|
- `payment.subscriptionItems.listUsageRecordSummaries(id)`
|
|
221
269
|
- `payment.subscriptionItems.listUsageRecords(params)`
|
|
222
270
|
|
|
271
|
+
### Credit-Based Billing
|
|
272
|
+
|
|
273
|
+
#### Meters
|
|
274
|
+
- `payment.meters.create(data)` - Create a meter to track usage events
|
|
275
|
+
- `payment.meters.retrieve(id)` - Get meter details
|
|
276
|
+
- `payment.meters.update(id, data)` - Update meter configuration
|
|
277
|
+
- `payment.meters.list(params)` - List all meters
|
|
278
|
+
- `payment.meters.activate(id)` - Activate a meter
|
|
279
|
+
- `payment.meters.deactivate(id)` - Deactivate a meter
|
|
280
|
+
|
|
281
|
+
#### Meter Events
|
|
282
|
+
- `payment.meterEvents.create(data)` - Report usage events
|
|
283
|
+
- `payment.meterEvents.retrieve(id)` - Get meter event details
|
|
284
|
+
- `payment.meterEvents.list(params)` - List meter events
|
|
285
|
+
- `payment.meterEvents.stats(params)` - Get usage statistics
|
|
286
|
+
- `payment.meterEvents.pendingAmount(params)` - Get pending credit consumption
|
|
287
|
+
|
|
288
|
+
#### Credit Grants
|
|
289
|
+
- `payment.creditGrants.create(data)` - Create credit grants for customers
|
|
290
|
+
- `payment.creditGrants.retrieve(id)` - Get credit grant details
|
|
291
|
+
- `payment.creditGrants.update(id, data)` - Update credit grant metadata
|
|
292
|
+
- `payment.creditGrants.list(params)` - List credit grants
|
|
293
|
+
- `payment.creditGrants.summary(params)` - Get credit balance summary
|
|
294
|
+
|
|
295
|
+
#### Credit Transactions
|
|
296
|
+
- `payment.creditTransactions.retrieve(id)` - Get transaction details
|
|
297
|
+
- `payment.creditTransactions.list(params)` - List credit transactions
|
|
298
|
+
- `payment.creditTransactions.summary(params)` - Get usage and credit summary
|
|
299
|
+
|
|
223
300
|
### Webhooks
|
|
224
301
|
- `payment.webhookEndpoints.create(data)`
|
|
225
302
|
- `payment.webhookEndpoints.retrieve(id)`
|
|
@@ -227,6 +304,25 @@ const webhook = await payment.webhookEndpoints.create({
|
|
|
227
304
|
- `payment.webhookEndpoints.list(params)`
|
|
228
305
|
- `payment.webhookEndpoints.del(id)`
|
|
229
306
|
|
|
307
|
+
## Credit-Based Billing
|
|
308
|
+
|
|
309
|
+
The PaymentKit SDK supports credit-based billing, allowing you to:
|
|
310
|
+
|
|
311
|
+
1. **Track Usage with Meters**: Create meters to track specific usage events (API calls, storage usage, etc.)
|
|
312
|
+
2. **Grant Credits**: Issue credits to customers through various methods (purchases, promotions, etc.)
|
|
313
|
+
3. **Report Usage**: Submit usage events that consume credits automatically
|
|
314
|
+
4. **Monitor Balances**: Check remaining credit balances and transaction history
|
|
315
|
+
5. **Usage Analytics**: Get detailed statistics on usage patterns
|
|
316
|
+
|
|
317
|
+
### Credit Grant Categories
|
|
318
|
+
- `paid`: Credits purchased by the customer
|
|
319
|
+
- `promotional`: Free credits given as promotions or bonuses
|
|
320
|
+
|
|
321
|
+
### Meter Aggregation Methods
|
|
322
|
+
- `sum`: Sum all usage values
|
|
323
|
+
- `count`: Count number of events
|
|
324
|
+
- `last`: Use the last reported value
|
|
325
|
+
|
|
230
326
|
## Subscription Status
|
|
231
327
|
|
|
232
328
|
A subscription can have the following statuses:
|
package/lib/index.d.ts
CHANGED
|
@@ -289,6 +289,109 @@ declare const _default: {
|
|
|
289
289
|
omit: never;
|
|
290
290
|
}>>;
|
|
291
291
|
};
|
|
292
|
+
meters: {
|
|
293
|
+
create: (data: import("./resources/meter").CreateMeterData, params?: never) => Promise<import("./resources/meter").TMeterExpanded>;
|
|
294
|
+
retrieve: (_params: string, data?: never) => Promise<import("./resources/meter").TMeterExpanded>;
|
|
295
|
+
update: (_params: string, data?: import("./resources/meter").UpdateMeterData) => Promise<import("./resources/meter").TMeterExpanded>;
|
|
296
|
+
list: (_params: {
|
|
297
|
+
event_name?: string;
|
|
298
|
+
livemode?: boolean;
|
|
299
|
+
q?: string;
|
|
300
|
+
} & {
|
|
301
|
+
page?: number;
|
|
302
|
+
pageSize?: number;
|
|
303
|
+
limit?: number;
|
|
304
|
+
starting_after?: string;
|
|
305
|
+
ending_before?: string;
|
|
306
|
+
order?: import("@blocklet/payment-types").OrderInput;
|
|
307
|
+
}, data?: never) => Promise<import("@blocklet/payment-types").Paginated<import("./resources/meter").TMeterExpanded>>;
|
|
308
|
+
activate: (_params: string, data?: never) => Promise<import("./resources/meter").TMeterExpanded>;
|
|
309
|
+
deactivate: (_params: string, data?: never) => Promise<import("./resources/meter").TMeterExpanded>;
|
|
310
|
+
};
|
|
311
|
+
meterEvents: {
|
|
312
|
+
create: (data: import("./resources/meter-event").CreateMeterEventData, params?: never) => Promise<import("@blocklet/payment-types").TMeterEventExpanded>;
|
|
313
|
+
retrieve: (_params: string, data?: never) => Promise<import("@blocklet/payment-types").TMeterEventExpanded>;
|
|
314
|
+
list: (_params: {
|
|
315
|
+
event_name?: string;
|
|
316
|
+
meter_id?: string;
|
|
317
|
+
customer_id?: string;
|
|
318
|
+
start?: number;
|
|
319
|
+
end?: number;
|
|
320
|
+
livemode?: boolean;
|
|
321
|
+
q?: string;
|
|
322
|
+
} & {
|
|
323
|
+
page?: number;
|
|
324
|
+
pageSize?: number;
|
|
325
|
+
limit?: number;
|
|
326
|
+
starting_after?: string;
|
|
327
|
+
ending_before?: string;
|
|
328
|
+
order?: import("@blocklet/payment-types").OrderInput;
|
|
329
|
+
}, data?: never) => Promise<import("@blocklet/payment-types").Paginated<import("@blocklet/payment-types").TMeterEventExpanded>>;
|
|
330
|
+
stats: (_params: {
|
|
331
|
+
meter_id: string;
|
|
332
|
+
start: number;
|
|
333
|
+
end: number;
|
|
334
|
+
customer_id?: string;
|
|
335
|
+
granularity?: "minute" | "hour" | "day";
|
|
336
|
+
}, data?: never) => Promise<import("@blocklet/payment-types").Paginated<import("./resources/meter-event").MeterEventStats>>;
|
|
337
|
+
pendingAmount: (_params: {
|
|
338
|
+
subscription_id?: string;
|
|
339
|
+
customer_id?: string;
|
|
340
|
+
currency_id?: string;
|
|
341
|
+
}, data?: never) => Promise<import("./resources/meter-event").PendingAmountSummary>;
|
|
342
|
+
};
|
|
343
|
+
creditGrants: {
|
|
344
|
+
create: (data: import("./resources/credit-grant").CreateCreditGrantData, params?: never) => Promise<import("@blocklet/payment-types").TCreditGrantExpanded>;
|
|
345
|
+
retrieve: (_params: string, data?: never) => Promise<import("@blocklet/payment-types").TCreditGrantExpanded>;
|
|
346
|
+
update: (_params: string, data?: import("./resources/credit-grant").UpdateCreditGrantData) => Promise<{
|
|
347
|
+
success: boolean;
|
|
348
|
+
}>;
|
|
349
|
+
list: (_params: {
|
|
350
|
+
customer_id?: string;
|
|
351
|
+
currency_id?: string;
|
|
352
|
+
status?: string;
|
|
353
|
+
livemode?: boolean;
|
|
354
|
+
q?: string;
|
|
355
|
+
} & {
|
|
356
|
+
page?: number;
|
|
357
|
+
pageSize?: number;
|
|
358
|
+
limit?: number;
|
|
359
|
+
starting_after?: string;
|
|
360
|
+
ending_before?: string;
|
|
361
|
+
order?: import("@blocklet/payment-types").OrderInput;
|
|
362
|
+
}, data?: never) => Promise<import("@blocklet/payment-types").Paginated<import("@blocklet/payment-types").TCreditGrantExpanded>>;
|
|
363
|
+
summary: (_params: {
|
|
364
|
+
customer_id: string;
|
|
365
|
+
subscription_id?: string;
|
|
366
|
+
}, data?: never) => Promise<import("./resources/credit-grant").CreditSummary>;
|
|
367
|
+
};
|
|
368
|
+
creditTransactions: {
|
|
369
|
+
retrieve: (_params: string, data?: never) => Promise<import("@blocklet/payment-types").TCreditTransactionExpanded>;
|
|
370
|
+
list: (_params: {
|
|
371
|
+
customer_id?: string;
|
|
372
|
+
subscription_id?: string;
|
|
373
|
+
credit_grant_id?: string;
|
|
374
|
+
source?: string;
|
|
375
|
+
start?: number;
|
|
376
|
+
end?: number;
|
|
377
|
+
livemode?: boolean;
|
|
378
|
+
q?: string;
|
|
379
|
+
} & {
|
|
380
|
+
page?: number;
|
|
381
|
+
pageSize?: number;
|
|
382
|
+
limit?: number;
|
|
383
|
+
starting_after?: string;
|
|
384
|
+
ending_before?: string;
|
|
385
|
+
order?: import("@blocklet/payment-types").OrderInput;
|
|
386
|
+
}, data?: never) => Promise<import("@blocklet/payment-types").Paginated<import("@blocklet/payment-types").TCreditTransactionExpanded>>;
|
|
387
|
+
summary: (_params: {
|
|
388
|
+
customer_id?: string;
|
|
389
|
+
subscription_id?: string;
|
|
390
|
+
currency_id?: string;
|
|
391
|
+
start?: number;
|
|
392
|
+
end?: number;
|
|
393
|
+
}, data?: never) => Promise<import("./resources/credit-transaction").UsageSummary>;
|
|
394
|
+
};
|
|
292
395
|
environments: {
|
|
293
396
|
getLivemode: () => boolean;
|
|
294
397
|
setLivemode: (value: boolean) => void;
|
package/lib/index.js
CHANGED
|
@@ -31,6 +31,10 @@ const subscription_item_1 = __importDefault(require("./resources/subscription-it
|
|
|
31
31
|
const webhook_endpoint_1 = __importDefault(require("./resources/webhook-endpoint"));
|
|
32
32
|
const refund_1 = __importDefault(require("./resources/refund"));
|
|
33
33
|
const setting_1 = __importDefault(require("./resources/setting"));
|
|
34
|
+
const meter_1 = __importDefault(require("./resources/meter"));
|
|
35
|
+
const meter_event_1 = __importDefault(require("./resources/meter-event"));
|
|
36
|
+
const credit_grant_1 = __importDefault(require("./resources/credit-grant"));
|
|
37
|
+
const credit_transaction_1 = __importDefault(require("./resources/credit-transaction"));
|
|
34
38
|
// auto detect livemode
|
|
35
39
|
if (process.env.PAYMENT_LIVEMODE) {
|
|
36
40
|
resource_1.environments.setLivemode(process.env.PAYMENT_LIVEMODE === 'true');
|
|
@@ -55,6 +59,10 @@ exports.default = {
|
|
|
55
59
|
subscriptions: subscription_1.default,
|
|
56
60
|
subscriptionItems: subscription_item_1.default,
|
|
57
61
|
webhookEndpoints: webhook_endpoint_1.default,
|
|
62
|
+
meters: meter_1.default,
|
|
63
|
+
meterEvents: meter_event_1.default,
|
|
64
|
+
creditGrants: credit_grant_1.default,
|
|
65
|
+
creditTransactions: credit_transaction_1.default,
|
|
58
66
|
environments: resource_1.environments,
|
|
59
67
|
refunds: refund_1.default,
|
|
60
68
|
settings: setting_1.default,
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { Paginated, Pagination, TCreditGrantExpanded } from '@blocklet/payment-types';
|
|
2
|
+
export interface CreateCreditGrantData {
|
|
3
|
+
amount: string;
|
|
4
|
+
currency_id: string;
|
|
5
|
+
customer_id: string;
|
|
6
|
+
name?: string;
|
|
7
|
+
category: 'paid' | 'promotional';
|
|
8
|
+
priority?: number;
|
|
9
|
+
effective_at?: number;
|
|
10
|
+
expires_at?: number;
|
|
11
|
+
applicability_config?: {
|
|
12
|
+
scope?: {
|
|
13
|
+
prices?: string[];
|
|
14
|
+
price_type?: string;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
metadata?: Record<string, any>;
|
|
18
|
+
}
|
|
19
|
+
export interface UpdateCreditGrantData {
|
|
20
|
+
metadata?: Record<string, any>;
|
|
21
|
+
}
|
|
22
|
+
export interface CreditSummary {
|
|
23
|
+
customer_id: string;
|
|
24
|
+
total_balance: Record<string, {
|
|
25
|
+
currency_id: string;
|
|
26
|
+
total_amount: string;
|
|
27
|
+
available_amount: string;
|
|
28
|
+
pending_amount: string;
|
|
29
|
+
currency: {
|
|
30
|
+
id: string;
|
|
31
|
+
symbol: string;
|
|
32
|
+
decimal: number;
|
|
33
|
+
};
|
|
34
|
+
}>;
|
|
35
|
+
}
|
|
36
|
+
type ListParams = Pagination<{
|
|
37
|
+
customer_id?: string;
|
|
38
|
+
currency_id?: string;
|
|
39
|
+
status?: string;
|
|
40
|
+
livemode?: boolean;
|
|
41
|
+
q?: string;
|
|
42
|
+
}>;
|
|
43
|
+
type SummaryParams = {
|
|
44
|
+
customer_id: string;
|
|
45
|
+
subscription_id?: string;
|
|
46
|
+
};
|
|
47
|
+
declare const _default: {
|
|
48
|
+
create: (data: CreateCreditGrantData, params?: never) => Promise<TCreditGrantExpanded>;
|
|
49
|
+
retrieve: (_params: string, data?: never) => Promise<TCreditGrantExpanded>;
|
|
50
|
+
update: (_params: string, data?: UpdateCreditGrantData) => Promise<{
|
|
51
|
+
success: boolean;
|
|
52
|
+
}>;
|
|
53
|
+
list: (_params: ListParams, data?: never) => Promise<Paginated<TCreditGrantExpanded>>;
|
|
54
|
+
summary: (_params: SummaryParams, data?: never) => Promise<CreditSummary>;
|
|
55
|
+
};
|
|
56
|
+
export default _default;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const resource_1 = require("../resource");
|
|
4
|
+
exports.default = {
|
|
5
|
+
create: (0, resource_1.createResourceCreateMethod)({
|
|
6
|
+
method: 'POST',
|
|
7
|
+
path: '/api/credit-grants',
|
|
8
|
+
}),
|
|
9
|
+
retrieve: (0, resource_1.createResourceMethod)({
|
|
10
|
+
method: 'GET',
|
|
11
|
+
path: '/api/credit-grants/{id}',
|
|
12
|
+
}),
|
|
13
|
+
update: (0, resource_1.createResourceMethod)({
|
|
14
|
+
method: 'PUT',
|
|
15
|
+
path: '/api/credit-grants/{id}',
|
|
16
|
+
}),
|
|
17
|
+
list: (0, resource_1.createResourceMethod)({
|
|
18
|
+
method: 'GET',
|
|
19
|
+
path: '/api/credit-grants',
|
|
20
|
+
}),
|
|
21
|
+
summary: (0, resource_1.createResourceMethod)({
|
|
22
|
+
method: 'GET',
|
|
23
|
+
path: '/api/credit-grants/summary',
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { Paginated, Pagination, TCreditTransactionExpanded } from '@blocklet/payment-types';
|
|
2
|
+
export interface TCreditTransaction {
|
|
3
|
+
id: string;
|
|
4
|
+
customer_id: string;
|
|
5
|
+
credit_grant_id: string;
|
|
6
|
+
meter_id?: string;
|
|
7
|
+
subscription_id?: string;
|
|
8
|
+
meter_event_id?: string;
|
|
9
|
+
type: 'grant' | 'consumption' | 'adjustment' | 'expiration';
|
|
10
|
+
amount: string;
|
|
11
|
+
running_balance: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
livemode: boolean;
|
|
14
|
+
created_at: string;
|
|
15
|
+
updated_at: string;
|
|
16
|
+
metadata?: Record<string, any>;
|
|
17
|
+
}
|
|
18
|
+
export interface UsageSummary {
|
|
19
|
+
customer_id?: string;
|
|
20
|
+
subscription_id?: string;
|
|
21
|
+
currency_id?: string;
|
|
22
|
+
total_consumption: string;
|
|
23
|
+
total_grants: string;
|
|
24
|
+
net_balance: string;
|
|
25
|
+
transaction_count: number;
|
|
26
|
+
period_start?: string;
|
|
27
|
+
period_end?: string;
|
|
28
|
+
breakdown: {
|
|
29
|
+
by_type: Record<string, {
|
|
30
|
+
amount: string;
|
|
31
|
+
count: number;
|
|
32
|
+
}>;
|
|
33
|
+
by_meter?: Record<string, {
|
|
34
|
+
amount: string;
|
|
35
|
+
count: number;
|
|
36
|
+
meter_name: string;
|
|
37
|
+
}>;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
type ListParams = Pagination<{
|
|
41
|
+
customer_id?: string;
|
|
42
|
+
subscription_id?: string;
|
|
43
|
+
credit_grant_id?: string;
|
|
44
|
+
source?: string;
|
|
45
|
+
start?: number;
|
|
46
|
+
end?: number;
|
|
47
|
+
livemode?: boolean;
|
|
48
|
+
q?: string;
|
|
49
|
+
}>;
|
|
50
|
+
type SummaryParams = {
|
|
51
|
+
customer_id?: string;
|
|
52
|
+
subscription_id?: string;
|
|
53
|
+
currency_id?: string;
|
|
54
|
+
start?: number;
|
|
55
|
+
end?: number;
|
|
56
|
+
};
|
|
57
|
+
declare const _default: {
|
|
58
|
+
retrieve: (_params: string, data?: never) => Promise<TCreditTransactionExpanded>;
|
|
59
|
+
list: (_params: ListParams, data?: never) => Promise<Paginated<TCreditTransactionExpanded>>;
|
|
60
|
+
summary: (_params: SummaryParams, data?: never) => Promise<UsageSummary>;
|
|
61
|
+
};
|
|
62
|
+
export default _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const resource_1 = require("../resource");
|
|
4
|
+
exports.default = {
|
|
5
|
+
retrieve: (0, resource_1.createResourceMethod)({
|
|
6
|
+
method: 'GET',
|
|
7
|
+
path: '/api/credit-transactions/{id}',
|
|
8
|
+
}),
|
|
9
|
+
list: (0, resource_1.createResourceMethod)({
|
|
10
|
+
method: 'GET',
|
|
11
|
+
path: '/api/credit-transactions',
|
|
12
|
+
}),
|
|
13
|
+
summary: (0, resource_1.createResourceMethod)({
|
|
14
|
+
method: 'GET',
|
|
15
|
+
path: '/api/credit-transactions/summary',
|
|
16
|
+
}),
|
|
17
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Paginated, Pagination, TMeterEventExpanded } from '@blocklet/payment-types';
|
|
2
|
+
export interface CreateMeterEventData {
|
|
3
|
+
event_name: string;
|
|
4
|
+
payload: {
|
|
5
|
+
customer_id: string;
|
|
6
|
+
value: string;
|
|
7
|
+
subscription_id?: string;
|
|
8
|
+
};
|
|
9
|
+
timestamp?: number;
|
|
10
|
+
identifier: string;
|
|
11
|
+
metadata?: Record<string, any>;
|
|
12
|
+
}
|
|
13
|
+
export interface MeterEventStats {
|
|
14
|
+
date: string;
|
|
15
|
+
timestamp: string;
|
|
16
|
+
event_count: number;
|
|
17
|
+
total_value: string;
|
|
18
|
+
}
|
|
19
|
+
export interface PendingAmountSummary {
|
|
20
|
+
currency_id: string;
|
|
21
|
+
total_pending: string;
|
|
22
|
+
count: number;
|
|
23
|
+
}
|
|
24
|
+
type ListParams = Pagination<{
|
|
25
|
+
event_name?: string;
|
|
26
|
+
meter_id?: string;
|
|
27
|
+
customer_id?: string;
|
|
28
|
+
start?: number;
|
|
29
|
+
end?: number;
|
|
30
|
+
livemode?: boolean;
|
|
31
|
+
q?: string;
|
|
32
|
+
}>;
|
|
33
|
+
type StatsParams = {
|
|
34
|
+
meter_id: string;
|
|
35
|
+
start: number;
|
|
36
|
+
end: number;
|
|
37
|
+
customer_id?: string;
|
|
38
|
+
granularity?: 'minute' | 'hour' | 'day';
|
|
39
|
+
};
|
|
40
|
+
type PendingAmountParams = {
|
|
41
|
+
subscription_id?: string;
|
|
42
|
+
customer_id?: string;
|
|
43
|
+
currency_id?: string;
|
|
44
|
+
};
|
|
45
|
+
declare const _default: {
|
|
46
|
+
create: (data: CreateMeterEventData, params?: never) => Promise<TMeterEventExpanded>;
|
|
47
|
+
retrieve: (_params: string, data?: never) => Promise<TMeterEventExpanded>;
|
|
48
|
+
list: (_params: ListParams, data?: never) => Promise<Paginated<TMeterEventExpanded>>;
|
|
49
|
+
stats: (_params: StatsParams, data?: never) => Promise<Paginated<MeterEventStats>>;
|
|
50
|
+
pendingAmount: (_params: PendingAmountParams, data?: never) => Promise<PendingAmountSummary>;
|
|
51
|
+
};
|
|
52
|
+
export default _default;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const resource_1 = require("../resource");
|
|
4
|
+
exports.default = {
|
|
5
|
+
create: (0, resource_1.createResourceCreateMethod)({
|
|
6
|
+
method: 'POST',
|
|
7
|
+
path: '/api/meter-events',
|
|
8
|
+
}),
|
|
9
|
+
retrieve: (0, resource_1.createResourceMethod)({
|
|
10
|
+
method: 'GET',
|
|
11
|
+
path: '/api/meter-events/{id}',
|
|
12
|
+
}),
|
|
13
|
+
list: (0, resource_1.createResourceMethod)({
|
|
14
|
+
method: 'GET',
|
|
15
|
+
path: '/api/meter-events',
|
|
16
|
+
}),
|
|
17
|
+
stats: (0, resource_1.createResourceMethod)({
|
|
18
|
+
method: 'GET',
|
|
19
|
+
path: '/api/meter-events/stats',
|
|
20
|
+
}),
|
|
21
|
+
pendingAmount: (0, resource_1.createResourceMethod)({
|
|
22
|
+
method: 'GET',
|
|
23
|
+
path: '/api/meter-events/pending-amount',
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Paginated, Pagination, TMeter } from '@blocklet/payment-types';
|
|
2
|
+
export interface TMeterExpanded extends TMeter {
|
|
3
|
+
paymentCurrency?: {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
symbol: string;
|
|
7
|
+
decimal: number;
|
|
8
|
+
type: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export interface CreateMeterData {
|
|
12
|
+
name: string;
|
|
13
|
+
event_name: string;
|
|
14
|
+
aggregation_method?: 'sum' | 'count' | 'last';
|
|
15
|
+
unit: string;
|
|
16
|
+
currency_id?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
metadata?: Record<string, any>;
|
|
19
|
+
}
|
|
20
|
+
export interface UpdateMeterData {
|
|
21
|
+
name?: string;
|
|
22
|
+
description?: string;
|
|
23
|
+
status?: 'active' | 'inactive';
|
|
24
|
+
metadata?: Record<string, any>;
|
|
25
|
+
}
|
|
26
|
+
type ListParams = Pagination<{
|
|
27
|
+
event_name?: string;
|
|
28
|
+
livemode?: boolean;
|
|
29
|
+
q?: string;
|
|
30
|
+
}>;
|
|
31
|
+
declare const _default: {
|
|
32
|
+
create: (data: CreateMeterData, params?: never) => Promise<TMeterExpanded>;
|
|
33
|
+
retrieve: (_params: string, data?: never) => Promise<TMeterExpanded>;
|
|
34
|
+
update: (_params: string, data?: UpdateMeterData) => Promise<TMeterExpanded>;
|
|
35
|
+
list: (_params: ListParams, data?: never) => Promise<Paginated<TMeterExpanded>>;
|
|
36
|
+
activate: (_params: string, data?: never) => Promise<TMeterExpanded>;
|
|
37
|
+
deactivate: (_params: string, data?: never) => Promise<TMeterExpanded>;
|
|
38
|
+
};
|
|
39
|
+
export default _default;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const resource_1 = require("../resource");
|
|
4
|
+
exports.default = {
|
|
5
|
+
create: (0, resource_1.createResourceCreateMethod)({
|
|
6
|
+
method: 'POST',
|
|
7
|
+
path: '/api/meters',
|
|
8
|
+
}),
|
|
9
|
+
retrieve: (0, resource_1.createResourceMethod)({
|
|
10
|
+
method: 'GET',
|
|
11
|
+
path: '/api/meters/{id}',
|
|
12
|
+
}),
|
|
13
|
+
update: (0, resource_1.createResourceMethod)({
|
|
14
|
+
method: 'PUT',
|
|
15
|
+
path: '/api/meters/{id}',
|
|
16
|
+
}),
|
|
17
|
+
list: (0, resource_1.createResourceMethod)({
|
|
18
|
+
method: 'GET',
|
|
19
|
+
path: '/api/meters',
|
|
20
|
+
}),
|
|
21
|
+
activate: (0, resource_1.createResourceMethod)({
|
|
22
|
+
method: 'PUT',
|
|
23
|
+
path: '/api/meters/{id}/activate',
|
|
24
|
+
}),
|
|
25
|
+
deactivate: (0, resource_1.createResourceMethod)({
|
|
26
|
+
method: 'PUT',
|
|
27
|
+
path: '/api/meters/{id}/deactivate',
|
|
28
|
+
}),
|
|
29
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blocklet/payment-js",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.2",
|
|
4
4
|
"description": "Node.js client for Payment Kit",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"types",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"url": "https://github.com/blocklet/payment-kit/issues"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@blocklet/payment-types": "1.19.
|
|
39
|
+
"@blocklet/payment-types": "1.19.2",
|
|
40
40
|
"@blocklet/sdk": "^1.16.44"
|
|
41
41
|
},
|
|
42
42
|
"importSort": {
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"type-fest": "^4.41.0",
|
|
64
64
|
"typescript": "5.5.4"
|
|
65
65
|
},
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "741c897204afc412721a942201516932bff59235"
|
|
67
67
|
}
|