/* * 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 { SubModifyCouponAction, SubModifyCouponAction$outboundSchema, } from "./sub-modify-coupon-action.js"; export type SubModifyCouponParams = { action: SubModifyCouponAction; /** * Required when action="remove". ID of the CouponAssociation to soft-delete. */ couponAssociationId?: string | undefined; /** * Required for action="add". Coupon code of the coupon to attach. */ couponCode?: string | undefined; /** * Optional. When the coupon association ends. */ endDate?: Date | undefined; /** * Optional. When the coupon association starts; defaults to now. */ startDate?: Date | undefined; /** * Optional. Apply at subscription level. Mutually exclusive with SubscriptionLineItemID. */ subscriptionId?: string | undefined; /** * Optional. Apply at a specific line item. Mutually exclusive with SubscriptionID. */ subscriptionLineItemId?: string | undefined; }; /** @internal */ export type SubModifyCouponParams$Outbound = { action: string; coupon_association_id?: string | undefined; coupon_code?: string | undefined; end_date?: string | undefined; start_date?: string | undefined; subscription_id?: string | undefined; subscription_line_item_id?: string | undefined; }; /** @internal */ export const SubModifyCouponParams$outboundSchema: z.ZodMiniType< SubModifyCouponParams$Outbound, SubModifyCouponParams > = z.pipe( z.object({ action: SubModifyCouponAction$outboundSchema, couponAssociationId: z.optional(z.string()), couponCode: z.optional(z.string()), endDate: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))), startDate: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))), subscriptionId: z.optional(z.string()), subscriptionLineItemId: z.optional(z.string()), }), z.transform((v) => { return remap$(v, { couponAssociationId: "coupon_association_id", couponCode: "coupon_code", endDate: "end_date", startDate: "start_date", subscriptionId: "subscription_id", subscriptionLineItemId: "subscription_line_item_id", }); }), ); export function subModifyCouponParamsToJSON( subModifyCouponParams: SubModifyCouponParams, ): string { return JSON.stringify( SubModifyCouponParams$outboundSchema.parse(subModifyCouponParams), ); }