Skip to content

Commit 6d00698

Browse files
npslaneyclaude
andcommitted
fix(api-contract): document NEVER→null normalization for recurringInterval
- Rename RecurringIntervalWithNeverSchema → RecurringIntervalInputSchema - Export RecurringIntervalInputSchema and RecurringIntervalInput type - Document that server normalizes "NEVER" to null when storing/returning Input accepts "NEVER" for one-time products, output uses null. Server-side normalization ensures contract consistency. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent da51598 commit 6d00698

2 files changed

Lines changed: 17 additions & 7 deletions

File tree

src/index.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,14 @@ export {
4848
PaginationInputSchema,
4949
PaginationOutputSchema,
5050
} from "./schemas/pagination";
51-
export type { ProductPriceInput } from "./schemas/product-price-input";
52-
export { ProductPriceInputSchema } from "./schemas/product-price-input";
51+
export type {
52+
ProductPriceInput,
53+
RecurringIntervalInput,
54+
} from "./schemas/product-price-input";
55+
export {
56+
ProductPriceInputSchema,
57+
RecurringIntervalInputSchema,
58+
} from "./schemas/product-price-input";
5359

5460
// SDK contract - consumed by SDK clients
5561
export const contract = { checkout, onboarding, products };

src/schemas/product-price-input.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,19 @@ import { CurrencySchema } from "./currency";
1313
export const PriceAmountTypeSchema = z.enum(["FIXED", "CUSTOM"]);
1414
export type PriceAmountType = z.infer<typeof PriceAmountTypeSchema>;
1515

16-
// Recurring interval with "never" option for one-time purchases
17-
export const RecurringIntervalWithNeverSchema = z.enum([
16+
/**
17+
* Recurring interval schema for product INPUT (MCP create/update).
18+
* Uses "NEVER" explicitly for one-time purchases.
19+
* Server normalizes "NEVER" → null when storing/returning.
20+
*/
21+
export const RecurringIntervalInputSchema = z.enum([
1822
"NEVER",
1923
"MONTH",
2024
"QUARTER",
2125
"YEAR",
2226
]);
23-
export type RecurringIntervalWithNever = z.infer<
24-
typeof RecurringIntervalWithNeverSchema
27+
export type RecurringIntervalInput = z.infer<
28+
typeof RecurringIntervalInputSchema
2529
>;
2630

2731
/**
@@ -32,7 +36,7 @@ export type RecurringIntervalWithNever = z.infer<
3236
*/
3337
export const ProductPriceInputSchema = z
3438
.object({
35-
recurringInterval: RecurringIntervalWithNeverSchema,
39+
recurringInterval: RecurringIntervalInputSchema,
3640
currency: CurrencySchema,
3741
amountType: PriceAmountTypeSchema,
3842
// Required for FIXED, ignored for CUSTOM

0 commit comments

Comments
 (0)