/* * 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 { BillingPeriod, BillingPeriod$outboundSchema, } from "./billing-period.js"; import { CommitmentBucketRequest, CommitmentBucketRequest$Outbound, CommitmentBucketRequest$outboundSchema, } from "./commitment-bucket-request.js"; import { CommitmentType, CommitmentType$outboundSchema, } from "./commitment-type.js"; import { ProrationBehavior, ProrationBehavior$outboundSchema, } from "./proration-behavior.js"; import { SubscriptionPriceCreateRequest, SubscriptionPriceCreateRequest$Outbound, SubscriptionPriceCreateRequest$outboundSchema, } from "./subscription-price-create-request.js"; export type CreateSubscriptionLineItemRequest = { /** * Commitment fields */ commitmentAmount?: number | undefined; commitmentDuration?: BillingPeriod | undefined; commitmentOverageFactor?: number | undefined; commitmentQuantity?: number | undefined; commitmentTimeBuckets?: Array | undefined; commitmentTrueUpEnabled?: boolean | undefined; commitmentType?: CommitmentType | undefined; commitmentWindowed?: boolean | undefined; displayName?: string | undefined; endDate?: Date | undefined; metadata?: { [k: string]: string } | undefined; price?: SubscriptionPriceCreateRequest | undefined; /** * PriceID references an existing price (plan, addon, or subscription-scoped). Exactly one of price_id or price must be set. */ priceId?: string | undefined; prorationBehavior?: ProrationBehavior | undefined; quantity?: number | undefined; startDate?: Date | undefined; subscriptionPhaseId?: string | undefined; }; /** @internal */ export type CreateSubscriptionLineItemRequest$Outbound = { commitment_amount?: number | undefined; commitment_duration?: string | undefined; commitment_overage_factor?: number | undefined; commitment_quantity?: number | undefined; commitment_time_buckets?: Array | undefined; commitment_true_up_enabled?: boolean | undefined; commitment_type?: string | undefined; commitment_windowed?: boolean | undefined; display_name?: string | undefined; end_date?: string | undefined; metadata?: { [k: string]: string } | undefined; price?: SubscriptionPriceCreateRequest$Outbound | undefined; price_id?: string | undefined; proration_behavior?: string | undefined; quantity?: number | undefined; start_date?: string | undefined; subscription_phase_id?: string | undefined; }; /** @internal */ export const CreateSubscriptionLineItemRequest$outboundSchema: z.ZodMiniType< CreateSubscriptionLineItemRequest$Outbound, CreateSubscriptionLineItemRequest > = z.pipe( z.object({ commitmentAmount: z.optional(z.number()), commitmentDuration: z.optional(BillingPeriod$outboundSchema), commitmentOverageFactor: z.optional(z.number()), commitmentQuantity: z.optional(z.number()), commitmentTimeBuckets: z.optional( z.array(CommitmentBucketRequest$outboundSchema), ), commitmentTrueUpEnabled: z.optional(z.boolean()), commitmentType: z.optional(CommitmentType$outboundSchema), commitmentWindowed: z.optional(z.boolean()), displayName: z.optional(z.string()), endDate: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))), metadata: z.optional(z.record(z.string(), z.string())), price: z.optional(SubscriptionPriceCreateRequest$outboundSchema), priceId: z.optional(z.string()), prorationBehavior: z.optional(ProrationBehavior$outboundSchema), quantity: z.optional(z.number()), startDate: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))), subscriptionPhaseId: z.optional(z.string()), }), z.transform((v) => { return remap$(v, { commitmentAmount: "commitment_amount", commitmentDuration: "commitment_duration", commitmentOverageFactor: "commitment_overage_factor", commitmentQuantity: "commitment_quantity", commitmentTimeBuckets: "commitment_time_buckets", commitmentTrueUpEnabled: "commitment_true_up_enabled", commitmentType: "commitment_type", commitmentWindowed: "commitment_windowed", displayName: "display_name", endDate: "end_date", priceId: "price_id", prorationBehavior: "proration_behavior", startDate: "start_date", subscriptionPhaseId: "subscription_phase_id", }); }), ); export function createSubscriptionLineItemRequestToJSON( createSubscriptionLineItemRequest: CreateSubscriptionLineItemRequest, ): string { return JSON.stringify( CreateSubscriptionLineItemRequest$outboundSchema.parse( createSubscriptionLineItemRequest, ), ); }