/* * 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 { CreditGrantCadence, CreditGrantCadence$outboundSchema, } from "./credit-grant-cadence.js"; import { CreditGrantExpiryDurationUnit, CreditGrantExpiryDurationUnit$outboundSchema, } from "./credit-grant-expiry-duration-unit.js"; import { CreditGrantExpiryType, CreditGrantExpiryType$outboundSchema, } from "./credit-grant-expiry-type.js"; import { CreditGrantPeriod, CreditGrantPeriod$outboundSchema, } from "./credit-grant-period.js"; import { CreditGrantScope, CreditGrantScope$outboundSchema, } from "./credit-grant-scope.js"; export type CreateCreditGrantRequest = { addonId?: string | undefined; cadence: CreditGrantCadence; /** * amount in the currency = number of credits * conversion_rate * * @remarks * ex if conversion_rate is 1, then 1 USD = 1 credit * ex if conversion_rate is 2, then 1 USD = 0.5 credits * ex if conversion_rate is 0.5, then 1 USD = 2 credits */ conversionRate?: string | undefined; credits: string; endDate?: Date | undefined; expirationDuration?: number | undefined; expirationDurationUnit?: CreditGrantExpiryDurationUnit | undefined; expirationType?: CreditGrantExpiryType | undefined; metadata?: { [k: string]: string } | undefined; name: string; period?: CreditGrantPeriod | undefined; periodCount?: number | undefined; planId?: string | undefined; priority?: number | undefined; scope: CreditGrantScope; startDate?: Date | undefined; subscriptionId?: string | undefined; /** * topup_conversion_rate is the conversion rate for the topup to the currency * * @remarks * ex if topup_conversion_rate is 1, then 1 USD = 1 credit * ex if topup_conversion_rate is 2, then 1 USD = 0.5 credits * ex if topup_conversion_rate is 0.5, then 1 USD = 2 credits */ topupConversionRate?: string | undefined; }; /** @internal */ export type CreateCreditGrantRequest$Outbound = { addon_id?: string | undefined; cadence: string; conversion_rate?: string | undefined; credits: string; end_date?: string | undefined; expiration_duration?: number | undefined; expiration_duration_unit?: string | undefined; expiration_type?: string | undefined; metadata?: { [k: string]: string } | undefined; name: string; period?: string | undefined; period_count?: number | undefined; plan_id?: string | undefined; priority?: number | undefined; scope: string; start_date?: string | undefined; subscription_id?: string | undefined; topup_conversion_rate?: string | undefined; }; /** @internal */ export const CreateCreditGrantRequest$outboundSchema: z.ZodMiniType< CreateCreditGrantRequest$Outbound, CreateCreditGrantRequest > = z.pipe( z.object({ addonId: z.optional(z.string()), cadence: CreditGrantCadence$outboundSchema, conversionRate: z.optional(z.string()), credits: z.string(), endDate: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))), expirationDuration: z.optional(z.int()), expirationDurationUnit: z.optional( CreditGrantExpiryDurationUnit$outboundSchema, ), expirationType: z.optional(CreditGrantExpiryType$outboundSchema), metadata: z.optional(z.record(z.string(), z.string())), name: z.string(), period: z.optional(CreditGrantPeriod$outboundSchema), periodCount: z.optional(z.int()), planId: z.optional(z.string()), priority: z.optional(z.int()), scope: CreditGrantScope$outboundSchema, startDate: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))), subscriptionId: z.optional(z.string()), topupConversionRate: z.optional(z.string()), }), z.transform((v) => { return remap$(v, { addonId: "addon_id", conversionRate: "conversion_rate", endDate: "end_date", expirationDuration: "expiration_duration", expirationDurationUnit: "expiration_duration_unit", expirationType: "expiration_type", periodCount: "period_count", planId: "plan_id", startDate: "start_date", subscriptionId: "subscription_id", topupConversionRate: "topup_conversion_rate", }); }), ); export function createCreditGrantRequestToJSON( createCreditGrantRequest: CreateCreditGrantRequest, ): string { return JSON.stringify( CreateCreditGrantRequest$outboundSchema.parse(createCreditGrantRequest), ); }