@ominity/api-typescript 1.4.8 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/commonjs/funcs/commerce/cartItemsCreate.js +1 -1
  2. package/dist/commonjs/funcs/commerce/cartItemsCreate.js.map +1 -1
  3. package/dist/commonjs/funcs/commerce/customerSubscriptions.d.ts +6 -0
  4. package/dist/commonjs/funcs/commerce/customerSubscriptions.d.ts.map +1 -1
  5. package/dist/commonjs/funcs/commerce/customerSubscriptions.js +13 -1
  6. package/dist/commonjs/funcs/commerce/customerSubscriptions.js.map +1 -1
  7. package/dist/commonjs/lib/config.d.ts +3 -3
  8. package/dist/commonjs/lib/config.js +1 -1
  9. package/dist/commonjs/models/commerce/cart-item.d.ts +19 -14
  10. package/dist/commonjs/models/commerce/cart-item.d.ts.map +1 -1
  11. package/dist/commonjs/models/commerce/cart-item.js +28 -23
  12. package/dist/commonjs/models/commerce/cart-item.js.map +1 -1
  13. package/dist/commonjs/models/commerce/index.d.ts +1 -0
  14. package/dist/commonjs/models/commerce/index.d.ts.map +1 -1
  15. package/dist/commonjs/models/commerce/index.js +1 -0
  16. package/dist/commonjs/models/commerce/index.js.map +1 -1
  17. package/dist/commonjs/models/commerce/product.d.ts +3 -0
  18. package/dist/commonjs/models/commerce/product.d.ts.map +1 -1
  19. package/dist/commonjs/models/commerce/product.js +2 -0
  20. package/dist/commonjs/models/commerce/product.js.map +1 -1
  21. package/dist/commonjs/models/commerce/subscription-change.d.ts +72 -0
  22. package/dist/commonjs/models/commerce/subscription-change.d.ts.map +1 -0
  23. package/dist/commonjs/models/commerce/subscription-change.js +96 -0
  24. package/dist/commonjs/models/commerce/subscription-change.js.map +1 -0
  25. package/dist/commonjs/models/commerce/subscription.d.ts +2 -0
  26. package/dist/commonjs/models/commerce/subscription.d.ts.map +1 -1
  27. package/dist/commonjs/models/commerce/subscription.js +1 -0
  28. package/dist/commonjs/models/commerce/subscription.js.map +1 -1
  29. package/dist/commonjs/models/errors/error-response.d.ts +6 -0
  30. package/dist/commonjs/models/errors/error-response.d.ts.map +1 -1
  31. package/dist/commonjs/models/errors/error-response.js +8 -1
  32. package/dist/commonjs/models/errors/error-response.js.map +1 -1
  33. package/dist/commonjs/models/operations/commerce-customer-subscriptions.d.ts +61 -0
  34. package/dist/commonjs/models/operations/commerce-customer-subscriptions.d.ts.map +1 -1
  35. package/dist/commonjs/models/operations/commerce-customer-subscriptions.js +17 -1
  36. package/dist/commonjs/models/operations/commerce-customer-subscriptions.js.map +1 -1
  37. package/dist/commonjs/sdk/commerce/customer-subscriptions.d.ts +15 -0
  38. package/dist/commonjs/sdk/commerce/customer-subscriptions.d.ts.map +1 -1
  39. package/dist/commonjs/sdk/commerce/customer-subscriptions.js +15 -0
  40. package/dist/commonjs/sdk/commerce/customer-subscriptions.js.map +1 -1
  41. package/dist/esm/funcs/commerce/cartItemsCreate.js +1 -1
  42. package/dist/esm/funcs/commerce/cartItemsCreate.js.map +1 -1
  43. package/dist/esm/funcs/commerce/customerSubscriptions.d.ts +6 -0
  44. package/dist/esm/funcs/commerce/customerSubscriptions.d.ts.map +1 -1
  45. package/dist/esm/funcs/commerce/customerSubscriptions.js +6 -0
  46. package/dist/esm/funcs/commerce/customerSubscriptions.js.map +1 -1
  47. package/dist/esm/lib/config.d.ts +3 -3
  48. package/dist/esm/lib/config.js +1 -1
  49. package/dist/esm/models/commerce/cart-item.d.ts +19 -14
  50. package/dist/esm/models/commerce/cart-item.d.ts.map +1 -1
  51. package/dist/esm/models/commerce/cart-item.js +27 -22
  52. package/dist/esm/models/commerce/cart-item.js.map +1 -1
  53. package/dist/esm/models/commerce/index.d.ts +1 -0
  54. package/dist/esm/models/commerce/index.d.ts.map +1 -1
  55. package/dist/esm/models/commerce/index.js +1 -0
  56. package/dist/esm/models/commerce/index.js.map +1 -1
  57. package/dist/esm/models/commerce/product.d.ts +3 -0
  58. package/dist/esm/models/commerce/product.d.ts.map +1 -1
  59. package/dist/esm/models/commerce/product.js +2 -0
  60. package/dist/esm/models/commerce/product.js.map +1 -1
  61. package/dist/esm/models/commerce/subscription-change.d.ts +72 -0
  62. package/dist/esm/models/commerce/subscription-change.d.ts.map +1 -0
  63. package/dist/esm/models/commerce/subscription-change.js +60 -0
  64. package/dist/esm/models/commerce/subscription-change.js.map +1 -0
  65. package/dist/esm/models/commerce/subscription.d.ts +2 -0
  66. package/dist/esm/models/commerce/subscription.d.ts.map +1 -1
  67. package/dist/esm/models/commerce/subscription.js +1 -0
  68. package/dist/esm/models/commerce/subscription.js.map +1 -1
  69. package/dist/esm/models/errors/error-response.d.ts +6 -0
  70. package/dist/esm/models/errors/error-response.d.ts.map +1 -1
  71. package/dist/esm/models/errors/error-response.js +8 -1
  72. package/dist/esm/models/errors/error-response.js.map +1 -1
  73. package/dist/esm/models/operations/commerce-customer-subscriptions.d.ts +61 -0
  74. package/dist/esm/models/operations/commerce-customer-subscriptions.d.ts.map +1 -1
  75. package/dist/esm/models/operations/commerce-customer-subscriptions.js +16 -0
  76. package/dist/esm/models/operations/commerce-customer-subscriptions.js.map +1 -1
  77. package/dist/esm/sdk/commerce/customer-subscriptions.d.ts +15 -0
  78. package/dist/esm/sdk/commerce/customer-subscriptions.d.ts.map +1 -1
  79. package/dist/esm/sdk/commerce/customer-subscriptions.js +16 -1
  80. package/dist/esm/sdk/commerce/customer-subscriptions.js.map +1 -1
  81. package/jsr.json +1 -1
  82. package/package.json +1 -1
  83. package/src/funcs/commerce/cartItemsCreate.ts +1 -1
  84. package/src/funcs/commerce/customerSubscriptions.ts +6 -0
  85. package/src/lib/config.ts +1 -1
  86. package/src/models/commerce/cart-item.ts +42 -27
  87. package/src/models/commerce/index.ts +1 -0
  88. package/src/models/commerce/product.ts +4 -0
  89. package/src/models/commerce/subscription-change.ts +137 -0
  90. package/src/models/commerce/subscription.ts +3 -0
  91. package/src/models/errors/error-response.ts +13 -1
  92. package/src/models/operations/commerce-customer-subscriptions.ts +37 -0
  93. package/src/sdk/commerce/customer-subscriptions.ts +16 -1
  94. package/tests/core-operations.test.mjs +187 -3
