/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod/v4-mini"; import { remap as remap$ } from "../../lib/primitives.js"; import { CreateSubscriptionLineItemRequest, CreateSubscriptionLineItemRequest$Outbound, CreateSubscriptionLineItemRequest$outboundSchema, } from "./create-subscription-line-item-request.js"; import { OverrideLineItemRequest, OverrideLineItemRequest$Outbound, OverrideLineItemRequest$outboundSchema, } from "./override-line-item-request.js"; import { SubscriptionCouponInput, SubscriptionCouponInput$Outbound, SubscriptionCouponInput$outboundSchema, } from "./subscription-coupon-input.js"; export type SubscriptionPhaseCreateRequest = { /** * Deprecated: use SubscriptionCoupons instead. */ coupons?: Array | undefined; endDate?: Date | undefined; /** * Deprecated: use SubscriptionCoupons instead. */ lineItemCoupons?: { [k: string]: Array } | undefined; /** * LineItems are extra (non-plan) line items for this phase; start_date defaults to phase start. */ lineItems?: Array | undefined; metadata?: { [k: string]: string } | undefined; /** * OverrideLineItems overrides specific plan prices for this phase. */ overrideLineItems?: Array | undefined; startDate: Date; /** * SubscriptionCoupons is the preferred way to attach coupons to this phase. */ subscriptionCoupons?: Array | undefined; }; /** @internal */ export type SubscriptionPhaseCreateRequest$Outbound = { coupons?: Array | undefined; end_date?: string | undefined; line_item_coupons?: { [k: string]: Array } | undefined; line_items?: Array | undefined; metadata?: { [k: string]: string } | undefined; override_line_items?: Array | undefined; start_date: string; subscription_coupons?: Array | undefined; }; /** @internal */ export const SubscriptionPhaseCreateRequest$outboundSchema: z.ZodMiniType< SubscriptionPhaseCreateRequest$Outbound, SubscriptionPhaseCreateRequest > = z.pipe( z.object({ coupons: z.optional(z.array(z.string())), endDate: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))), lineItemCoupons: z.optional(z.record(z.string(), z.array(z.string()))), lineItems: z.optional( z.array(CreateSubscriptionLineItemRequest$outboundSchema), ), metadata: z.optional(z.record(z.string(), z.string())), overrideLineItems: z.optional( z.array(OverrideLineItemRequest$outboundSchema), ), startDate: z.pipe(z.date(), z.transform(v => v.toISOString())), subscriptionCoupons: z.optional( z.array(SubscriptionCouponInput$outboundSchema), ), }), z.transform((v) => { return remap$(v, { endDate: "end_date", lineItemCoupons: "line_item_coupons", lineItems: "line_items", overrideLineItems: "override_line_items", startDate: "start_date", subscriptionCoupons: "subscription_coupons", }); }), ); export function subscriptionPhaseCreateRequestToJSON( subscriptionPhaseCreateRequest: SubscriptionPhaseCreateRequest, ): string { return JSON.stringify( SubscriptionPhaseCreateRequest$outboundSchema.parse( subscriptionPhaseCreateRequest, ), ); }