@leaflow/sdk 0.0.0-dev.212.gea1bf06 → 0.0.0-dev.214.g13f9d6c
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 +12 -3
- package/dist/billing/{v1 → account/v1}/client.d.ts +1 -1
- package/dist/{billingaccount → billing/account}/v1/client.js +1 -1
- package/dist/{billingaccount → billing/account}/v1/index.d.ts +0 -26
- package/dist/{billingaccount → billing/account}/v1/schema.d.ts +0 -775
- package/dist/{billingaccount → billing/catalog}/v1/client.d.ts +1 -1
- package/dist/billing/{v1 → catalog/v1}/client.js +1 -1
- package/dist/billing/catalog/v1/index.d.ts +29 -0
- package/dist/billing/catalog/v1/schema.d.ts +910 -0
- package/dist/billing/index.d.ts +3 -0
- package/dist/billing/index.js +6 -0
- package/dist/billing/project/v1/client.d.ts +4 -0
- package/dist/billing/project/v1/client.js +7 -0
- package/dist/billing/project/v1/index.js +5 -0
- package/dist/billing/project/v1/schema.js +5 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.js +1 -2
- package/package.json +11 -7
- /package/dist/billing/{v1 → account/v1}/index.js +0 -0
- /package/dist/billing/{v1 → account/v1}/schema.js +0 -0
- /package/dist/{billingaccount → billing/catalog}/v1/index.js +0 -0
- /package/dist/{billingaccount → billing/catalog}/v1/schema.js +0 -0
- /package/dist/billing/{v1 → project/v1}/index.d.ts +0 -0
- /package/dist/billing/{v1 → project/v1}/schema.d.ts +0 -0
|
@@ -0,0 +1,910 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was auto-generated by openapi-typescript.
|
|
3
|
+
* Do not make direct changes to the file.
|
|
4
|
+
*/
|
|
5
|
+
export interface paths {
|
|
6
|
+
"/catalog/v1/prices": {
|
|
7
|
+
parameters: {
|
|
8
|
+
query?: never;
|
|
9
|
+
header?: never;
|
|
10
|
+
path?: never;
|
|
11
|
+
cookie?: never;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* List what is on sale, with prices
|
|
15
|
+
* @description Every sellable thing and what it costs, in one request. A plan appears once per price.
|
|
16
|
+
*
|
|
17
|
+
* `currency` is required: a plan has a price in each currency it is sold in, so "what does
|
|
18
|
+
* this cost" has no answer without one.
|
|
19
|
+
*
|
|
20
|
+
* Retired prices are left out. Existing subscriptions still reference them, so this is not
|
|
21
|
+
* the place to look up what an existing purchase is paying.
|
|
22
|
+
*/
|
|
23
|
+
get: operations["list-prices"];
|
|
24
|
+
put?: never;
|
|
25
|
+
post?: never;
|
|
26
|
+
delete?: never;
|
|
27
|
+
options?: never;
|
|
28
|
+
head?: never;
|
|
29
|
+
patch?: never;
|
|
30
|
+
trace?: never;
|
|
31
|
+
};
|
|
32
|
+
"/catalog/v1/products": {
|
|
33
|
+
parameters: {
|
|
34
|
+
query?: never;
|
|
35
|
+
header?: never;
|
|
36
|
+
path?: never;
|
|
37
|
+
cookie?: never;
|
|
38
|
+
};
|
|
39
|
+
/** List catalog products */
|
|
40
|
+
get: operations["list-products"];
|
|
41
|
+
put?: never;
|
|
42
|
+
post?: never;
|
|
43
|
+
delete?: never;
|
|
44
|
+
options?: never;
|
|
45
|
+
head?: never;
|
|
46
|
+
patch?: never;
|
|
47
|
+
trace?: never;
|
|
48
|
+
};
|
|
49
|
+
"/catalog/v1/products/{productId}": {
|
|
50
|
+
parameters: {
|
|
51
|
+
query?: never;
|
|
52
|
+
header?: never;
|
|
53
|
+
path: {
|
|
54
|
+
productId: components["schemas"]["ProductID"];
|
|
55
|
+
};
|
|
56
|
+
cookie?: never;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Get a service
|
|
60
|
+
* @description Resolves an identifier that was stored elsewhere — on an order line, an invoice line, or
|
|
61
|
+
* the terms of a credit — into something that can be displayed.
|
|
62
|
+
*/
|
|
63
|
+
get: operations["get-product"];
|
|
64
|
+
put?: never;
|
|
65
|
+
post?: never;
|
|
66
|
+
delete?: never;
|
|
67
|
+
options?: never;
|
|
68
|
+
head?: never;
|
|
69
|
+
patch?: never;
|
|
70
|
+
trace?: never;
|
|
71
|
+
};
|
|
72
|
+
"/catalog/v1/plans/{planId}": {
|
|
73
|
+
parameters: {
|
|
74
|
+
query?: never;
|
|
75
|
+
header?: never;
|
|
76
|
+
path: {
|
|
77
|
+
planId: string;
|
|
78
|
+
};
|
|
79
|
+
cookie?: never;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Get a sellable item
|
|
83
|
+
* @description Resolves a stored identifier into something that can be displayed. Returns items that are
|
|
84
|
+
* no longer on sale: an existing purchase still refers to one.
|
|
85
|
+
*/
|
|
86
|
+
get: operations["get-plan"];
|
|
87
|
+
put?: never;
|
|
88
|
+
post?: never;
|
|
89
|
+
delete?: never;
|
|
90
|
+
options?: never;
|
|
91
|
+
head?: never;
|
|
92
|
+
patch?: never;
|
|
93
|
+
trace?: never;
|
|
94
|
+
};
|
|
95
|
+
"/catalog/v1/prices/{priceId}": {
|
|
96
|
+
parameters: {
|
|
97
|
+
query?: never;
|
|
98
|
+
header?: never;
|
|
99
|
+
path: {
|
|
100
|
+
priceId: string;
|
|
101
|
+
};
|
|
102
|
+
cookie?: never;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Get a price
|
|
106
|
+
* @description Returns the catalog price, including retired prices. Fixed purchase history and renewal agreements are shown on orders and subscriptions rather than reconstructed from today's catalog.
|
|
107
|
+
*/
|
|
108
|
+
get: operations["get-price"];
|
|
109
|
+
put?: never;
|
|
110
|
+
post?: never;
|
|
111
|
+
delete?: never;
|
|
112
|
+
options?: never;
|
|
113
|
+
head?: never;
|
|
114
|
+
patch?: never;
|
|
115
|
+
trace?: never;
|
|
116
|
+
};
|
|
117
|
+
"/catalog/v1/plans": {
|
|
118
|
+
parameters: {
|
|
119
|
+
query: {
|
|
120
|
+
product_id: components["schemas"]["ProductID"];
|
|
121
|
+
};
|
|
122
|
+
header?: never;
|
|
123
|
+
path?: never;
|
|
124
|
+
cookie?: never;
|
|
125
|
+
};
|
|
126
|
+
/** List catalog plans */
|
|
127
|
+
get: operations["list-plans"];
|
|
128
|
+
put?: never;
|
|
129
|
+
post?: never;
|
|
130
|
+
delete?: never;
|
|
131
|
+
options?: never;
|
|
132
|
+
head?: never;
|
|
133
|
+
patch?: never;
|
|
134
|
+
trace?: never;
|
|
135
|
+
};
|
|
136
|
+
"/catalog/v1/plans/{planId}/prices": {
|
|
137
|
+
parameters: {
|
|
138
|
+
query?: never;
|
|
139
|
+
header?: never;
|
|
140
|
+
path: {
|
|
141
|
+
planId: components["parameters"]["PlanId"];
|
|
142
|
+
};
|
|
143
|
+
cookie?: never;
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* List catalog prices
|
|
147
|
+
* @description Public list prices only. An account holding a negotiated agreement may be charged less;
|
|
148
|
+
* it is never charged more.
|
|
149
|
+
*/
|
|
150
|
+
get: operations["list-prices-by-plan"];
|
|
151
|
+
put?: never;
|
|
152
|
+
post?: never;
|
|
153
|
+
delete?: never;
|
|
154
|
+
options?: never;
|
|
155
|
+
head?: never;
|
|
156
|
+
patch?: never;
|
|
157
|
+
trace?: never;
|
|
158
|
+
};
|
|
159
|
+
"/catalog/v1/rate-cards/{rateCardId}/rules": {
|
|
160
|
+
parameters: {
|
|
161
|
+
query?: never;
|
|
162
|
+
header?: never;
|
|
163
|
+
path: {
|
|
164
|
+
rateCardId: components["parameters"]["RateCardId"];
|
|
165
|
+
};
|
|
166
|
+
cookie?: never;
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* List catalog rates
|
|
170
|
+
* @description Only public price lists are readable here. A list written for a single agreement is not,
|
|
171
|
+
* and its identifier cannot be used to reach it.
|
|
172
|
+
*/
|
|
173
|
+
get: operations["list-rates"];
|
|
174
|
+
put?: never;
|
|
175
|
+
post?: never;
|
|
176
|
+
delete?: never;
|
|
177
|
+
options?: never;
|
|
178
|
+
head?: never;
|
|
179
|
+
patch?: never;
|
|
180
|
+
trace?: never;
|
|
181
|
+
};
|
|
182
|
+
"/catalog/v1/estimates": {
|
|
183
|
+
parameters: {
|
|
184
|
+
query?: never;
|
|
185
|
+
header?: never;
|
|
186
|
+
path?: never;
|
|
187
|
+
cookie?: never;
|
|
188
|
+
};
|
|
189
|
+
get?: never;
|
|
190
|
+
put?: never;
|
|
191
|
+
/**
|
|
192
|
+
* Estimate a basket
|
|
193
|
+
* @description Uses public list prices. Nothing is reserved and nothing is recorded, so this may be
|
|
194
|
+
* called as often as required.
|
|
195
|
+
*
|
|
196
|
+
* `POST` is used because the set of items to price does not fit in a query string. There is
|
|
197
|
+
* no corresponding `GET`, and no estimate is stored to retrieve.
|
|
198
|
+
*
|
|
199
|
+
* An account holding a negotiated agreement may be charged less than this. Tax and
|
|
200
|
+
* discounts are not included.
|
|
201
|
+
*/
|
|
202
|
+
post: operations["create-estimate"];
|
|
203
|
+
delete?: never;
|
|
204
|
+
options?: never;
|
|
205
|
+
head?: never;
|
|
206
|
+
patch?: never;
|
|
207
|
+
trace?: never;
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
export type webhooks = Record<string, never>;
|
|
211
|
+
export interface components {
|
|
212
|
+
schemas: {
|
|
213
|
+
/**
|
|
214
|
+
* @description Whether a fulfilled purchase may end immediately or only after its paid term. Does not grant a refund. When absent, the terms are not configured and termination requires review.
|
|
215
|
+
* @enum {string}
|
|
216
|
+
*/
|
|
217
|
+
TerminationPolicy: "immediate" | "period_end";
|
|
218
|
+
/**
|
|
219
|
+
* @description Prorated returns the unused value of paid service periods using integer-second duration ratios. Setup fees are excluded. Tax and funds follow the original invoice and payment sources.
|
|
220
|
+
* @enum {string}
|
|
221
|
+
*/
|
|
222
|
+
RefundPolicy: "none" | "prorated";
|
|
223
|
+
Error: {
|
|
224
|
+
code?: string;
|
|
225
|
+
message: string;
|
|
226
|
+
/**
|
|
227
|
+
* @description What a given `code` carries alongside the message. The keys depend on the code,
|
|
228
|
+
* and a client that does not recognise one ignores it.
|
|
229
|
+
*/
|
|
230
|
+
meta?: {
|
|
231
|
+
[key: string]: unknown;
|
|
232
|
+
};
|
|
233
|
+
/** Format: int64 */
|
|
234
|
+
status: number;
|
|
235
|
+
};
|
|
236
|
+
Product: {
|
|
237
|
+
id: components["schemas"]["ProductID"];
|
|
238
|
+
name: string;
|
|
239
|
+
description?: string;
|
|
240
|
+
};
|
|
241
|
+
/** @description Immutable platform service identifier, such as compute, canopy or assistant. */
|
|
242
|
+
ProductID: string;
|
|
243
|
+
ProductList: {
|
|
244
|
+
items: components["schemas"]["Product"][];
|
|
245
|
+
/** Format: int64 */
|
|
246
|
+
total_count?: number;
|
|
247
|
+
};
|
|
248
|
+
Plan: {
|
|
249
|
+
enabled: boolean;
|
|
250
|
+
lookup_key?: string;
|
|
251
|
+
product: components["schemas"]["Product"];
|
|
252
|
+
features: components["schemas"]["PlanFeature"][];
|
|
253
|
+
/** Format: uuid */
|
|
254
|
+
id: string;
|
|
255
|
+
product_id: components["schemas"]["ProductID"];
|
|
256
|
+
name: string;
|
|
257
|
+
description?: string;
|
|
258
|
+
};
|
|
259
|
+
PlanList: {
|
|
260
|
+
items: components["schemas"]["Plan"][];
|
|
261
|
+
/** Format: int64 */
|
|
262
|
+
total_count?: number;
|
|
263
|
+
};
|
|
264
|
+
Price: {
|
|
265
|
+
rate_card?: components["schemas"]["ObjectIdentity"];
|
|
266
|
+
lookup_key?: string;
|
|
267
|
+
product: components["schemas"]["Product"];
|
|
268
|
+
plan: components["schemas"]["ObjectIdentity"];
|
|
269
|
+
/** Format: uuid */
|
|
270
|
+
meter_id?: string;
|
|
271
|
+
meter?: components["schemas"]["ObjectIdentity"];
|
|
272
|
+
unit_quantity: string;
|
|
273
|
+
enabled?: boolean;
|
|
274
|
+
termination_policy?: components["schemas"]["TerminationPolicy"];
|
|
275
|
+
refund_policy?: components["schemas"]["RefundPolicy"];
|
|
276
|
+
product_id?: components["schemas"]["ProductID"];
|
|
277
|
+
/** Format: uuid */
|
|
278
|
+
id: string;
|
|
279
|
+
/** Format: uuid */
|
|
280
|
+
plan_id: string;
|
|
281
|
+
currency: string;
|
|
282
|
+
/**
|
|
283
|
+
* @description `postpaid` charges for what is used, `prepaid` buys a period in advance, `one_time`
|
|
284
|
+
* charges once.
|
|
285
|
+
* @enum {string}
|
|
286
|
+
*/
|
|
287
|
+
type: "postpaid" | "prepaid" | "one_time";
|
|
288
|
+
/**
|
|
289
|
+
* @description How the amount is arrived at. `rated` means the rate depends on attributes such as
|
|
290
|
+
* region or machine type, and is looked up on a price list.
|
|
291
|
+
* @enum {string}
|
|
292
|
+
*/
|
|
293
|
+
billing_scheme: "per_unit" | "tiered" | "rated";
|
|
294
|
+
/** @description Present for `per_unit`. */
|
|
295
|
+
unit_amount?: components["schemas"]["Money"];
|
|
296
|
+
/**
|
|
297
|
+
* @description `none` for a price that is not tiered, which is most of them.
|
|
298
|
+
*
|
|
299
|
+
* Otherwise `graduated` charges each band at its own rate, and `volume` charges
|
|
300
|
+
* everything at the rate of the band the total falls in.
|
|
301
|
+
* @enum {string}
|
|
302
|
+
*/
|
|
303
|
+
tiers_mode?: "none" | "graduated" | "volume";
|
|
304
|
+
/** @description Present for `tiered`, in ascending order. */
|
|
305
|
+
tiers?: components["schemas"]["Tier"][];
|
|
306
|
+
/**
|
|
307
|
+
* Format: uuid
|
|
308
|
+
* @description For `rated` prices, the price list the rates are read from.
|
|
309
|
+
*/
|
|
310
|
+
rate_card_id?: string;
|
|
311
|
+
/** @description The smallest quantity that can be bought. Absent means no lower bound. */
|
|
312
|
+
min_quantity?: string;
|
|
313
|
+
/**
|
|
314
|
+
* @description The largest purchasable quantity. Omitted when no maximum applies. A quantity above this limit is
|
|
315
|
+
* rejected with BILLING_PRICE_INVALID and field=max_quantity.
|
|
316
|
+
*/
|
|
317
|
+
max_quantity?: string;
|
|
318
|
+
/** @description Quantities must be a multiple of this. Absent means any quantity within the bounds. */
|
|
319
|
+
quantity_step?: string;
|
|
320
|
+
/** @description For prepaid prices, how many periods one purchase covers. */
|
|
321
|
+
interval_count?: number;
|
|
322
|
+
/** @enum {string} */
|
|
323
|
+
interval: "none" | "day" | "month" | "year";
|
|
324
|
+
setup_fee?: components["schemas"]["Money"];
|
|
325
|
+
};
|
|
326
|
+
PriceList: {
|
|
327
|
+
items: components["schemas"]["Price"][];
|
|
328
|
+
/** Format: int64 */
|
|
329
|
+
total_count?: number;
|
|
330
|
+
};
|
|
331
|
+
Rate: {
|
|
332
|
+
meter: components["schemas"]["ObjectIdentity"];
|
|
333
|
+
/** @description The unit readings arrive in, such as `core-second`. */
|
|
334
|
+
unit?: string;
|
|
335
|
+
/** @description The attributes this rate applies to, such as region and machine type. */
|
|
336
|
+
dimensions: {
|
|
337
|
+
[key: string]: string;
|
|
338
|
+
};
|
|
339
|
+
/** @enum {string} */
|
|
340
|
+
pricing_model: "per_unit" | "graduated" | "volume";
|
|
341
|
+
/** @description Present for `per_unit`. Tiered rates carry their amounts on the tiers. */
|
|
342
|
+
unit_amount?: components["schemas"]["Money"];
|
|
343
|
+
/** @description Present for `graduated` and `volume`, in ascending order. */
|
|
344
|
+
tiers?: components["schemas"]["Tier"][];
|
|
345
|
+
/**
|
|
346
|
+
* @description How many measured units one amount covers. An hourly rate on a per-second meter is
|
|
347
|
+
* `"3600"`.
|
|
348
|
+
*/
|
|
349
|
+
unit_quantity?: string;
|
|
350
|
+
currency: string;
|
|
351
|
+
/** Format: date-time */
|
|
352
|
+
effective_from: string;
|
|
353
|
+
/** Format: date-time */
|
|
354
|
+
effective_to?: string | null;
|
|
355
|
+
};
|
|
356
|
+
RateList: {
|
|
357
|
+
items: components["schemas"]["Rate"][];
|
|
358
|
+
/** Format: int64 */
|
|
359
|
+
total_count?: number;
|
|
360
|
+
};
|
|
361
|
+
/**
|
|
362
|
+
* @description Identify a price directly, or select a price for a plan. For each resource give its ID or lookup key, never both. Lookup keys require product_id.
|
|
363
|
+
*
|
|
364
|
+
* A line that gives a meter, `dimensions` or `duration_seconds` estimates usage and is
|
|
365
|
+
* priced only at a postpaid price. Such a line is refused with HTTP 400
|
|
366
|
+
* `BILLING_PURCHASE_INVALID` when `price_type` is `prepaid` or `one_time`, or when the price
|
|
367
|
+
* it names is not postpaid; `meta.field` is `price_type`, `price_id` or `price_lookup_key`
|
|
368
|
+
* accordingly. When the plan has no postpaid price, the line is returned unpriced with
|
|
369
|
+
* `no_price`.
|
|
370
|
+
*/
|
|
371
|
+
QuoteLine: {
|
|
372
|
+
price_lookup_key?: string;
|
|
373
|
+
plan_lookup_key?: string;
|
|
374
|
+
meter_lookup_key?: string;
|
|
375
|
+
/** Format: uuid */
|
|
376
|
+
price_id?: string;
|
|
377
|
+
product_id?: components["schemas"]["ProductID"];
|
|
378
|
+
/** Format: uuid */
|
|
379
|
+
plan_id?: string;
|
|
380
|
+
/** Format: uuid */
|
|
381
|
+
meter_id?: string;
|
|
382
|
+
/**
|
|
383
|
+
* @description The attributes the price depends on — region, instance type, token class.
|
|
384
|
+
*
|
|
385
|
+
* Required when the price draws its rates from a price list, which is how anything
|
|
386
|
+
* sold by region or by machine type is priced. A price that carries a single unit
|
|
387
|
+
* amount, or a ladder, has no attributes to give and takes none.
|
|
388
|
+
*
|
|
389
|
+
* Every attribute the meter declares must be present. A combination with no rate
|
|
390
|
+
* covering it is refused rather than priced at zero.
|
|
391
|
+
*/
|
|
392
|
+
dimensions?: {
|
|
393
|
+
[key: string]: string;
|
|
394
|
+
};
|
|
395
|
+
/**
|
|
396
|
+
* @description Narrows the selection when a plan offers more than one billing type.
|
|
397
|
+
* @enum {string}
|
|
398
|
+
*/
|
|
399
|
+
price_type?: "postpaid" | "prepaid" | "one_time";
|
|
400
|
+
/** @enum {string} */
|
|
401
|
+
interval?: "none" | "day" | "month" | "year";
|
|
402
|
+
interval_count?: number;
|
|
403
|
+
quantity: string;
|
|
404
|
+
/**
|
|
405
|
+
* Format: int64
|
|
406
|
+
* @description For metered items, how long to price for. This allows an estimate such as "about
|
|
407
|
+
* this much per month" to be shown before anything exists. The priced quantity is
|
|
408
|
+
* `quantity` multiplied by this duration.
|
|
409
|
+
*/
|
|
410
|
+
duration_seconds?: number;
|
|
411
|
+
};
|
|
412
|
+
EstimateRequest: {
|
|
413
|
+
/** @description Must be one the catalogue publishes. */
|
|
414
|
+
currency: string;
|
|
415
|
+
lines: components["schemas"]["QuoteLine"][];
|
|
416
|
+
};
|
|
417
|
+
QuoteLineResult: {
|
|
418
|
+
/** @description Tax included in the account quote. Absent in public catalogue estimates. */
|
|
419
|
+
tax_amount?: components["schemas"]["Money"];
|
|
420
|
+
/** @description Tax already included in the displayed price. */
|
|
421
|
+
tax_included_amount?: components["schemas"]["Money"];
|
|
422
|
+
/** @description Which line of the request this answers. */
|
|
423
|
+
index: number;
|
|
424
|
+
/**
|
|
425
|
+
* @description Whether a price was found for this line. Read this before anything else.
|
|
426
|
+
*
|
|
427
|
+
* A single item with no price no longer fails the whole request. A catalogue
|
|
428
|
+
* almost always has something not yet priced, and refusing the request would
|
|
429
|
+
* leave no way to render a list in which a few entries are simply not on sale.
|
|
430
|
+
*
|
|
431
|
+
* When false, `price_id`, `unit_amount` and `amount` are absent and
|
|
432
|
+
* `unpriced_reason` states what is missing.
|
|
433
|
+
*/
|
|
434
|
+
priced: boolean;
|
|
435
|
+
/**
|
|
436
|
+
* @description Why no price was found; `none` while `priced` is true.
|
|
437
|
+
*
|
|
438
|
+
* The last four are told apart because their remedies differ: the price points
|
|
439
|
+
* at no price list, the list holds no rate for that meter, that exact combination
|
|
440
|
+
* of attributes is not configured, or it is configured but nothing is in effect
|
|
441
|
+
* at the moment asked about.
|
|
442
|
+
* @enum {string}
|
|
443
|
+
*/
|
|
444
|
+
unpriced_reason?: "none" | "no_price" | "no_rate_card" | "no_meter" | "no_dimensions" | "no_effective_rule";
|
|
445
|
+
/**
|
|
446
|
+
* Format: uuid
|
|
447
|
+
* @description The price selected. Returned whenever `priced` is true, including when the
|
|
448
|
+
* request identified the item indirectly, so that the choice can be confirmed.
|
|
449
|
+
*/
|
|
450
|
+
price_id?: string;
|
|
451
|
+
plan_name?: string;
|
|
452
|
+
unit_amount?: components["schemas"]["Money"];
|
|
453
|
+
/**
|
|
454
|
+
* @description The quantity actually priced. When `duration_seconds` is given, it is the requested
|
|
455
|
+
* `quantity` multiplied by that duration.
|
|
456
|
+
*/
|
|
457
|
+
quantity?: string;
|
|
458
|
+
/** @description Not rounded. Round only for display. */
|
|
459
|
+
amount?: components["schemas"]["Money"];
|
|
460
|
+
currency: string;
|
|
461
|
+
};
|
|
462
|
+
Quote: {
|
|
463
|
+
lines?: components["schemas"]["QuoteLineResult"][];
|
|
464
|
+
/**
|
|
465
|
+
* @description What would be owed in total. Amounts to be returned are not netted off it.
|
|
466
|
+
*
|
|
467
|
+
* Null when any line could not be priced. What would be owed is not knowable then, and a
|
|
468
|
+
* total that silently left the unpriced lines out would read as a smaller bill rather than
|
|
469
|
+
* an incomplete one — the per-line `priced` flag is easy to skip, a missing total is not.
|
|
470
|
+
*/
|
|
471
|
+
total?: components["schemas"]["Money"] | null;
|
|
472
|
+
currency: string;
|
|
473
|
+
};
|
|
474
|
+
Tier: {
|
|
475
|
+
/** @description The upper bound of this band. Null on the last band, which has no bound. */
|
|
476
|
+
up_to?: string | null;
|
|
477
|
+
unit_amount: components["schemas"]["Money"];
|
|
478
|
+
/** @description Charged once when this band is reached, in addition to the per-unit amount. */
|
|
479
|
+
flat_amount?: components["schemas"]["Money"];
|
|
480
|
+
};
|
|
481
|
+
PlanFeature: {
|
|
482
|
+
feature: components["schemas"]["ObjectIdentity"];
|
|
483
|
+
name: string;
|
|
484
|
+
};
|
|
485
|
+
/** @description A catalog object inlined for display. */
|
|
486
|
+
ObjectIdentity: {
|
|
487
|
+
lookup_key?: string;
|
|
488
|
+
/** Format: uuid */
|
|
489
|
+
id: string;
|
|
490
|
+
name: string;
|
|
491
|
+
};
|
|
492
|
+
/**
|
|
493
|
+
* @description A decimal string, in the currency stated alongside it.
|
|
494
|
+
*
|
|
495
|
+
* **The currency is not part of this type.** It is carried by a `currency` field next to the
|
|
496
|
+
* amount, or by the account the amount belongs to. Reading an amount without that field is
|
|
497
|
+
* reading a number with no unit.
|
|
498
|
+
*
|
|
499
|
+
* It is a string rather than a JSON number because a JSON number is a float in most parsers,
|
|
500
|
+
* and a float loses precision on the first arithmetic. Nothing on this platform puts an amount
|
|
501
|
+
* through a float.
|
|
502
|
+
* @example 10.2500000000
|
|
503
|
+
*/
|
|
504
|
+
Money: string;
|
|
505
|
+
};
|
|
506
|
+
responses: {
|
|
507
|
+
/** @description Unchanged since the `ETag` that was sent. No body. */
|
|
508
|
+
NotModified: {
|
|
509
|
+
headers: {
|
|
510
|
+
/** @description The same entity tag that was sent. */
|
|
511
|
+
ETag?: string;
|
|
512
|
+
[name: string]: unknown;
|
|
513
|
+
};
|
|
514
|
+
content?: never;
|
|
515
|
+
};
|
|
516
|
+
/** @description Error */
|
|
517
|
+
Error: {
|
|
518
|
+
headers: {
|
|
519
|
+
[name: string]: unknown;
|
|
520
|
+
};
|
|
521
|
+
content: {
|
|
522
|
+
"application/json": components["schemas"]["Error"];
|
|
523
|
+
};
|
|
524
|
+
};
|
|
525
|
+
};
|
|
526
|
+
parameters: {
|
|
527
|
+
/**
|
|
528
|
+
* @description The `ETag` from an earlier reply. When the catalogue has not changed since, the
|
|
529
|
+
* answer is `304` with no body.
|
|
530
|
+
*
|
|
531
|
+
* Send it on every catalogue read. An unchanged catalogue is answered without a body.
|
|
532
|
+
*/
|
|
533
|
+
IfNoneMatch: string;
|
|
534
|
+
/** @description 1-based page number; the first page when omitted. */
|
|
535
|
+
Page: number;
|
|
536
|
+
/** @description How many per page, 100 at most. */
|
|
537
|
+
PageSize: number;
|
|
538
|
+
PlanId: string;
|
|
539
|
+
RateCardId: string;
|
|
540
|
+
};
|
|
541
|
+
requestBodies: never;
|
|
542
|
+
headers: never;
|
|
543
|
+
pathItems: never;
|
|
544
|
+
}
|
|
545
|
+
export type $defs = Record<string, never>;
|
|
546
|
+
export interface operations {
|
|
547
|
+
"list-prices": {
|
|
548
|
+
parameters: {
|
|
549
|
+
query: {
|
|
550
|
+
/** @description 1-based page number; the first page when omitted. */
|
|
551
|
+
page?: components["parameters"]["Page"];
|
|
552
|
+
/** @description How many per page, 100 at most. */
|
|
553
|
+
page_size?: components["parameters"]["PageSize"];
|
|
554
|
+
/** @description ISO 4217, three uppercase letters. */
|
|
555
|
+
currency: string;
|
|
556
|
+
product_id?: components["schemas"]["ProductID"];
|
|
557
|
+
/** @description Narrows to one payment timing. */
|
|
558
|
+
type?: "postpaid" | "prepaid" | "one_time";
|
|
559
|
+
};
|
|
560
|
+
header?: {
|
|
561
|
+
/**
|
|
562
|
+
* @description The `ETag` from an earlier reply. When the catalogue has not changed since, the
|
|
563
|
+
* answer is `304` with no body.
|
|
564
|
+
*
|
|
565
|
+
* Send it on every catalogue read. An unchanged catalogue is answered without a body.
|
|
566
|
+
*/
|
|
567
|
+
"If-None-Match"?: components["parameters"]["IfNoneMatch"];
|
|
568
|
+
};
|
|
569
|
+
path?: never;
|
|
570
|
+
cookie?: never;
|
|
571
|
+
};
|
|
572
|
+
requestBody?: never;
|
|
573
|
+
responses: {
|
|
574
|
+
/** @description OK */
|
|
575
|
+
200: {
|
|
576
|
+
headers: {
|
|
577
|
+
/** @description Changes whenever this catalog representation changes. */
|
|
578
|
+
ETag?: string;
|
|
579
|
+
[name: string]: unknown;
|
|
580
|
+
};
|
|
581
|
+
content: {
|
|
582
|
+
"application/json": components["schemas"]["PriceList"];
|
|
583
|
+
};
|
|
584
|
+
};
|
|
585
|
+
/** @description Not Modified */
|
|
586
|
+
304: {
|
|
587
|
+
headers: {
|
|
588
|
+
[name: string]: unknown;
|
|
589
|
+
};
|
|
590
|
+
content?: never;
|
|
591
|
+
};
|
|
592
|
+
default: components["responses"]["Error"];
|
|
593
|
+
};
|
|
594
|
+
};
|
|
595
|
+
"list-products": {
|
|
596
|
+
parameters: {
|
|
597
|
+
query?: {
|
|
598
|
+
/** @description 1-based page number; the first page when omitted. */
|
|
599
|
+
page?: components["parameters"]["Page"];
|
|
600
|
+
/** @description How many per page, 100 at most. */
|
|
601
|
+
page_size?: components["parameters"]["PageSize"];
|
|
602
|
+
};
|
|
603
|
+
header?: {
|
|
604
|
+
/**
|
|
605
|
+
* @description The `ETag` from an earlier reply. When the catalogue has not changed since, the
|
|
606
|
+
* answer is `304` with no body.
|
|
607
|
+
*
|
|
608
|
+
* Send it on every catalogue read. An unchanged catalogue is answered without a body.
|
|
609
|
+
*/
|
|
610
|
+
"If-None-Match"?: components["parameters"]["IfNoneMatch"];
|
|
611
|
+
};
|
|
612
|
+
path?: never;
|
|
613
|
+
cookie?: never;
|
|
614
|
+
};
|
|
615
|
+
requestBody?: never;
|
|
616
|
+
responses: {
|
|
617
|
+
/** @description OK */
|
|
618
|
+
200: {
|
|
619
|
+
headers: {
|
|
620
|
+
/**
|
|
621
|
+
* @description Changes whenever the catalogue changes. Send it back as `If-None-Match`
|
|
622
|
+
* to be told `304` instead of receiving the same listing again.
|
|
623
|
+
*/
|
|
624
|
+
ETag?: string;
|
|
625
|
+
[name: string]: unknown;
|
|
626
|
+
};
|
|
627
|
+
content: {
|
|
628
|
+
"application/json": components["schemas"]["ProductList"];
|
|
629
|
+
};
|
|
630
|
+
};
|
|
631
|
+
304: components["responses"]["NotModified"];
|
|
632
|
+
default: components["responses"]["Error"];
|
|
633
|
+
};
|
|
634
|
+
};
|
|
635
|
+
"get-product": {
|
|
636
|
+
parameters: {
|
|
637
|
+
query?: never;
|
|
638
|
+
header?: {
|
|
639
|
+
/**
|
|
640
|
+
* @description The `ETag` from an earlier reply. When the catalogue has not changed since, the
|
|
641
|
+
* answer is `304` with no body.
|
|
642
|
+
*
|
|
643
|
+
* Send it on every catalogue read. An unchanged catalogue is answered without a body.
|
|
644
|
+
*/
|
|
645
|
+
"If-None-Match"?: components["parameters"]["IfNoneMatch"];
|
|
646
|
+
};
|
|
647
|
+
path: {
|
|
648
|
+
productId: components["schemas"]["ProductID"];
|
|
649
|
+
};
|
|
650
|
+
cookie?: never;
|
|
651
|
+
};
|
|
652
|
+
requestBody?: never;
|
|
653
|
+
responses: {
|
|
654
|
+
/** @description OK */
|
|
655
|
+
200: {
|
|
656
|
+
headers: {
|
|
657
|
+
/** @description Changes whenever this catalog representation changes. */
|
|
658
|
+
ETag?: string;
|
|
659
|
+
[name: string]: unknown;
|
|
660
|
+
};
|
|
661
|
+
content: {
|
|
662
|
+
"application/json": components["schemas"]["Product"];
|
|
663
|
+
};
|
|
664
|
+
};
|
|
665
|
+
/** @description Not Modified */
|
|
666
|
+
304: {
|
|
667
|
+
headers: {
|
|
668
|
+
[name: string]: unknown;
|
|
669
|
+
};
|
|
670
|
+
content?: never;
|
|
671
|
+
};
|
|
672
|
+
default: components["responses"]["Error"];
|
|
673
|
+
};
|
|
674
|
+
};
|
|
675
|
+
"get-plan": {
|
|
676
|
+
parameters: {
|
|
677
|
+
query?: never;
|
|
678
|
+
header?: {
|
|
679
|
+
/**
|
|
680
|
+
* @description The `ETag` from an earlier reply. When the catalogue has not changed since, the
|
|
681
|
+
* answer is `304` with no body.
|
|
682
|
+
*
|
|
683
|
+
* Send it on every catalogue read. An unchanged catalogue is answered without a body.
|
|
684
|
+
*/
|
|
685
|
+
"If-None-Match"?: components["parameters"]["IfNoneMatch"];
|
|
686
|
+
};
|
|
687
|
+
path: {
|
|
688
|
+
planId: string;
|
|
689
|
+
};
|
|
690
|
+
cookie?: never;
|
|
691
|
+
};
|
|
692
|
+
requestBody?: never;
|
|
693
|
+
responses: {
|
|
694
|
+
/** @description OK */
|
|
695
|
+
200: {
|
|
696
|
+
headers: {
|
|
697
|
+
/** @description Changes whenever this catalog representation changes. */
|
|
698
|
+
ETag?: string;
|
|
699
|
+
[name: string]: unknown;
|
|
700
|
+
};
|
|
701
|
+
content: {
|
|
702
|
+
"application/json": components["schemas"]["Plan"];
|
|
703
|
+
};
|
|
704
|
+
};
|
|
705
|
+
/** @description Not Modified */
|
|
706
|
+
304: {
|
|
707
|
+
headers: {
|
|
708
|
+
[name: string]: unknown;
|
|
709
|
+
};
|
|
710
|
+
content?: never;
|
|
711
|
+
};
|
|
712
|
+
default: components["responses"]["Error"];
|
|
713
|
+
};
|
|
714
|
+
};
|
|
715
|
+
"get-price": {
|
|
716
|
+
parameters: {
|
|
717
|
+
query?: never;
|
|
718
|
+
header?: {
|
|
719
|
+
/**
|
|
720
|
+
* @description The `ETag` from an earlier reply. When the catalogue has not changed since, the
|
|
721
|
+
* answer is `304` with no body.
|
|
722
|
+
*
|
|
723
|
+
* Send it on every catalogue read. An unchanged catalogue is answered without a body.
|
|
724
|
+
*/
|
|
725
|
+
"If-None-Match"?: components["parameters"]["IfNoneMatch"];
|
|
726
|
+
};
|
|
727
|
+
path: {
|
|
728
|
+
priceId: string;
|
|
729
|
+
};
|
|
730
|
+
cookie?: never;
|
|
731
|
+
};
|
|
732
|
+
requestBody?: never;
|
|
733
|
+
responses: {
|
|
734
|
+
/** @description OK */
|
|
735
|
+
200: {
|
|
736
|
+
headers: {
|
|
737
|
+
/** @description Changes whenever this catalog listing changes. */
|
|
738
|
+
ETag?: string;
|
|
739
|
+
[name: string]: unknown;
|
|
740
|
+
};
|
|
741
|
+
content: {
|
|
742
|
+
"application/json": components["schemas"]["Price"];
|
|
743
|
+
};
|
|
744
|
+
};
|
|
745
|
+
/** @description Not Modified */
|
|
746
|
+
304: {
|
|
747
|
+
headers: {
|
|
748
|
+
[name: string]: unknown;
|
|
749
|
+
};
|
|
750
|
+
content?: never;
|
|
751
|
+
};
|
|
752
|
+
default: components["responses"]["Error"];
|
|
753
|
+
};
|
|
754
|
+
};
|
|
755
|
+
"list-plans": {
|
|
756
|
+
parameters: {
|
|
757
|
+
query: {
|
|
758
|
+
product_id: components["schemas"]["ProductID"];
|
|
759
|
+
/** @description 1-based page number; the first page when omitted. */
|
|
760
|
+
page?: components["parameters"]["Page"];
|
|
761
|
+
/** @description How many per page, 100 at most. */
|
|
762
|
+
page_size?: components["parameters"]["PageSize"];
|
|
763
|
+
};
|
|
764
|
+
header?: {
|
|
765
|
+
/**
|
|
766
|
+
* @description The `ETag` from an earlier reply. When the catalogue has not changed since, the
|
|
767
|
+
* answer is `304` with no body.
|
|
768
|
+
*
|
|
769
|
+
* Send it on every catalogue read. An unchanged catalogue is answered without a body.
|
|
770
|
+
*/
|
|
771
|
+
"If-None-Match"?: components["parameters"]["IfNoneMatch"];
|
|
772
|
+
};
|
|
773
|
+
path?: never;
|
|
774
|
+
cookie?: never;
|
|
775
|
+
};
|
|
776
|
+
requestBody?: never;
|
|
777
|
+
responses: {
|
|
778
|
+
/** @description OK */
|
|
779
|
+
200: {
|
|
780
|
+
headers: {
|
|
781
|
+
/**
|
|
782
|
+
* @description Changes whenever the catalogue changes. Send it back as `If-None-Match`
|
|
783
|
+
* to be told `304` instead of receiving the same listing again.
|
|
784
|
+
*/
|
|
785
|
+
ETag?: string;
|
|
786
|
+
[name: string]: unknown;
|
|
787
|
+
};
|
|
788
|
+
content: {
|
|
789
|
+
"application/json": components["schemas"]["PlanList"];
|
|
790
|
+
};
|
|
791
|
+
};
|
|
792
|
+
304: components["responses"]["NotModified"];
|
|
793
|
+
default: components["responses"]["Error"];
|
|
794
|
+
};
|
|
795
|
+
};
|
|
796
|
+
"list-prices-by-plan": {
|
|
797
|
+
parameters: {
|
|
798
|
+
query?: {
|
|
799
|
+
/** @description 1-based page number; the first page when omitted. */
|
|
800
|
+
page?: components["parameters"]["Page"];
|
|
801
|
+
/** @description How many per page, 100 at most. */
|
|
802
|
+
page_size?: components["parameters"]["PageSize"];
|
|
803
|
+
currency?: string;
|
|
804
|
+
};
|
|
805
|
+
header?: {
|
|
806
|
+
/**
|
|
807
|
+
* @description The `ETag` from an earlier reply. When the catalogue has not changed since, the
|
|
808
|
+
* answer is `304` with no body.
|
|
809
|
+
*
|
|
810
|
+
* Send it on every catalogue read. An unchanged catalogue is answered without a body.
|
|
811
|
+
*/
|
|
812
|
+
"If-None-Match"?: components["parameters"]["IfNoneMatch"];
|
|
813
|
+
};
|
|
814
|
+
path: {
|
|
815
|
+
planId: components["parameters"]["PlanId"];
|
|
816
|
+
};
|
|
817
|
+
cookie?: never;
|
|
818
|
+
};
|
|
819
|
+
requestBody?: never;
|
|
820
|
+
responses: {
|
|
821
|
+
/** @description OK */
|
|
822
|
+
200: {
|
|
823
|
+
headers: {
|
|
824
|
+
/**
|
|
825
|
+
* @description Changes whenever the catalogue changes. Send it back as `If-None-Match`
|
|
826
|
+
* to be told `304` instead of receiving the same listing again.
|
|
827
|
+
*/
|
|
828
|
+
ETag?: string;
|
|
829
|
+
[name: string]: unknown;
|
|
830
|
+
};
|
|
831
|
+
content: {
|
|
832
|
+
"application/json": components["schemas"]["PriceList"];
|
|
833
|
+
};
|
|
834
|
+
};
|
|
835
|
+
304: components["responses"]["NotModified"];
|
|
836
|
+
default: components["responses"]["Error"];
|
|
837
|
+
};
|
|
838
|
+
};
|
|
839
|
+
"list-rates": {
|
|
840
|
+
parameters: {
|
|
841
|
+
query?: {
|
|
842
|
+
/** @description 1-based page number; the first page when omitted. */
|
|
843
|
+
page?: components["parameters"]["Page"];
|
|
844
|
+
/** @description How many per page, 100 at most. */
|
|
845
|
+
page_size?: components["parameters"]["PageSize"];
|
|
846
|
+
/** @description Filter by the meter UUID. */
|
|
847
|
+
meter_id?: string;
|
|
848
|
+
/** @description Return the rates in effect at this moment. Defaults to now. */
|
|
849
|
+
at?: string;
|
|
850
|
+
};
|
|
851
|
+
header?: {
|
|
852
|
+
/**
|
|
853
|
+
* @description The `ETag` from an earlier reply. When the catalogue has not changed since, the
|
|
854
|
+
* answer is `304` with no body.
|
|
855
|
+
*
|
|
856
|
+
* Send it on every catalogue read. An unchanged catalogue is answered without a body.
|
|
857
|
+
*/
|
|
858
|
+
"If-None-Match"?: components["parameters"]["IfNoneMatch"];
|
|
859
|
+
};
|
|
860
|
+
path: {
|
|
861
|
+
rateCardId: components["parameters"]["RateCardId"];
|
|
862
|
+
};
|
|
863
|
+
cookie?: never;
|
|
864
|
+
};
|
|
865
|
+
requestBody?: never;
|
|
866
|
+
responses: {
|
|
867
|
+
/** @description OK */
|
|
868
|
+
200: {
|
|
869
|
+
headers: {
|
|
870
|
+
/**
|
|
871
|
+
* @description Changes whenever the catalogue changes. Send it back as `If-None-Match`
|
|
872
|
+
* to be told `304` instead of receiving the same listing again.
|
|
873
|
+
*/
|
|
874
|
+
ETag?: string;
|
|
875
|
+
[name: string]: unknown;
|
|
876
|
+
};
|
|
877
|
+
content: {
|
|
878
|
+
"application/json": components["schemas"]["RateList"];
|
|
879
|
+
};
|
|
880
|
+
};
|
|
881
|
+
304: components["responses"]["NotModified"];
|
|
882
|
+
default: components["responses"]["Error"];
|
|
883
|
+
};
|
|
884
|
+
};
|
|
885
|
+
"create-estimate": {
|
|
886
|
+
parameters: {
|
|
887
|
+
query?: never;
|
|
888
|
+
header?: never;
|
|
889
|
+
path?: never;
|
|
890
|
+
cookie?: never;
|
|
891
|
+
};
|
|
892
|
+
requestBody: {
|
|
893
|
+
content: {
|
|
894
|
+
"application/json": components["schemas"]["EstimateRequest"];
|
|
895
|
+
};
|
|
896
|
+
};
|
|
897
|
+
responses: {
|
|
898
|
+
/** @description OK */
|
|
899
|
+
200: {
|
|
900
|
+
headers: {
|
|
901
|
+
[name: string]: unknown;
|
|
902
|
+
};
|
|
903
|
+
content: {
|
|
904
|
+
"application/json": components["schemas"]["Quote"];
|
|
905
|
+
};
|
|
906
|
+
};
|
|
907
|
+
default: components["responses"]["Error"];
|
|
908
|
+
};
|
|
909
|
+
};
|
|
910
|
+
}
|