@@ -10,3 +10,9 @@ export const customerSubscriptionsDelete = (client: ClientSDK, request: operatio
10
10
  export const customerSubscriptionsRenew = (client: ClientSDK, request: operations.RenewCustomerSubscriptionRequest, options?: RequestOptions) => executeOperation(client, request, { operationID: "commerce.customerSubscriptions.renew", method: "POST", path: (v) => `/commerce/customers/${v.customerId}/subscriptions/${v.id}/renew`, requestSchema: operations.RenewCustomerSubscriptionRequest$outboundSchema, responseSchema: operations.RenewCustomerSubscriptionResponse$inboundSchema, query: encodeOperationQuery }, options);
11
11
  export const customerSubscriptionsListTransitionProducts = (client: ClientSDK, request: operations.ListCustomerSubscriptionTransitionProductsRequest, options?: RequestOptions) => executeOperation(client, request, { operationID: "commerce.customerSubscriptions.listTransitionProducts", method: "GET", path: (v) => `/commerce/customers/${v.customerId}/subscriptions/${v.subscriptionId}/transition`, requestSchema: operations.ListCustomerSubscriptionTransitionProductsRequest$outboundSchema, responseSchema: operations.ListCustomerSubscriptionTransitionProductsResponse$inboundSchema, query: encodeOperationQuery }, options);
12
12
  export const customerSubscriptionsGetTransitionProduct = (client: ClientSDK, request: operations.GetCustomerSubscriptionTransitionProductRequest, options?: RequestOptions) => executeOperation(client, request, { operationID: "commerce.customerSubscriptions.getTransitionProduct", method: "GET", path: (v) => `/commerce/customers/${v.customerId}/subscriptions/${v.subscriptionId}/transition/${v.productId}`, requestSchema: operations.GetCustomerSubscriptionTransitionProductRequest$outboundSchema, responseSchema: operations.GetCustomerSubscriptionTransitionProductResponse$inboundSchema, query: encodeOperationQuery }, options);
13
+ export const customerSubscriptionsListTransitions = (client: ClientSDK, request: operations.ListCustomerSubscriptionTransitionsRequest, options?: RequestOptions) => executeOperation(client, request, { operationID: "commerce.customerSubscriptions.listTransitions", method: "GET", path: (v) => `/commerce/customers/${v.customerId}/subscriptions/${v.subscriptionId}/transitions`, requestSchema: operations.ListCustomerSubscriptionTransitionsRequest$outboundSchema, responseSchema: operations.ListCustomerSubscriptionTransitionsResponse$inboundSchema }, options);
14
+ export const customerSubscriptionsQuoteChange = (client: ClientSDK, request: operations.QuoteCustomerSubscriptionChangeRequest, options?: RequestOptions) => executeOperation(client, request, { operationID: "commerce.customerSubscriptions.quoteChange", method: "POST", path: (v) => `/commerce/customers/${v.customerId}/subscriptions/${v.subscriptionId}/changes/quote`, requestSchema: operations.QuoteCustomerSubscriptionChangeRequest$outboundSchema, responseSchema: operations.QuoteCustomerSubscriptionChangeResponse$inboundSchema, body: (v) => v.data }, options);
15
+ export const customerSubscriptionsConfirmChange = (client: ClientSDK, request: operations.ConfirmCustomerSubscriptionChangeRequest, options?: RequestOptions) => executeOperation(client, request, { operationID: "commerce.customerSubscriptions.confirmChange", method: "POST", path: (v) => `/commerce/customers/${v.customerId}/subscriptions/${v.subscriptionId}/changes`, requestSchema: operations.ConfirmCustomerSubscriptionChangeRequest$outboundSchema, responseSchema: operations.ConfirmCustomerSubscriptionChangeResponse$inboundSchema, body: (v) => v.data }, options);
16
+ export const customerSubscriptionsCancelChange = (client: ClientSDK, request: operations.CancelCustomerSubscriptionChangeRequest, options?: RequestOptions) => executeOperation(client, request, { operationID: "commerce.customerSubscriptions.cancelChange", method: "DELETE", path: (v) => `/commerce/customers/${v.customerId}/subscriptions/${v.subscriptionId}/changes/${encodeURIComponent(v.changeId)}`, requestSchema: operations.CancelCustomerSubscriptionChangeRequest$outboundSchema, responseSchema: operations.CancelCustomerSubscriptionChangeResponse$inboundSchema, responseType: "void", successStatus: 204 }, options);
17
+ export const customerSubscriptionsCancel = (client: ClientSDK, request: operations.CancelCustomerSubscriptionRequest, options?: RequestOptions) => executeOperation(client, request, { operationID: "commerce.customerSubscriptions.cancel", method: "POST", path: (v) => `/commerce/customers/${v.customerId}/subscriptions/${v.subscriptionId}/cancellation`, requestSchema: operations.CancelCustomerSubscriptionRequest$outboundSchema, responseSchema: operations.CancelCustomerSubscriptionResponse$inboundSchema, body: (v) => v.data ?? {} }, options);
18
+ export const customerSubscriptionsRevokeCancellation = (client: ClientSDK, request: operations.RevokeCustomerSubscriptionCancellationRequest, options?: RequestOptions) => executeOperation(client, request, { operationID: "commerce.customerSubscriptions.revokeCancellation", method: "DELETE", path: (v) => `/commerce/customers/${v.customerId}/subscriptions/${v.subscriptionId}/cancellation`, requestSchema: operations.RevokeCustomerSubscriptionCancellationRequest$outboundSchema, responseSchema: operations.RevokeCustomerSubscriptionCancellationResponse$inboundSchema, responseType: "void", successStatus: 204 }, options);
package/src/lib/config.ts CHANGED
@@ -75,7 +75,7 @@ function applyApiVersion(url: URL, apiVersion: string | undefined): URL {
75
75
  return url;
76
76
  }
77
77
 
78
- export const SDK_VERSION = "1.4.8";
78
+ export const SDK_VERSION = "1.6.0";
79
79
 
80
80
  export const SDK_METADATA = {
81
81
  language: "typescript",
@@ -1,33 +1,48 @@
1
1
  import * as z from "zod/v4";
2
+ import { remap as remap$ } from "../../lib/primitives.js";
3
+ import { CurrencyAmount, CurrencyAmount$inboundSchema } from "../common/amount.js";
4
+ import { HalLinks, HalLinks$inboundSchema } from "../hal.js";
5
+ import { Product, Product$inboundSchema } from "./product.js";
2
6
 
3
-
4
- // Placeholder - waiting for actual data structure from user
5
7
  export type CartItem = {
6
- id?: string;
7
- [key: string]: any;
8
+ resource: "cartitem";
9
+ id: string;
10
+ cartId: string;
11
+ productId: number;
12
+ productOfferId: number | null;
13
+ quantity: number;
14
+ unitAmount: CurrencyAmount;
15
+ discountAmount: CurrencyAmount;
16
+ taxAmount: CurrencyAmount;
17
+ totalAmount: CurrencyAmount;
18
+ isShippingRequired: boolean;
19
+ updatedAt: string;
20
+ createdAt: string;
21
+ /** Present when requested with `include: "product"`. */
22
+ product?: Product;
23
+ links?: HalLinks;
8
24
  };
9
25
 
10
26
  /** @internal */
11
- export const CartItem$inboundSchema: z.ZodType<CartItem> = z
12
- .object({
13
- id: z.string().optional(),
14
- })
15
- .passthrough() as unknown as z.ZodType<CartItem>;
16
-
17
- /** @internal */
18
- export const CartItem$outboundSchema: z.ZodType<CartItem> = z
19
- .object({
20
- id: z.string().optional(),
21
- })
22
- .passthrough() as unknown as z.ZodType<CartItem>;
23
-
24
- /**
25
- * @internal
26
- * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
27
- */
28
- export namespace CartItem$ {
29
- /** @deprecated use `CartItem$inboundSchema` instead. */
30
- export const inboundSchema = CartItem$inboundSchema;
31
- /** @deprecated use `CartItem$outboundSchema` instead. */
32
- export const outboundSchema = CartItem$outboundSchema;
33
- }
27
+ export const CartItem$inboundSchema: z.ZodType<CartItem> = z.object({
28
+ resource: z.literal("cartitem"),
29
+ id: z.string(),
30
+ cartId: z.string(),
31
+ productId: z.number().int(),
32
+ productOfferId: z.number().int().nullable(),
33
+ quantity: z.number(),
34
+ unitAmount: CurrencyAmount$inboundSchema,
35
+ discountAmount: CurrencyAmount$inboundSchema,
36
+ taxAmount: CurrencyAmount$inboundSchema,
37
+ totalAmount: CurrencyAmount$inboundSchema,
38
+ isShippingRequired: z.boolean(),
39
+ updatedAt: z.string(),
40
+ createdAt: z.string(),
41
+ _embedded: z.object({ product: Product$inboundSchema.optional() }).optional(),
42
+ _links: HalLinks$inboundSchema.optional(),
43
+ }).loose().transform((value) => {
44
+ const { _embedded, ...rest } = value;
45
+ const item = remap$(rest, { _links: "links" }) as CartItem;
46
+ if (_embedded?.product) item.product = _embedded.product;
47
+ return item;
48
+ });
@@ -29,4 +29,5 @@ export * from "./customer-user-permission.js";
29
29
  export * from "./customer-group.js";
30
30
  export * from "./mandate.js";
31
31
  export * from "./subscription.js";
32
+ export * from "./subscription-change.js";
32
33
  export * from "./shipping-class.js";
@@ -5,6 +5,7 @@
5
5
  import * as z from "zod/v4";
6
6
  import { remap as remap$ } from "../../lib/primitives.js";
7
7
  import { HalLinks, HalLinks$inboundSchema } from "../hal.js";
8
+ import { ProductOffer, ProductOffer$inboundSchema } from "./product-offer.js";
8
9
 
9
10
  export type ProductRoute = {
10
11
  resource: string;
@@ -57,6 +58,8 @@ export type Product = {
57
58
  stock: number | null;
58
59
  isBackorderAllowed: boolean;
59
60
  routes: Record<string, ProductRoute>;
61
+ /** Present when requested with `include: "offers"`. */
62
+ offers?: Array<ProductOffer>;
60
63
  measurements?: ProductMeasurements;
61
64
  reviews?: ProductReviews;
62
65
  searches: Array<string>;
@@ -127,6 +130,7 @@ export const Product$inboundSchema: z.ZodType<Product> = z.object({
127
130
  stock: z.number().nullable(),
128
131
  isBackorderAllowed: z.boolean(),
129
132
  routes: z.record(z.string(), ProductRoute$inboundSchema),
133
+ offers: z.array(ProductOffer$inboundSchema).optional(),
130
134
  measurements: ProductMeasurements$inboundSchema.optional(),
131
135
  reviews: ProductReviews$inboundSchema.optional(),
132
136
  searches: z.array(z.string()),
@@ -0,0 +1,137 @@
1
+ import * as z from "zod/v4";
2
+ import { remap as remap$ } from "../../lib/primitives.js";
3
+ import { CurrencyAmount, CurrencyAmount$inboundSchema } from "../common/amount.js";
4
+ import { HalLinks, HalLinks$inboundSchema } from "../hal.js";
5
+ import { Product, Product$inboundSchema } from "./product.js";
6
+
7
+ /** `change` for a plan change, `cancel` for a cancellation. */
8
+ export type SubscriptionChangeType = "change" | "cancel" | (string & {});
9
+
10
+ export type SubscriptionChangeStatus =
11
+ | "quoted"
12
+ | "pending"
13
+ | "awaiting_payment"
14
+ | "applied"
15
+ | "cancelled"
16
+ | "expired"
17
+ | "failed"
18
+ | (string & {});
19
+
20
+ export type SubscriptionChangeTiming = "immediate" | "period_end" | (string & {});
21
+
22
+ /** The plan on one side of a change. */
23
+ export type SubscriptionChangePlan = {
24
+ productId: number | null;
25
+ offerId: number | null;
26
+ intervalId: number | null;
27
+ recurringAmount: CurrencyAmount | null;
28
+ quantity: number | null;
29
+ };
30
+
31
+ export type SubscriptionChangeQuoteLine = {
32
+ type: string | null;
33
+ description: string | null;
34
+ amount: CurrencyAmount;
35
+ tax: CurrencyAmount;
36
+ taxRate: number | null;
37
+ };
38
+
39
+ export type SubscriptionChangeQuote = {
40
+ lines: SubscriptionChangeQuoteLine[];
41
+ charge: CurrencyAmount;
42
+ credit: CurrencyAmount;
43
+ settlement: string | null;
44
+ };
45
+
46
+ /** A quoted, scheduled or applied plan change or cancellation. */
47
+ export type SubscriptionChange = {
48
+ resource: "subscription_change";
49
+ id: string;
50
+ subscriptionId: number;
51
+ type: SubscriptionChangeType;
52
+ direction: string | null;
53
+ status: SubscriptionChangeStatus;
54
+ timing: SubscriptionChangeTiming | null;
55
+ effectiveAt: string | null;
56
+ from: SubscriptionChangePlan;
57
+ to: SubscriptionChangePlan;
58
+ quote: SubscriptionChangeQuote;
59
+ warnings: string[];
60
+ quoteExpiresAt: string | null;
61
+ /** The order to pay for an immediate upgrade; also linked as `links.checkout`. */
62
+ orderId: number | null;
63
+ createdAt: string | null;
64
+ links?: HalLinks;
65
+ };
66
+
67
+ /** A plan the customer may change the subscription to, quoted at the default timing. */
68
+ export type SubscriptionTransition = {
69
+ productId: number;
70
+ offerId: number;
71
+ direction: string | null;
72
+ timing: SubscriptionChangeTiming | null;
73
+ effectiveAt: string | null;
74
+ allowed: boolean;
75
+ reasons: string[];
76
+ charge: CurrencyAmount;
77
+ product: Product;
78
+ };
79
+
80
+ /** @internal */
81
+ export const SubscriptionChangePlan$inboundSchema: z.ZodType<SubscriptionChangePlan> = z.object({
82
+ productId: z.number().int().nullable(),
83
+ offerId: z.number().int().nullable(),
84
+ intervalId: z.number().int().nullable(),
85
+ recurringAmount: CurrencyAmount$inboundSchema.nullable(),
86
+ quantity: z.number().int().nullable(),
87
+ });
88
+
89
+ /** @internal */
90
+ export const SubscriptionChangeQuoteLine$inboundSchema: z.ZodType<SubscriptionChangeQuoteLine> = z.object({
91
+ type: z.string().nullable(),
92
+ description: z.string().nullable(),
93
+ amount: CurrencyAmount$inboundSchema,
94
+ tax: CurrencyAmount$inboundSchema,
95
+ taxRate: z.number().nullable(),
96
+ });
97
+
98
+ /** @internal */
99
+ export const SubscriptionChangeQuote$inboundSchema: z.ZodType<SubscriptionChangeQuote> = z.object({
100
+ lines: z.array(SubscriptionChangeQuoteLine$inboundSchema),
101
+ charge: CurrencyAmount$inboundSchema,
102
+ credit: CurrencyAmount$inboundSchema,
103
+ settlement: z.string().nullable(),
104
+ });
105
+
106
+ /** @internal */
107
+ export const SubscriptionChange$inboundSchema: z.ZodType<SubscriptionChange> = z.object({
108
+ resource: z.literal("subscription_change"),
109
+ id: z.string(),
110
+ subscriptionId: z.number().int(),
111
+ type: z.string(),
112
+ direction: z.string().nullable(),
113
+ status: z.string(),
114
+ timing: z.string().nullable(),
115
+ effectiveAt: z.string().nullable(),
116
+ from: SubscriptionChangePlan$inboundSchema,
117
+ to: SubscriptionChangePlan$inboundSchema,
118
+ quote: SubscriptionChangeQuote$inboundSchema,
119
+ warnings: z.array(z.string()),
120
+ quoteExpiresAt: z.string().nullable(),
121
+ orderId: z.number().int().nullable(),
122
+ createdAt: z.string().nullable(),
123
+ _links: HalLinks$inboundSchema.optional(),
124
+ }).loose().transform((value) => remap$(value, { _links: "links" }) as SubscriptionChange);
125
+
126
+ /** @internal */
127
+ export const SubscriptionTransition$inboundSchema: z.ZodType<SubscriptionTransition> = z.object({
128
+ productId: z.number().int(),
129
+ offerId: z.number().int(),
130
+ direction: z.string().nullable(),
131
+ timing: z.string().nullable(),
132
+ effectiveAt: z.string().nullable(),
133
+ allowed: z.boolean(),
134
+ reasons: z.array(z.string()),
135
+ charge: CurrencyAmount$inboundSchema,
136
+ product: Product$inboundSchema,
137
+ }).loose();
@@ -14,6 +14,8 @@ export type SubscriptionPeriod = {
14
14
  export type Subscription = {
15
15
  resource: "subscription";
16
16
  id: number;
17
+ /** Readable reference; its format is configured per install. */
18
+ reference?: string | null | undefined;
17
19
  customerId: number;
18
20
  productId: number;
19
21
  intervalId: number;
@@ -42,6 +44,7 @@ export const SubscriptionPeriod$inboundSchema: z.ZodType<SubscriptionPeriod> = z
42
44
  export const Subscription$inboundSchema: z.ZodType<Subscription> = z.object({
43
45
  resource: z.literal("subscription"),
44
46
  id: z.number().int(),
47
+ reference: z.string().nullable().optional(),
45
48
  customerId: z.number().int(),
46
49
  productId: z.number().int(),
47
50
  intervalId: z.number().int(),
@@ -29,6 +29,10 @@ export type ErrorResponseData = {
29
29
  * A detailed human-readable description of the error that occurred.
30
30
  */
31
31
  detail: string;
32
+ /**
33
+ * Stable, machine-readable reason of a refusal, e.g. `subscription.next_period_locked`.
34
+ */
35
+ code?: string | undefined;
32
36
  /**
33
37
  * Optional validation errors keyed by field name.
34
38
  */
@@ -43,6 +47,7 @@ export class ErrorResponse extends OminityError {
43
47
  status: number;
44
48
  title: string;
45
49
  detail: string;
50
+ code?: string | undefined;
46
51
  fields?: Record<string, string[]> | undefined;
47
52
  links: ErrorResponseLinks;
48
53
 
@@ -61,6 +66,7 @@ export class ErrorResponse extends OminityError {
61
66
  this.status = err.status;
62
67
  this.title = err.title;
63
68
  this.detail = err.detail;
69
+ if (err.code != null) this.code = err.code;
64
70
  if (err.fields != null) this.fields = err.fields;
65
71
  this.links = err.links;
66
72
 
@@ -78,13 +84,17 @@ export const ErrorResponse$inboundSchema: z.ZodType<
78
84
  status: types.number(),
79
85
  title: types.string(),
80
86
  detail: types.string(),
87
+ code: z.optional(z.string()),
81
88
  fields: z.optional(ErrorResponseFieldsSchema),
89
+ errors: z.optional(ErrorResponseFieldsSchema),
82
90
  _links: z.lazy(() => ErrorResponseLinks$inboundSchema),
83
91
  request$: z.custom<Request>(x => x instanceof Request),
84
92
  response$: z.custom<Response>(x => x instanceof Response),
85
93
  body$: z.string(),
86
94
  }).transform((v) => {
87
- const remapped = remap$(v, {
95
+ // The API sends validation messages as `errors`.
96
+ const { errors, ...rest } = v;
97
+ const remapped = remap$({ ...rest, fields: rest.fields ?? errors }, {
88
98
  "_links": "links",
89
99
  });
90
100
 
@@ -100,6 +110,7 @@ export type ErrorResponse$Outbound = {
100
110
  status: number;
101
111
  title: string;
102
112
  detail: string;
113
+ code?: string | undefined;
103
114
  fields?: Record<string, string[]> | undefined;
104
115
  _links: ErrorResponseLinks$Outbound;
105
116
  };
@@ -115,6 +126,7 @@ export const ErrorResponse$outboundSchema: z.ZodType<
115
126
  status: data.status,
116
127
  title: data.title,
117
128
  detail: data.detail,
129
+ code: data.code,
118
130
  fields: data.fields,
119
131
  _links: data.links,
120
132
  };
@@ -1,6 +1,7 @@
1
1
  import * as z from "zod/v4";
2
2
  import { Product, Product$inboundSchema } from "../commerce/product.js";
3
3
  import { Subscription, Subscription$inboundSchema } from "../commerce/subscription.js";
4
+ import { SubscriptionChange, SubscriptionChange$inboundSchema, SubscriptionTransition, SubscriptionTransition$inboundSchema } from "../commerce/subscription-change.js";
4
5
  import { Paginated } from "../pagination.js";
5
6
  import { ListRequest, ListRequest$outboundSchema, paginatedSchema } from "./helpers.js";
6
7
 
@@ -34,12 +35,48 @@ export type RenewCustomerSubscriptionResponse = Subscription;
34
35
  export const RenewCustomerSubscriptionRequest$outboundSchema: z.ZodType<RenewCustomerSubscriptionRequest> = GetCustomerSubscriptionRequest$outboundSchema;
35
36
  export const RenewCustomerSubscriptionResponse$inboundSchema = Subscription$inboundSchema;
36
37
 
38
+ /** @deprecated Use `ListCustomerSubscriptionTransitionsRequest` (`GET .../transitions`). */
37
39
  export type ListCustomerSubscriptionTransitionProductsRequest = ListRequest & { customerId: number; subscriptionId: number };
38
40
  export type ListCustomerSubscriptionTransitionProductsResponse = Paginated<Product>;
39
41
  export const ListCustomerSubscriptionTransitionProductsRequest$outboundSchema: z.ZodType<ListCustomerSubscriptionTransitionProductsRequest> = ListRequest$outboundSchema.extend({ customerId: z.number().int(), subscriptionId: z.number().int() });
40
42
  export const ListCustomerSubscriptionTransitionProductsResponse$inboundSchema = paginatedSchema("products", Product$inboundSchema);
41
43
 
44
+ /** @deprecated Use `QuoteCustomerSubscriptionChangeRequest` (`POST .../changes/quote`). */
42
45
  export type GetCustomerSubscriptionTransitionProductRequest = { customerId: number; subscriptionId: number; productId: number; include?: string | undefined };
43
46
  export type GetCustomerSubscriptionTransitionProductResponse = Product;
44
47
  export const GetCustomerSubscriptionTransitionProductRequest$outboundSchema: z.ZodType<GetCustomerSubscriptionTransitionProductRequest> = z.object({ customerId: z.number().int(), subscriptionId: z.number().int(), productId: z.number().int(), include: z.string().optional() });
45
48
  export const GetCustomerSubscriptionTransitionProductResponse$inboundSchema = Product$inboundSchema;
49
+
50
+ export type ListCustomerSubscriptionTransitionsRequest = { customerId: number; subscriptionId: number };
51
+ export type ListCustomerSubscriptionTransitionsResponse = { count: number; items: SubscriptionTransition[] };
52
+ export const ListCustomerSubscriptionTransitionsRequest$outboundSchema: z.ZodType<ListCustomerSubscriptionTransitionsRequest> = z.object({ customerId: z.number().int(), subscriptionId: z.number().int() });
53
+ export const ListCustomerSubscriptionTransitionsResponse$inboundSchema: z.ZodType<ListCustomerSubscriptionTransitionsResponse> = z.object({
54
+ count: z.number().int(),
55
+ _embedded: z.object({ transitions: z.array(SubscriptionTransition$inboundSchema) }),
56
+ }).transform((value) => ({ count: value.count, items: value._embedded.transitions }));
57
+
58
+ export type QuoteCustomerSubscriptionChangeRequest = { customerId: number; subscriptionId: number; data: { toOfferId: number; timing?: "immediate" | "period_end" | undefined } };
59
+ export type QuoteCustomerSubscriptionChangeResponse = SubscriptionChange;
60
+ export const QuoteCustomerSubscriptionChangeRequest$outboundSchema: z.ZodType<QuoteCustomerSubscriptionChangeRequest> = z.object({ customerId: z.number().int(), subscriptionId: z.number().int(), data: z.object({ toOfferId: z.number().int(), timing: z.enum(["immediate", "period_end"]).optional() }) });
61
+ export const QuoteCustomerSubscriptionChangeResponse$inboundSchema = SubscriptionChange$inboundSchema;
62
+
63
+ export type ConfirmCustomerSubscriptionChangeRequest = { customerId: number; subscriptionId: number; data: { quoteId: string } };
64
+ export type ConfirmCustomerSubscriptionChangeResponse = SubscriptionChange;
65
+ export const ConfirmCustomerSubscriptionChangeRequest$outboundSchema: z.ZodType<ConfirmCustomerSubscriptionChangeRequest> = z.object({ customerId: z.number().int(), subscriptionId: z.number().int(), data: z.object({ quoteId: z.string() }) });
66
+ export const ConfirmCustomerSubscriptionChangeResponse$inboundSchema = SubscriptionChange$inboundSchema;
67
+
68
+ export type CancelCustomerSubscriptionChangeRequest = { customerId: number; subscriptionId: number; changeId: string };
69
+ export type CancelCustomerSubscriptionChangeResponse = void;
70
+ export const CancelCustomerSubscriptionChangeRequest$outboundSchema: z.ZodType<CancelCustomerSubscriptionChangeRequest> = z.object({ customerId: z.number().int(), subscriptionId: z.number().int(), changeId: z.string() });
71
+ export const CancelCustomerSubscriptionChangeResponse$inboundSchema: z.ZodType<void> = z.void();
72
+
73
+ /** Without `quoteId` the cancellation is quoted; with the `id` of that quote it is confirmed. */
74
+ export type CancelCustomerSubscriptionRequest = { customerId: number; subscriptionId: number; data?: { quoteId?: string | undefined; timing?: "immediate" | "period_end" | undefined } | undefined };
75
+ export type CancelCustomerSubscriptionResponse = SubscriptionChange;
76
+ export const CancelCustomerSubscriptionRequest$outboundSchema: z.ZodType<CancelCustomerSubscriptionRequest> = z.object({ customerId: z.number().int(), subscriptionId: z.number().int(), data: z.object({ quoteId: z.string().optional(), timing: z.enum(["immediate", "period_end"]).optional() }).optional() });
77
+ export const CancelCustomerSubscriptionResponse$inboundSchema = SubscriptionChange$inboundSchema;
78
+
79
+ export type RevokeCustomerSubscriptionCancellationRequest = { customerId: number; subscriptionId: number };
80
+ export type RevokeCustomerSubscriptionCancellationResponse = void;
81
+ export const RevokeCustomerSubscriptionCancellationRequest$outboundSchema: z.ZodType<RevokeCustomerSubscriptionCancellationRequest> = z.object({ customerId: z.number().int(), subscriptionId: z.number().int() });
82
+ export const RevokeCustomerSubscriptionCancellationResponse$inboundSchema: z.ZodType<void> = z.void();
@@ -1,4 +1,4 @@
1
- import { customerSubscriptionsCreate, customerSubscriptionsDelete, customerSubscriptionsGet, customerSubscriptionsGetTransitionProduct, customerSubscriptionsList, customerSubscriptionsListTransitionProducts, customerSubscriptionsRenew, customerSubscriptionsUpdate } from "../../funcs/commerce/index.js";
1
+ import { customerSubscriptionsCancel, customerSubscriptionsCancelChange, customerSubscriptionsConfirmChange, customerSubscriptionsCreate, customerSubscriptionsDelete, customerSubscriptionsGet, customerSubscriptionsGetTransitionProduct, customerSubscriptionsList, customerSubscriptionsListTransitionProducts, customerSubscriptionsListTransitions, customerSubscriptionsQuoteChange, customerSubscriptionsRenew, customerSubscriptionsRevokeCancellation, customerSubscriptionsUpdate } from "../../funcs/commerce/index.js";
2
2
  import { ClientSDK, RequestOptions } from "../../lib/sdks.js";
3
3
  import * as operations from "../../models/operations/index.js";
4
4
  import { unwrapAsync } from "../../types/fp.js";
@@ -7,8 +7,23 @@ export class CustomerSubscriptions extends ClientSDK {
7
7
  async get(request: operations.GetCustomerSubscriptionRequest, options?: RequestOptions): Promise<operations.GetCustomerSubscriptionResponse> { return unwrapAsync(customerSubscriptionsGet(this, request, options)); }
8
8
  async create(request: operations.CreateCustomerSubscriptionRequest, options?: RequestOptions): Promise<operations.CreateCustomerSubscriptionResponse> { return unwrapAsync(customerSubscriptionsCreate(this, request, options)); }
9
9
  async update(request: operations.UpdateCustomerSubscriptionRequest, options?: RequestOptions): Promise<operations.UpdateCustomerSubscriptionResponse> { return unwrapAsync(customerSubscriptionsUpdate(this, request, options)); }
10
+ /** Cancels the subscription straight away. Use `cancel` to cancel according to the cancellation policy (notice, minimum term, period end). */
10
11
  async delete(request: operations.DeleteCustomerSubscriptionRequest, options?: RequestOptions): Promise<void> { return unwrapAsync(customerSubscriptionsDelete(this, request, options)); }
11
12
  async renew(request: operations.RenewCustomerSubscriptionRequest, options?: RequestOptions): Promise<operations.RenewCustomerSubscriptionResponse> { return unwrapAsync(customerSubscriptionsRenew(this, request, options)); }
13
+ /** The plans the customer may change the subscription to, each quoted at the default timing. */
14
+ async listTransitions(request: operations.ListCustomerSubscriptionTransitionsRequest, options?: RequestOptions): Promise<operations.ListCustomerSubscriptionTransitionsResponse> { return unwrapAsync(customerSubscriptionsListTransitions(this, request, options)); }
15
+ /** Quotes a change to another offer. Confirm it with `confirmChange` before `quoteExpiresAt`. */
16
+ async quoteChange(request: operations.QuoteCustomerSubscriptionChangeRequest, options?: RequestOptions): Promise<operations.QuoteCustomerSubscriptionChangeResponse> { return unwrapAsync(customerSubscriptionsQuoteChange(this, request, options)); }
17
+ /** Confirms a quoted change. An immediate upgrade that needs payment returns the order to pay as `orderId` / `links.checkout`. */
18
+ async confirmChange(request: operations.ConfirmCustomerSubscriptionChangeRequest, options?: RequestOptions): Promise<operations.ConfirmCustomerSubscriptionChangeResponse> { return unwrapAsync(customerSubscriptionsConfirmChange(this, request, options)); }
19
+ /** Withdraws a scheduled change, or an immediate upgrade that was not paid yet. */
20
+ async cancelChange(request: operations.CancelCustomerSubscriptionChangeRequest, options?: RequestOptions): Promise<void> { return unwrapAsync(customerSubscriptionsCancelChange(this, request, options)); }
21
+ /** Without `quoteId` quotes the cancellation; with the quote's `id` confirms it. It can be revoked until it takes effect. */
22
+ async cancel(request: operations.CancelCustomerSubscriptionRequest, options?: RequestOptions): Promise<operations.CancelCustomerSubscriptionResponse> { return unwrapAsync(customerSubscriptionsCancel(this, request, options)); }
23
+ /** Revokes a scheduled cancellation; the subscription keeps renewing. */
24
+ async revokeCancellation(request: operations.RevokeCustomerSubscriptionCancellationRequest, options?: RequestOptions): Promise<void> { return unwrapAsync(customerSubscriptionsRevokeCancellation(this, request, options)); }
25
+ /** @deprecated Use `listTransitions`. The server may answer 410 Gone once the legacy endpoints are retired. */
12
26
  async listTransitionProducts(request: operations.ListCustomerSubscriptionTransitionProductsRequest, options?: RequestOptions): Promise<operations.ListCustomerSubscriptionTransitionProductsResponse> { return unwrapAsync(customerSubscriptionsListTransitionProducts(this, request, options)); }
27
+ /** @deprecated Use `quoteChange`. The server may answer 410 Gone once the legacy endpoints are retired. */
13
28
  async getTransitionProduct(request: operations.GetCustomerSubscriptionTransitionProductRequest, options?: RequestOptions): Promise<operations.GetCustomerSubscriptionTransitionProductResponse> { return unwrapAsync(customerSubscriptionsGetTransitionProduct(this, request, options)); }
14
29
  }