/* * 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 { CreateCreditNoteLineItemRequest, CreateCreditNoteLineItemRequest$Outbound, CreateCreditNoteLineItemRequest$outboundSchema, } from "./create-credit-note-line-item-request.js"; import { CreditNoteReason, CreditNoteReason$outboundSchema, } from "./credit-note-reason.js"; export type CreateCreditNoteRequest = { /** * credit_note_number is an optional human-readable identifier for the credit note */ creditNoteNumber?: string | undefined; /** * idempotency_key is an optional key used to prevent duplicate credit note creation */ idempotencyKey?: string | undefined; /** * invoice_id is the unique identifier of the invoice this credit note is applied to */ invoiceId: string; /** * line_items contains the individual line items that make up this credit note (minimum 1 required) */ lineItems?: Array | undefined; /** * memo is an optional free-text field for additional notes about the credit note */ memo?: string | undefined; metadata?: { [k: string]: string } | undefined; /** * process_credit_note is a flag to process the credit note after creation */ processCreditNote?: boolean | undefined; reason: CreditNoteReason; }; /** @internal */ export type CreateCreditNoteRequest$Outbound = { credit_note_number?: string | undefined; idempotency_key?: string | undefined; invoice_id: string; line_items?: Array | undefined; memo?: string | undefined; metadata?: { [k: string]: string } | undefined; process_credit_note: boolean; reason: string; }; /** @internal */ export const CreateCreditNoteRequest$outboundSchema: z.ZodMiniType< CreateCreditNoteRequest$Outbound, CreateCreditNoteRequest > = z.pipe( z.object({ creditNoteNumber: z.optional(z.string()), idempotencyKey: z.optional(z.string()), invoiceId: z.string(), lineItems: z.optional( z.array(CreateCreditNoteLineItemRequest$outboundSchema), ), memo: z.optional(z.string()), metadata: z.optional(z.record(z.string(), z.string())), processCreditNote: z._default(z.boolean(), true), reason: CreditNoteReason$outboundSchema, }), z.transform((v) => { return remap$(v, { creditNoteNumber: "credit_note_number", idempotencyKey: "idempotency_key", invoiceId: "invoice_id", lineItems: "line_items", processCreditNote: "process_credit_note", }); }), ); export function createCreditNoteRequestToJSON( createCreditNoteRequest: CreateCreditNoteRequest, ): string { return JSON.stringify( CreateCreditNoteRequest$outboundSchema.parse(createCreditNoteRequest), ); }