/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod/v3"; import { safeParse } from "../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import { Amount, Amount$inboundSchema, Amount$Outbound, Amount$outboundSchema, } from "./amount.js"; import { Mode, Mode$inboundSchema, Mode$outboundSchema } from "./mode.js"; import { PaymentLinkCustomerOptions, PaymentLinkCustomerOptions$inboundSchema, PaymentLinkCustomerOptions$Outbound, PaymentLinkCustomerOptions$outboundSchema, } from "./paymentlinkcustomeroptions.js"; import { PaymentLinkDisplayOptions, PaymentLinkDisplayOptions$inboundSchema, PaymentLinkDisplayOptions$Outbound, PaymentLinkDisplayOptions$outboundSchema, } from "./paymentlinkdisplayoptions.js"; import { PaymentLinkLineItems, PaymentLinkLineItems$inboundSchema, PaymentLinkLineItems$Outbound, PaymentLinkLineItems$outboundSchema, } from "./paymentlinklineitems.js"; import { PaymentLinkPaymentDetails, PaymentLinkPaymentDetails$inboundSchema, PaymentLinkPaymentDetails$Outbound, PaymentLinkPaymentDetails$outboundSchema, } from "./paymentlinkpaymentdetails.js"; import { PaymentLinkPayoutDetails, PaymentLinkPayoutDetails$inboundSchema, PaymentLinkPayoutDetails$Outbound, PaymentLinkPayoutDetails$outboundSchema, } from "./paymentlinkpayoutdetails.js"; import { PaymentLinkStatus, PaymentLinkStatus$inboundSchema, PaymentLinkStatus$outboundSchema, } from "./paymentlinkstatus.js"; import { PaymentLinkType, PaymentLinkType$inboundSchema, PaymentLinkType$outboundSchema, } from "./paymentlinktype.js"; export type PaymentLink = { /** * Unique code identifying this payment link. */ code: string; paymentLinkType: PaymentLinkType; /** * The operating mode for an account. */ mode: Mode; status: PaymentLinkStatus; /** * The partner's Moov account ID. */ partnerAccountID: string; /** * The merchant's Moov account ID. */ merchantAccountID: string; /** * The payment link's owner's Moov account ID. */ ownerAccountID: string; /** * The merchant's preferred payment method ID. Must be a wallet payment method. */ merchantPaymentMethodID: string; /** * Link to the payment landing page for this payment link. */ link: string; amount: Amount; /** * Optional sales tax amount. */ salesTaxAmount?: Amount | undefined; /** * The number of times this payment link has been used. */ uses: number; /** * An optional limit on the number of times this payment link can be used. * * @remarks * * **For payouts, `maxUses` is always 1.** */ maxUses?: number | undefined; /** * The timestamp when this payment link was last used. */ lastUsedOn?: Date | undefined; /** * An optional expiration date for this payment link. */ expiresOn?: Date | undefined; /** * Customizable display options for a payment link. */ display: PaymentLinkDisplayOptions; customer: PaymentLinkCustomerOptions; /** * Options for payment links used to collect payment. */ payment?: PaymentLinkPaymentDetails | undefined; payout?: PaymentLinkPayoutDetails | undefined; /** * An optional collection of line items for a payment link. * * @remarks * When line items are provided, their total plus sales tax must equal the payment link amount. */ lineItems?: PaymentLinkLineItems | undefined; createdOn: Date; updatedOn: Date; disabledOn?: Date | undefined; }; /** @internal */ export const PaymentLink$inboundSchema: z.ZodType< PaymentLink, z.ZodTypeDef, unknown > = z.object({ code: z.string(), paymentLinkType: PaymentLinkType$inboundSchema, mode: Mode$inboundSchema, status: PaymentLinkStatus$inboundSchema, partnerAccountID: z.string(), merchantAccountID: z.string(), ownerAccountID: z.string(), merchantPaymentMethodID: z.string(), link: z.string(), amount: Amount$inboundSchema, salesTaxAmount: Amount$inboundSchema.optional(), uses: z.number().int(), maxUses: z.number().int().optional(), lastUsedOn: z.string().datetime({ offset: true }).transform(v => new Date(v)) .optional(), expiresOn: z.string().datetime({ offset: true }).transform(v => new Date(v)) .optional(), display: PaymentLinkDisplayOptions$inboundSchema, customer: PaymentLinkCustomerOptions$inboundSchema, payment: PaymentLinkPaymentDetails$inboundSchema.optional(), payout: PaymentLinkPayoutDetails$inboundSchema.optional(), lineItems: PaymentLinkLineItems$inboundSchema.optional(), createdOn: z.string().datetime({ offset: true }).transform(v => new Date(v)), updatedOn: z.string().datetime({ offset: true }).transform(v => new Date(v)), disabledOn: z.string().datetime({ offset: true }).transform(v => new Date(v)) .optional(), }); /** @internal */ export type PaymentLink$Outbound = { code: string; paymentLinkType: string; mode: string; status: string; partnerAccountID: string; merchantAccountID: string; ownerAccountID: string; merchantPaymentMethodID: string; link: string; amount: Amount$Outbound; salesTaxAmount?: Amount$Outbound | undefined; uses: number; maxUses?: number | undefined; lastUsedOn?: string | undefined; expiresOn?: string | undefined; display: PaymentLinkDisplayOptions$Outbound; customer: PaymentLinkCustomerOptions$Outbound; payment?: PaymentLinkPaymentDetails$Outbound | undefined; payout?: PaymentLinkPayoutDetails$Outbound | undefined; lineItems?: PaymentLinkLineItems$Outbound | undefined; createdOn: string; updatedOn: string; disabledOn?: string | undefined; }; /** @internal */ export const PaymentLink$outboundSchema: z.ZodType< PaymentLink$Outbound, z.ZodTypeDef, PaymentLink > = z.object({ code: z.string(), paymentLinkType: PaymentLinkType$outboundSchema, mode: Mode$outboundSchema, status: PaymentLinkStatus$outboundSchema, partnerAccountID: z.string(), merchantAccountID: z.string(), ownerAccountID: z.string(), merchantPaymentMethodID: z.string(), link: z.string(), amount: Amount$outboundSchema, salesTaxAmount: Amount$outboundSchema.optional(), uses: z.number().int(), maxUses: z.number().int().optional(), lastUsedOn: z.date().transform(v => v.toISOString()).optional(), expiresOn: z.date().transform(v => v.toISOString()).optional(), display: PaymentLinkDisplayOptions$outboundSchema, customer: PaymentLinkCustomerOptions$outboundSchema, payment: PaymentLinkPaymentDetails$outboundSchema.optional(), payout: PaymentLinkPayoutDetails$outboundSchema.optional(), lineItems: PaymentLinkLineItems$outboundSchema.optional(), createdOn: z.date().transform(v => v.toISOString()), updatedOn: z.date().transform(v => v.toISOString()), disabledOn: z.date().transform(v => v.toISOString()).optional(), }); export function paymentLinkToJSON(paymentLink: PaymentLink): string { return JSON.stringify(PaymentLink$outboundSchema.parse(paymentLink)); } export function paymentLinkFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => PaymentLink$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'PaymentLink' from JSON`, ); }