/* * 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 { AddonCadence, AddonCadence$outboundSchema } from "./addon-cadence.js"; import { CheckoutParams, CheckoutParams$Outbound, CheckoutParams$outboundSchema, } from "./checkout-params.js"; import { LineItemCommitmentConfig, LineItemCommitmentConfig$Outbound, LineItemCommitmentConfig$outboundSchema, } from "./line-item-commitment-config.js"; import { OverrideLineItemRequest, OverrideLineItemRequest$Outbound, OverrideLineItemRequest$outboundSchema, } from "./override-line-item-request.js"; import { ProrationBehavior, ProrationBehavior$outboundSchema, } from "./proration-behavior.js"; export type AddAddonRequest = { addonId: string; cadence?: AddonCadence | undefined; checkout?: CheckoutParams | undefined; /** * LineItemCommitments allows setting commitment configuration per addon line item (keyed by price_id) */ lineItemCommitments?: { [k: string]: LineItemCommitmentConfig } | undefined; metadata?: { [k: string]: any } | undefined; /** * OverrideLineItems allows overriding price/quantity/billing model for specific addon prices */ overrideLineItems?: Array | undefined; prorationBehavior?: ProrationBehavior | undefined; startDate?: Date | undefined; subscriptionId: string; }; /** @internal */ export type AddAddonRequest$Outbound = { addon_id: string; cadence?: string | undefined; checkout?: CheckoutParams$Outbound | undefined; line_item_commitments?: | { [k: string]: LineItemCommitmentConfig$Outbound } | undefined; metadata?: { [k: string]: any } | undefined; override_line_items?: Array | undefined; proration_behavior?: string | undefined; start_date?: string | undefined; subscription_id: string; }; /** @internal */ export const AddAddonRequest$outboundSchema: z.ZodMiniType< AddAddonRequest$Outbound, AddAddonRequest > = z.pipe( z.object({ addonId: z.string(), cadence: z.optional(AddonCadence$outboundSchema), checkout: z.optional(CheckoutParams$outboundSchema), lineItemCommitments: z.optional( z.record(z.string(), LineItemCommitmentConfig$outboundSchema), ), metadata: z.optional(z.record(z.string(), z.any())), overrideLineItems: z.optional( z.array(OverrideLineItemRequest$outboundSchema), ), prorationBehavior: z.optional(ProrationBehavior$outboundSchema), startDate: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))), subscriptionId: z.string(), }), z.transform((v) => { return remap$(v, { addonId: "addon_id", lineItemCommitments: "line_item_commitments", overrideLineItems: "override_line_items", prorationBehavior: "proration_behavior", startDate: "start_date", subscriptionId: "subscription_id", }); }), ); export function addAddonRequestToJSON( addAddonRequest: AddAddonRequest, ): string { return JSON.stringify(AddAddonRequest$outboundSchema.parse(addAddonRequest)); }