@flexprice/sdk 2.1.24 → 2.1.26
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/docs/sdk/models/billing-period-behaviour.md +17 -0
- package/docs/sdk/models/billing-period-config.md +18 -0
- package/docs/sdk/models/create-entitlement-request.md +22 -21
- package/docs/sdk/models/create-entity-integration-mapping-request.md +1 -1
- package/docs/sdk/models/credit-grant-application-response.md +1 -1
- package/docs/sdk/models/entitlement-grant-allocation-behavior.md +17 -0
- package/docs/sdk/models/entitlement-grant-duration-unit.md +1 -1
- package/docs/sdk/models/entitlement-response.md +34 -33
- package/docs/sdk/models/entity-change-behaviour.md +2 -2
- package/docs/sdk/models/entity-change-policy.md +4 -4
- package/docs/sdk/models/entity-change-result.md +6 -6
- package/docs/sdk/models/integration-entity-type.md +2 -2
- package/docs/sdk/models/invoice-sync-settings.md +6 -3
- package/docs/sdk/models/link-integration-mapping-request.md +1 -1
- package/docs/sdk/models/list-usage-records-response.md +16 -0
- package/docs/sdk/models/metadata-custom-field-source.md +17 -0
- package/docs/sdk/models/metadata-custom-field.md +17 -0
- package/docs/sdk/models/on-pending-schedule-policy.md +15 -0
- package/docs/sdk/models/plan-price-sync-status-response.md +17 -0
- package/docs/sdk/models/plan-response.md +1 -0
- package/docs/sdk/models/price-feature-response.md +15 -0
- package/docs/sdk/models/price-response.md +1 -0
- package/docs/sdk/models/service-period-custom-fields.md +16 -0
- package/docs/sdk/models/subscription-change-billing-period-result.md +18 -0
- package/docs/sdk/models/subscription-change-conflict-policies.md +15 -0
- package/docs/sdk/models/subscription-change-entity-type.md +17 -0
- package/docs/sdk/models/subscription-change-v2-request.md +11 -7
- package/docs/sdk/models/subscription-change-v2-response.md +16 -11
- package/docs/sdk/models/update-entitlement-request.md +1 -0
- package/docs/sdk/models/usage-record-filter-order.md +15 -0
- package/docs/sdk/models/usage-record-filter.md +31 -0
- package/docs/sdk/models/usage-record-response.md +33 -0
- package/docs/sdk/models/usage-record-sync-entry.md +20 -0
- package/docs/sdks/costs/README.md +0 -72
- package/docs/sdks/integrations/README.md +4 -4
- package/docs/sdks/prices/README.md +1 -1
- package/docs/sdks/subscriptions/README.md +8 -0
- package/docs/sdks/usagerecords/README.md +78 -0
- package/esm/funcs/prices-get-price-by-lookup-key.js +1 -1
- package/esm/funcs/prices-get-price-by-lookup-key.js.map +1 -1
- package/esm/funcs/subscriptions-execute-subscription-plan-change-v2.d.ts +8 -0
- package/esm/funcs/subscriptions-execute-subscription-plan-change-v2.d.ts.map +1 -1
- package/esm/funcs/subscriptions-execute-subscription-plan-change-v2.js +8 -0
- package/esm/funcs/subscriptions-execute-subscription-plan-change-v2.js.map +1 -1
- package/esm/funcs/usage-records-post-usage-records-search.d.ts +17 -0
- package/esm/funcs/usage-records-post-usage-records-search.d.ts.map +1 -0
- package/esm/funcs/{costs-get-detailed-cost-analytics-v2.js → usage-records-post-usage-records-search.js} +8 -8
- package/esm/funcs/usage-records-post-usage-records-search.js.map +1 -0
- package/esm/lib/config.d.ts +3 -3
- package/esm/lib/config.js +3 -3
- package/esm/sdk/costs.d.ts +0 -7
- package/esm/sdk/costs.d.ts.map +1 -1
- package/esm/sdk/costs.js +0 -10
- package/esm/sdk/costs.js.map +1 -1
- package/esm/sdk/models/billing-period-behaviour.d.ts +13 -0
- package/esm/sdk/models/billing-period-behaviour.d.ts.map +1 -0
- package/esm/sdk/models/billing-period-behaviour.js +14 -0
- package/esm/sdk/models/billing-period-behaviour.js.map +1 -0
- package/esm/sdk/models/billing-period-config.d.ts +20 -0
- package/esm/sdk/models/billing-period-config.d.ts.map +1 -0
- package/esm/sdk/models/billing-period-config.js +25 -0
- package/esm/sdk/models/billing-period-config.js.map +1 -0
- package/esm/sdk/models/create-entitlement-request.d.ts +3 -0
- package/esm/sdk/models/create-entitlement-request.d.ts.map +1 -1
- package/esm/sdk/models/create-entitlement-request.js +3 -0
- package/esm/sdk/models/create-entitlement-request.js.map +1 -1
- package/esm/sdk/models/credit-grant-application-response.d.ts +1 -1
- package/esm/sdk/models/credit-grant-application-response.js +1 -1
- package/esm/sdk/models/entitlement-grant-allocation-behavior.d.ts +12 -0
- package/esm/sdk/models/entitlement-grant-allocation-behavior.d.ts.map +1 -0
- package/esm/sdk/models/entitlement-grant-allocation-behavior.js +13 -0
- package/esm/sdk/models/entitlement-grant-allocation-behavior.js.map +1 -0
- package/esm/sdk/models/entitlement-grant-duration-unit.d.ts +1 -0
- package/esm/sdk/models/entitlement-grant-duration-unit.d.ts.map +1 -1
- package/esm/sdk/models/entitlement-grant-duration-unit.js +1 -0
- package/esm/sdk/models/entitlement-grant-duration-unit.js.map +1 -1
- package/esm/sdk/models/entitlement-response.d.ts +3 -1
- package/esm/sdk/models/entitlement-response.d.ts.map +1 -1
- package/esm/sdk/models/entitlement-response.js +4 -1
- package/esm/sdk/models/entitlement-response.js.map +1 -1
- package/esm/sdk/models/entity-change-behaviour.d.ts +1 -0
- package/esm/sdk/models/entity-change-behaviour.d.ts.map +1 -1
- package/esm/sdk/models/entity-change-behaviour.js +1 -0
- package/esm/sdk/models/entity-change-behaviour.js.map +1 -1
- package/esm/sdk/models/entity-change-policy.d.ts +3 -0
- package/esm/sdk/models/entity-change-policy.d.ts.map +1 -1
- package/esm/sdk/models/entity-change-policy.js.map +1 -1
- package/esm/sdk/models/entity-change-result.d.ts +2 -2
- package/esm/sdk/models/entity-change-result.d.ts.map +1 -1
- package/esm/sdk/models/entity-change-result.js +2 -2
- package/esm/sdk/models/entity-change-result.js.map +1 -1
- package/esm/sdk/models/index.d.ts +16 -0
- package/esm/sdk/models/index.d.ts.map +1 -1
- package/esm/sdk/models/index.js +16 -0
- package/esm/sdk/models/index.js.map +1 -1
- package/esm/sdk/models/integration-entity-type.d.ts +1 -0
- package/esm/sdk/models/integration-entity-type.d.ts.map +1 -1
- package/esm/sdk/models/integration-entity-type.js +1 -0
- package/esm/sdk/models/integration-entity-type.js.map +1 -1
- package/esm/sdk/models/invoice-sync-settings.d.ts +19 -0
- package/esm/sdk/models/invoice-sync-settings.d.ts.map +1 -1
- package/esm/sdk/models/invoice-sync-settings.js +8 -0
- package/esm/sdk/models/invoice-sync-settings.js.map +1 -1
- package/esm/sdk/models/list-usage-records-response.d.ts +13 -0
- package/esm/sdk/models/list-usage-records-response.d.ts.map +1 -0
- package/esm/sdk/models/list-usage-records-response.js +17 -0
- package/esm/sdk/models/list-usage-records-response.js.map +1 -0
- package/esm/sdk/models/metadata-custom-field-source.d.ts +10 -0
- package/esm/sdk/models/metadata-custom-field-source.d.ts.map +1 -0
- package/esm/sdk/models/metadata-custom-field-source.js +11 -0
- package/esm/sdk/models/metadata-custom-field-source.js.map +1 -0
- package/esm/sdk/models/metadata-custom-field.d.ts +13 -0
- package/esm/sdk/models/metadata-custom-field.d.ts.map +1 -0
- package/esm/sdk/models/metadata-custom-field.js +22 -0
- package/esm/sdk/models/metadata-custom-field.js.map +1 -0
- package/esm/sdk/models/on-pending-schedule-policy.d.ts +10 -0
- package/esm/sdk/models/on-pending-schedule-policy.d.ts.map +1 -0
- package/esm/sdk/models/on-pending-schedule-policy.js +11 -0
- package/esm/sdk/models/on-pending-schedule-policy.js.map +1 -0
- package/esm/sdk/models/plan-price-sync-status-response.d.ts +12 -0
- package/esm/sdk/models/plan-price-sync-status-response.d.ts.map +1 -0
- package/esm/sdk/models/plan-price-sync-status-response.js +22 -0
- package/esm/sdk/models/plan-price-sync-status-response.js.map +1 -0
- package/esm/sdk/models/plan-response.d.ts +2 -0
- package/esm/sdk/models/plan-response.d.ts.map +1 -1
- package/esm/sdk/models/plan-response.js +3 -0
- package/esm/sdk/models/plan-response.js.map +1 -1
- package/esm/sdk/models/price-feature-response.d.ts +11 -0
- package/esm/sdk/models/price-feature-response.d.ts.map +1 -0
- package/esm/sdk/models/price-feature-response.js +20 -0
- package/esm/sdk/models/price-feature-response.js.map +1 -0
- package/esm/sdk/models/price-response.d.ts +2 -0
- package/esm/sdk/models/price-response.d.ts.map +1 -1
- package/esm/sdk/models/price-response.js +2 -0
- package/esm/sdk/models/price-response.js.map +1 -1
- package/esm/sdk/models/service-period-custom-fields.d.ts +11 -0
- package/esm/sdk/models/service-period-custom-fields.d.ts.map +1 -0
- package/esm/sdk/models/service-period-custom-fields.js +21 -0
- package/esm/sdk/models/service-period-custom-fields.js.map +1 -0
- package/esm/sdk/models/subscription-change-billing-period-result.d.ts +14 -0
- package/esm/sdk/models/subscription-change-billing-period-result.d.ts.map +1 -0
- package/esm/sdk/models/subscription-change-billing-period-result.js +25 -0
- package/esm/sdk/models/subscription-change-billing-period-result.js.map +1 -0
- package/esm/sdk/models/subscription-change-conflict-policies.d.ts +13 -0
- package/esm/sdk/models/subscription-change-conflict-policies.d.ts.map +1 -0
- package/esm/sdk/models/subscription-change-conflict-policies.js +18 -0
- package/esm/sdk/models/subscription-change-conflict-policies.js.map +1 -0
- package/esm/sdk/models/subscription-change-entity-type.d.ts +13 -0
- package/esm/sdk/models/subscription-change-entity-type.d.ts.map +1 -0
- package/esm/sdk/models/subscription-change-entity-type.js +14 -0
- package/esm/sdk/models/subscription-change-entity-type.js.map +1 -0
- package/esm/sdk/models/subscription-change-v2-request.d.ts +12 -0
- package/esm/sdk/models/subscription-change-v2-request.d.ts.map +1 -1
- package/esm/sdk/models/subscription-change-v2-request.js +12 -0
- package/esm/sdk/models/subscription-change-v2-request.js.map +1 -1
- package/esm/sdk/models/subscription-change-v2-response.d.ts +18 -0
- package/esm/sdk/models/subscription-change-v2-response.d.ts.map +1 -1
- package/esm/sdk/models/subscription-change-v2-response.js +11 -0
- package/esm/sdk/models/subscription-change-v2-response.js.map +1 -1
- package/esm/sdk/models/update-entitlement-request.d.ts +3 -0
- package/esm/sdk/models/update-entitlement-request.d.ts.map +1 -1
- package/esm/sdk/models/update-entitlement-request.js +3 -0
- package/esm/sdk/models/update-entitlement-request.js.map +1 -1
- package/esm/sdk/models/usage-record-filter.d.ts +67 -0
- package/esm/sdk/models/usage-record-filter.d.ts.map +1 -0
- package/esm/sdk/models/usage-record-filter.js +49 -0
- package/esm/sdk/models/usage-record-filter.js.map +1 -0
- package/esm/sdk/models/usage-record-response.d.ts +32 -0
- package/esm/sdk/models/usage-record-response.d.ts.map +1 -0
- package/esm/sdk/models/usage-record-response.js +50 -0
- package/esm/sdk/models/usage-record-response.js.map +1 -0
- package/esm/sdk/models/usage-record-sync-entry.d.ts +32 -0
- package/esm/sdk/models/usage-record-sync-entry.d.ts.map +1 -0
- package/esm/sdk/models/usage-record-sync-entry.js +28 -0
- package/esm/sdk/models/usage-record-sync-entry.js.map +1 -0
- package/esm/sdk/sdk.d.ts +3 -0
- package/esm/sdk/sdk.d.ts.map +1 -1
- package/esm/sdk/sdk.js +5 -0
- package/esm/sdk/sdk.js.map +1 -1
- package/esm/sdk/subscriptions.d.ts +8 -0
- package/esm/sdk/subscriptions.d.ts.map +1 -1
- package/esm/sdk/subscriptions.js +8 -0
- package/esm/sdk/subscriptions.js.map +1 -1
- package/esm/sdk/usage-records.d.ts +12 -0
- package/esm/sdk/usage-records.d.ts.map +1 -0
- package/esm/sdk/usage-records.js +18 -0
- package/esm/sdk/usage-records.js.map +1 -0
- package/jsr.json +1 -1
- package/package.json +1 -1
- package/src/funcs/prices-get-price-by-lookup-key.ts +1 -1
- package/src/funcs/subscriptions-execute-subscription-plan-change-v2.ts +8 -0
- package/src/funcs/{costs-get-detailed-cost-analytics-v2.ts → usage-records-post-usage-records-search.ts} +12 -12
- package/src/lib/config.ts +3 -3
- package/src/sdk/costs.ts +0 -18
- package/src/sdk/models/billing-period-behaviour.ts +25 -0
- package/src/sdk/models/billing-period-config.ts +57 -0
- package/src/sdk/models/create-entitlement-request.ts +10 -0
- package/src/sdk/models/credit-grant-application-response.ts +2 -2
- package/src/sdk/models/entitlement-grant-allocation-behavior.ts +26 -0
- package/src/sdk/models/entitlement-grant-duration-unit.ts +1 -0
- package/src/sdk/models/entitlement-response.ts +11 -2
- package/src/sdk/models/entity-change-behaviour.ts +1 -0
- package/src/sdk/models/entity-change-policy.ts +3 -0
- package/src/sdk/models/entity-change-result.ts +5 -5
- package/src/sdk/models/index.ts +16 -0
- package/src/sdk/models/integration-entity-type.ts +1 -0
- package/src/sdk/models/invoice-sync-settings.ts +35 -0
- package/src/sdk/models/list-usage-records-response.ts +41 -0
- package/src/sdk/models/metadata-custom-field-source.ts +21 -0
- package/src/sdk/models/metadata-custom-field.ts +47 -0
- package/src/sdk/models/on-pending-schedule-policy.ts +19 -0
- package/src/sdk/models/plan-price-sync-status-response.ts +44 -0
- package/src/sdk/models/plan-response.ts +9 -0
- package/src/sdk/models/price-feature-response.ts +43 -0
- package/src/sdk/models/price-response.ts +6 -0
- package/src/sdk/models/service-period-custom-fields.ts +42 -0
- package/src/sdk/models/subscription-change-billing-period-result.ts +52 -0
- package/src/sdk/models/subscription-change-conflict-policies.ts +44 -0
- package/src/sdk/models/subscription-change-entity-type.ts +24 -0
- package/src/sdk/models/subscription-change-v2-request.ts +35 -0
- package/src/sdk/models/subscription-change-v2-response.ts +33 -0
- package/src/sdk/models/update-entitlement-request.ts +10 -0
- package/src/sdk/models/usage-record-filter.ts +130 -0
- package/src/sdk/models/usage-record-response.ts +93 -0
- package/src/sdk/models/usage-record-sync-entry.ts +70 -0
- package/src/sdk/sdk.ts +6 -0
- package/src/sdk/subscriptions.ts +8 -0
- package/src/sdk/usage-records.ts +27 -0
- package/esm/funcs/costs-get-detailed-cost-analytics-v2.d.ts +0 -17
- package/esm/funcs/costs-get-detailed-cost-analytics-v2.d.ts.map +0 -1
- package/esm/funcs/costs-get-detailed-cost-analytics-v2.js.map +0 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import * as z from "zod/v4-mini";
|
|
6
|
+
import { remap as remap$ } from "../../lib/primitives.js";
|
|
7
|
+
import { ClosedEnum } from "../../types/enums.js";
|
|
8
|
+
import {
|
|
9
|
+
FilterCondition,
|
|
10
|
+
FilterCondition$Outbound,
|
|
11
|
+
FilterCondition$outboundSchema,
|
|
12
|
+
} from "./filter-condition.js";
|
|
13
|
+
import {
|
|
14
|
+
SortCondition,
|
|
15
|
+
SortCondition$Outbound,
|
|
16
|
+
SortCondition$outboundSchema,
|
|
17
|
+
} from "./sort-condition.js";
|
|
18
|
+
import { Status, Status$outboundSchema } from "./status.js";
|
|
19
|
+
|
|
20
|
+
export const UsageRecordFilterOrder = {
|
|
21
|
+
Asc: "asc",
|
|
22
|
+
Desc: "desc",
|
|
23
|
+
} as const;
|
|
24
|
+
export type UsageRecordFilterOrder = ClosedEnum<typeof UsageRecordFilterOrder>;
|
|
25
|
+
|
|
26
|
+
export type UsageRecordFilter = {
|
|
27
|
+
currency?: string | undefined;
|
|
28
|
+
customerExternalId?: string | undefined;
|
|
29
|
+
customerId?: string | undefined;
|
|
30
|
+
endTime?: Date | undefined;
|
|
31
|
+
expand?: string | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Generic predicate and ordering escape hatch, for comparisons that have no dedicated field
|
|
34
|
+
*
|
|
35
|
+
* @remarks
|
|
36
|
+
* below — a range such as period_end at or after a cutoff goes here.
|
|
37
|
+
*/
|
|
38
|
+
filters?: Array<FilterCondition> | undefined;
|
|
39
|
+
limit?: number | undefined;
|
|
40
|
+
offset?: number | undefined;
|
|
41
|
+
order?: UsageRecordFilterOrder | undefined;
|
|
42
|
+
periodEnd?: Date | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Exact-match on the window boundaries. Together with SubscriptionID these identify a single row:
|
|
45
|
+
*
|
|
46
|
+
* @remarks
|
|
47
|
+
* they are the columns the table's unique index is built on.
|
|
48
|
+
*/
|
|
49
|
+
periodStart?: Date | undefined;
|
|
50
|
+
planId?: string | undefined;
|
|
51
|
+
sort?: Array<SortCondition> | undefined;
|
|
52
|
+
startTime?: Date | undefined;
|
|
53
|
+
status?: Status | undefined;
|
|
54
|
+
subscriptionId?: string | undefined;
|
|
55
|
+
synced?: boolean | undefined;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/** @internal */
|
|
59
|
+
export const UsageRecordFilterOrder$outboundSchema: z.ZodMiniEnum<
|
|
60
|
+
typeof UsageRecordFilterOrder
|
|
61
|
+
> = z.enum(UsageRecordFilterOrder);
|
|
62
|
+
|
|
63
|
+
/** @internal */
|
|
64
|
+
export type UsageRecordFilter$Outbound = {
|
|
65
|
+
currency?: string | undefined;
|
|
66
|
+
customer_external_id?: string | undefined;
|
|
67
|
+
customer_id?: string | undefined;
|
|
68
|
+
end_time?: string | undefined;
|
|
69
|
+
expand?: string | undefined;
|
|
70
|
+
filters?: Array<FilterCondition$Outbound> | undefined;
|
|
71
|
+
limit?: number | undefined;
|
|
72
|
+
offset?: number | undefined;
|
|
73
|
+
order?: string | undefined;
|
|
74
|
+
period_end?: string | undefined;
|
|
75
|
+
period_start?: string | undefined;
|
|
76
|
+
plan_id?: string | undefined;
|
|
77
|
+
sort?: Array<SortCondition$Outbound> | undefined;
|
|
78
|
+
start_time?: string | undefined;
|
|
79
|
+
status?: string | undefined;
|
|
80
|
+
subscription_id?: string | undefined;
|
|
81
|
+
synced?: boolean | undefined;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/** @internal */
|
|
85
|
+
export const UsageRecordFilter$outboundSchema: z.ZodMiniType<
|
|
86
|
+
UsageRecordFilter$Outbound,
|
|
87
|
+
UsageRecordFilter
|
|
88
|
+
> = z.pipe(
|
|
89
|
+
z.object({
|
|
90
|
+
currency: z.optional(z.string()),
|
|
91
|
+
customerExternalId: z.optional(z.string()),
|
|
92
|
+
customerId: z.optional(z.string()),
|
|
93
|
+
endTime: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))),
|
|
94
|
+
expand: z.optional(z.string()),
|
|
95
|
+
filters: z.optional(z.array(FilterCondition$outboundSchema)),
|
|
96
|
+
limit: z.optional(z.int()),
|
|
97
|
+
offset: z.optional(z.int()),
|
|
98
|
+
order: z.optional(UsageRecordFilterOrder$outboundSchema),
|
|
99
|
+
periodEnd: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))),
|
|
100
|
+
periodStart: z.optional(
|
|
101
|
+
z.pipe(z.date(), z.transform(v => v.toISOString())),
|
|
102
|
+
),
|
|
103
|
+
planId: z.optional(z.string()),
|
|
104
|
+
sort: z.optional(z.array(SortCondition$outboundSchema)),
|
|
105
|
+
startTime: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))),
|
|
106
|
+
status: z.optional(Status$outboundSchema),
|
|
107
|
+
subscriptionId: z.optional(z.string()),
|
|
108
|
+
synced: z.optional(z.boolean()),
|
|
109
|
+
}),
|
|
110
|
+
z.transform((v) => {
|
|
111
|
+
return remap$(v, {
|
|
112
|
+
customerExternalId: "customer_external_id",
|
|
113
|
+
customerId: "customer_id",
|
|
114
|
+
endTime: "end_time",
|
|
115
|
+
periodEnd: "period_end",
|
|
116
|
+
periodStart: "period_start",
|
|
117
|
+
planId: "plan_id",
|
|
118
|
+
startTime: "start_time",
|
|
119
|
+
subscriptionId: "subscription_id",
|
|
120
|
+
});
|
|
121
|
+
}),
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
export function usageRecordFilterToJSON(
|
|
125
|
+
usageRecordFilter: UsageRecordFilter,
|
|
126
|
+
): string {
|
|
127
|
+
return JSON.stringify(
|
|
128
|
+
UsageRecordFilter$outboundSchema.parse(usageRecordFilter),
|
|
129
|
+
);
|
|
130
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import * as z from "zod/v4-mini";
|
|
6
|
+
import { remap as remap$ } from "../../lib/primitives.js";
|
|
7
|
+
import { safeParse } from "../../lib/schemas.js";
|
|
8
|
+
import { Result as SafeParseResult } from "../../types/fp.js";
|
|
9
|
+
import * as types from "../../types/primitives.js";
|
|
10
|
+
import { SDKValidationError } from "./sdk-validation-error.js";
|
|
11
|
+
import { Status, Status$inboundSchema } from "./status.js";
|
|
12
|
+
import {
|
|
13
|
+
UsageRecordSyncEntry,
|
|
14
|
+
UsageRecordSyncEntry$inboundSchema,
|
|
15
|
+
} from "./usage-record-sync-entry.js";
|
|
16
|
+
|
|
17
|
+
export type UsageRecordResponse = {
|
|
18
|
+
amount?: number | undefined;
|
|
19
|
+
createdAt?: Date | undefined;
|
|
20
|
+
createdBy?: string | undefined;
|
|
21
|
+
currency?: string | undefined;
|
|
22
|
+
customerExternalId?: string | undefined;
|
|
23
|
+
customerId?: string | undefined;
|
|
24
|
+
environmentId?: string | undefined;
|
|
25
|
+
id?: string | undefined;
|
|
26
|
+
periodEnd?: Date | undefined;
|
|
27
|
+
periodStart?: Date | undefined;
|
|
28
|
+
planId?: string | undefined;
|
|
29
|
+
quantity?: number | undefined;
|
|
30
|
+
status?: Status | undefined;
|
|
31
|
+
subscriptionId?: string | undefined;
|
|
32
|
+
synced?: boolean | undefined;
|
|
33
|
+
syncs?: { [k: string]: UsageRecordSyncEntry } | undefined;
|
|
34
|
+
tenantId?: string | undefined;
|
|
35
|
+
updatedAt?: Date | undefined;
|
|
36
|
+
updatedBy?: string | undefined;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/** @internal */
|
|
40
|
+
export const UsageRecordResponse$inboundSchema: z.ZodMiniType<
|
|
41
|
+
UsageRecordResponse,
|
|
42
|
+
unknown
|
|
43
|
+
> = z.pipe(
|
|
44
|
+
z.object({
|
|
45
|
+
amount: types.optional(types.number()),
|
|
46
|
+
created_at: types.optional(types.date()),
|
|
47
|
+
created_by: types.optional(types.string()),
|
|
48
|
+
currency: types.optional(types.string()),
|
|
49
|
+
customer_external_id: types.optional(types.string()),
|
|
50
|
+
customer_id: types.optional(types.string()),
|
|
51
|
+
environment_id: types.optional(types.string()),
|
|
52
|
+
id: types.optional(types.string()),
|
|
53
|
+
period_end: types.optional(types.date()),
|
|
54
|
+
period_start: types.optional(types.date()),
|
|
55
|
+
plan_id: types.optional(types.string()),
|
|
56
|
+
quantity: types.optional(types.number()),
|
|
57
|
+
status: types.optional(Status$inboundSchema),
|
|
58
|
+
subscription_id: types.optional(types.string()),
|
|
59
|
+
synced: types.optional(types.boolean()),
|
|
60
|
+
syncs: types.optional(
|
|
61
|
+
z.record(z.string(), UsageRecordSyncEntry$inboundSchema),
|
|
62
|
+
),
|
|
63
|
+
tenant_id: types.optional(types.string()),
|
|
64
|
+
updated_at: types.optional(types.date()),
|
|
65
|
+
updated_by: types.optional(types.string()),
|
|
66
|
+
}),
|
|
67
|
+
z.transform((v) => {
|
|
68
|
+
return remap$(v, {
|
|
69
|
+
"created_at": "createdAt",
|
|
70
|
+
"created_by": "createdBy",
|
|
71
|
+
"customer_external_id": "customerExternalId",
|
|
72
|
+
"customer_id": "customerId",
|
|
73
|
+
"environment_id": "environmentId",
|
|
74
|
+
"period_end": "periodEnd",
|
|
75
|
+
"period_start": "periodStart",
|
|
76
|
+
"plan_id": "planId",
|
|
77
|
+
"subscription_id": "subscriptionId",
|
|
78
|
+
"tenant_id": "tenantId",
|
|
79
|
+
"updated_at": "updatedAt",
|
|
80
|
+
"updated_by": "updatedBy",
|
|
81
|
+
});
|
|
82
|
+
}),
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
export function usageRecordResponseFromJSON(
|
|
86
|
+
jsonString: string,
|
|
87
|
+
): SafeParseResult<UsageRecordResponse, SDKValidationError> {
|
|
88
|
+
return safeParse(
|
|
89
|
+
jsonString,
|
|
90
|
+
(x) => UsageRecordResponse$inboundSchema.parse(JSON.parse(x)),
|
|
91
|
+
`Failed to parse 'UsageRecordResponse' from JSON`,
|
|
92
|
+
);
|
|
93
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import * as z from "zod/v4-mini";
|
|
6
|
+
import { remap as remap$ } from "../../lib/primitives.js";
|
|
7
|
+
import { safeParse } from "../../lib/schemas.js";
|
|
8
|
+
import { Result as SafeParseResult } from "../../types/fp.js";
|
|
9
|
+
import * as types from "../../types/primitives.js";
|
|
10
|
+
import { SDKValidationError } from "./sdk-validation-error.js";
|
|
11
|
+
|
|
12
|
+
export type UsageRecordSyncEntry = {
|
|
13
|
+
/**
|
|
14
|
+
* AgreementID is the subscription's identifier on this marketplace: license_arn on AWS,
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* usage_reporting_id on GCP, resource_id on Azure. It records which agreement the usage was
|
|
18
|
+
* billed against, which stays meaningful after the connection that reported it is replaced.
|
|
19
|
+
*/
|
|
20
|
+
agreementId?: string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* ConnectionID is the connection that reported this entry, kept for tracing which credentials
|
|
23
|
+
*
|
|
24
|
+
* @remarks
|
|
25
|
+
* were used. It is deliberately not part of the map key: a replaced connection must not make an
|
|
26
|
+
* already reported record look unreported.
|
|
27
|
+
*/
|
|
28
|
+
connectionId?: string | undefined;
|
|
29
|
+
reportingId?: string | undefined;
|
|
30
|
+
skipReason?: string | undefined;
|
|
31
|
+
skipped?: boolean | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* SyncedAt is when the marketplace accepted the record. Zero on a skip, since nothing was sent.
|
|
34
|
+
*/
|
|
35
|
+
syncedAt?: Date | undefined;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/** @internal */
|
|
39
|
+
export const UsageRecordSyncEntry$inboundSchema: z.ZodMiniType<
|
|
40
|
+
UsageRecordSyncEntry,
|
|
41
|
+
unknown
|
|
42
|
+
> = z.pipe(
|
|
43
|
+
z.object({
|
|
44
|
+
agreement_id: types.optional(types.string()),
|
|
45
|
+
connection_id: types.optional(types.string()),
|
|
46
|
+
reporting_id: types.optional(types.string()),
|
|
47
|
+
skip_reason: types.optional(types.string()),
|
|
48
|
+
skipped: types.optional(types.boolean()),
|
|
49
|
+
synced_at: types.optional(types.date()),
|
|
50
|
+
}),
|
|
51
|
+
z.transform((v) => {
|
|
52
|
+
return remap$(v, {
|
|
53
|
+
"agreement_id": "agreementId",
|
|
54
|
+
"connection_id": "connectionId",
|
|
55
|
+
"reporting_id": "reportingId",
|
|
56
|
+
"skip_reason": "skipReason",
|
|
57
|
+
"synced_at": "syncedAt",
|
|
58
|
+
});
|
|
59
|
+
}),
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
export function usageRecordSyncEntryFromJSON(
|
|
63
|
+
jsonString: string,
|
|
64
|
+
): SafeParseResult<UsageRecordSyncEntry, SDKValidationError> {
|
|
65
|
+
return safeParse(
|
|
66
|
+
jsonString,
|
|
67
|
+
(x) => UsageRecordSyncEntry$inboundSchema.parse(JSON.parse(x)),
|
|
68
|
+
`Failed to parse 'UsageRecordSyncEntry' from JSON`,
|
|
69
|
+
);
|
|
70
|
+
}
|
package/src/sdk/sdk.ts
CHANGED
|
@@ -33,6 +33,7 @@ import { Tasks } from "./tasks.js";
|
|
|
33
33
|
import { TaxAssociations } from "./tax-associations.js";
|
|
34
34
|
import { TaxRates } from "./tax-rates.js";
|
|
35
35
|
import { Tenants } from "./tenants.js";
|
|
36
|
+
import { UsageRecords } from "./usage-records.js";
|
|
36
37
|
import { Users } from "./users.js";
|
|
37
38
|
import { Wallets } from "./wallets.js";
|
|
38
39
|
import { WebhookEvents } from "./webhook-events.js";
|
|
@@ -194,6 +195,11 @@ export class Flexprice extends ClientSDK {
|
|
|
194
195
|
return (this._tenants ??= new Tenants(this._options));
|
|
195
196
|
}
|
|
196
197
|
|
|
198
|
+
private _usageRecords?: UsageRecords;
|
|
199
|
+
get usageRecords(): UsageRecords {
|
|
200
|
+
return (this._usageRecords ??= new UsageRecords(this._options));
|
|
201
|
+
}
|
|
202
|
+
|
|
197
203
|
private _users?: Users;
|
|
198
204
|
get users(): Users {
|
|
199
205
|
return (this._users ??= new Users(this._options));
|
package/src/sdk/subscriptions.ts
CHANGED
|
@@ -314,6 +314,14 @@ export class Subscriptions extends ClientSDK {
|
|
|
314
314
|
*
|
|
315
315
|
* @remarks
|
|
316
316
|
* Change a subscription's plan in place. Subscription id, billing anchor and period bounds are preserved; line items are sliced and settled in one transaction.
|
|
317
|
+
*
|
|
318
|
+
* change_at controls timing. Omitted or 'immediate' applies the change now. 'end_of_period' records a pending schedule that executes at the subscription's current period end: the response returns is_scheduled, schedule_id and scheduled_at instead of a completed change, and nothing is swapped or billed until the boundary.
|
|
319
|
+
*
|
|
320
|
+
* scheduled_at is resolved from the subscription's current period end at request time. If that period end is already in the past (a backdated start date, a resumed pause, or worker downtime can all leave a subscription behind), the change is due immediately and fires on the next billing scan rather than a period away — inspect scheduled_at to see this.
|
|
321
|
+
*
|
|
322
|
+
* Only one plan change may be pending per subscription. By default (on_conflict_policies.on_pending_schedule = 'reject') a second request returns 400; cancel the existing schedule via POST /subscriptions/schedules/{schedule_id}/cancel first. Pending schedules are listable via GET /subscriptions/{id}/schedules.
|
|
323
|
+
*
|
|
324
|
+
* Set on_conflict_policies.on_pending_schedule to 'supersede' to replace the queued change instead: the pending schedule is cancelled and this request applied in the same transaction, so both land or neither does. The cancelled schedule ids are returned in superseded_schedules, and preview reports the same list without writing.
|
|
317
325
|
*/
|
|
318
326
|
async executeSubscriptionPlanChangeV2(
|
|
319
327
|
id: string,
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { usageRecordsPostUsageRecordsSearch } from "../funcs/usage-records-post-usage-records-search.js";
|
|
6
|
+
import { ClientSDK, RequestOptions } from "../lib/sdks.js";
|
|
7
|
+
import { unwrapAsync } from "../types/fp.js";
|
|
8
|
+
import * as models from "./models/index.js";
|
|
9
|
+
|
|
10
|
+
export class UsageRecords extends ClientSDK {
|
|
11
|
+
/**
|
|
12
|
+
* List usage records
|
|
13
|
+
*
|
|
14
|
+
* @remarks
|
|
15
|
+
* Lists usage records. Also accepts filters/sort for a filtered query.
|
|
16
|
+
*/
|
|
17
|
+
async postUsageRecordsSearch(
|
|
18
|
+
request: models.UsageRecordFilter,
|
|
19
|
+
options?: RequestOptions,
|
|
20
|
+
): Promise<models.ListUsageRecordsResponse> {
|
|
21
|
+
return unwrapAsync(usageRecordsPostUsageRecordsSearch(
|
|
22
|
+
this,
|
|
23
|
+
request,
|
|
24
|
+
options,
|
|
25
|
+
));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { FlexpriceCore } from "../core.js";
|
|
2
|
-
import { RequestOptions } from "../lib/sdks.js";
|
|
3
|
-
import { FlexPriceError } from "../sdk/models/flex-price-error.js";
|
|
4
|
-
import { ConnectionError, InvalidRequestError, RequestAbortedError, RequestTimeoutError, UnexpectedClientError } from "../sdk/models/http-client-errors.js";
|
|
5
|
-
import * as models from "../sdk/models/index.js";
|
|
6
|
-
import { ResponseValidationError } from "../sdk/models/response-validation-error.js";
|
|
7
|
-
import { SDKValidationError } from "../sdk/models/sdk-validation-error.js";
|
|
8
|
-
import { APIPromise } from "../types/async.js";
|
|
9
|
-
import { Result } from "../types/fp.js";
|
|
10
|
-
/**
|
|
11
|
-
* Get combined revenue and cost analytics (V2)
|
|
12
|
-
*
|
|
13
|
-
* @remarks
|
|
14
|
-
* Use when you need the same revenue/cost/ROI analytics but computed from the costsheet usage-tracking pipeline (e.g. for consistency with usage-based cost data).
|
|
15
|
-
*/
|
|
16
|
-
export declare function costsGetDetailedCostAnalyticsV2(client: FlexpriceCore, request: models.GetCostAnalyticsRequest, options?: RequestOptions): APIPromise<Result<models.GetDetailedCostAnalyticsResponse, models.ErrorsErrorResponse | FlexPriceError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
|
|
17
|
-
//# sourceMappingURL=costs-get-detailed-cost-analytics-v2.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"costs-get-detailed-cost-analytics-v2.d.ts","sourceRoot":"","sources":["../../src/funcs/costs-get-detailed-cost-analytics-v2.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAM3C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAW,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,CAAC,uBAAuB,EACvC,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CACX,MAAM,CACJ,MAAM,CAAC,gCAAgC,EACrC,MAAM,CAAC,mBAAmB,GAC1B,cAAc,GACd,uBAAuB,GACvB,eAAe,GACf,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB,GACrB,kBAAkB,CACrB,CACF,CAMA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"costs-get-detailed-cost-analytics-v2.js","sourceRoot":"","sources":["../../src/funcs/costs-get-detailed-cost-analytics-v2.ts"],"names":[],"mappings":"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"}
|