/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod"; import { remap as remap$ } from "../../lib/primitives.js"; import { safeParse } from "../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import { Allocation, Allocation$inboundSchema, Allocation$Outbound, Allocation$outboundSchema, } from "./allocation.js"; import { Currency, Currency$inboundSchema, Currency$outboundSchema, } from "./currency.js"; import { CustomField, CustomField$inboundSchema, CustomField$Outbound, CustomField$outboundSchema, } from "./customfield.js"; import { CustomMappings, CustomMappings$inboundSchema, CustomMappings$Outbound, CustomMappings$outboundSchema, } from "./custommappings.js"; import { DeprecatedLinkedSupplier, DeprecatedLinkedSupplier$inboundSchema, DeprecatedLinkedSupplier$Outbound, DeprecatedLinkedSupplier$outboundSchema, } from "./deprecatedlinkedsupplier.js"; import { LinkedCustomer, LinkedCustomer$inboundSchema, LinkedCustomer$Outbound, LinkedCustomer$outboundSchema, } from "./linkedcustomer.js"; import { LinkedLedgerAccount, LinkedLedgerAccount$inboundSchema, LinkedLedgerAccount$Outbound, LinkedLedgerAccount$outboundSchema, } from "./linkedledgeraccount.js"; import { LinkedTrackingCategory, LinkedTrackingCategory$inboundSchema, LinkedTrackingCategory$Outbound, LinkedTrackingCategory$outboundSchema, } from "./linkedtrackingcategory.js"; import { PassThroughBody, PassThroughBody$inboundSchema, PassThroughBody$Outbound, PassThroughBody$outboundSchema, } from "./passthroughbody.js"; import { PaymentStatus, PaymentStatus$inboundSchema, PaymentStatus$outboundSchema, } from "./paymentstatus.js"; import { PaymentType, PaymentType$inboundSchema, PaymentType$outboundSchema, } from "./paymenttype.js"; export type Payment = { /** * A unique identifier for an object. */ id: string; /** * The third-party API ID of original entity */ downstreamId?: string | null | undefined; /** * Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217). */ currency?: Currency | null | undefined; /** * Currency Exchange Rate at the time entity was recorded/generated. */ currencyRate?: number | null | undefined; /** * The total amount of the transaction */ totalAmount: number | null; /** * Optional transaction reference message ie: Debit remittance detail. */ reference?: string | null | undefined; /** * Payment method used for the transaction, such as cash, credit card, bank transfer, or check */ paymentMethod?: string | null | undefined; /** * Optional reference message returned by payment method on processing */ paymentMethodReference?: string | null | undefined; /** * A unique identifier for an object. */ paymentMethodId?: string | null | undefined; /** * Type of accounts receivable account. * * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible. */ accountsReceivableAccountType?: string | null | undefined; /** * Unique identifier for the account to allocate payment to. * * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible. */ accountsReceivableAccountId?: string | null | undefined; account?: LinkedLedgerAccount | null | undefined; /** * The date of the transaction - YYYY:MM::DDThh:mm:ss.sTZD */ transactionDate: Date | null; /** * The customer this entity is linked to. */ customer?: LinkedCustomer | null | undefined; /** * The supplier this entity is linked to. * * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible. */ supplier?: DeprecatedLinkedSupplier | null | undefined; /** * The company or subsidiary id the transaction belongs to */ companyId?: string | null | undefined; /** * Indicates if the transaction has been reconciled. */ reconciled?: boolean | null | undefined; /** * Status of payment */ status?: PaymentStatus | undefined; /** * Type of payment */ type?: PaymentType | undefined; allocations?: Array | undefined; /** * Note associated with the transaction */ note?: string | null | undefined; /** * Number associated with the transaction */ number?: string | null | undefined; /** * A list of linked tracking categories. */ trackingCategories?: Array | null | undefined; customFields?: Array | undefined; /** * A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. */ rowVersion?: string | null | undefined; /** * Id to be displayed. */ displayId?: string | null | undefined; /** * When custom mappings are configured on the resource, the result is included here. */ customMappings?: CustomMappings | null | undefined; /** * The user who last updated the object. */ updatedBy?: string | null | undefined; /** * The user who created the object. */ createdBy?: string | null | undefined; /** * The date and time when the object was created. */ createdAt?: Date | null | undefined; /** * The date and time when the object was last updated. */ updatedAt?: Date | null | undefined; /** * The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources. */ passThrough?: Array | undefined; }; /** @internal */ export const Payment$inboundSchema: z.ZodType = z.object({ id: z.string(), downstream_id: z.nullable(z.string()).optional(), currency: z.nullable(Currency$inboundSchema).optional(), currency_rate: z.nullable(z.number()).optional(), total_amount: z.nullable(z.number()), reference: z.nullable(z.string()).optional(), payment_method: z.nullable(z.string()).optional(), payment_method_reference: z.nullable(z.string()).optional(), payment_method_id: z.nullable(z.string()).optional(), accounts_receivable_account_type: z.nullable(z.string()).optional(), accounts_receivable_account_id: z.nullable(z.string()).optional(), account: z.nullable(LinkedLedgerAccount$inboundSchema).optional(), transaction_date: z.nullable( z.string().datetime({ offset: true }).transform(v => new Date(v)), ), customer: z.nullable(LinkedCustomer$inboundSchema).optional(), supplier: z.nullable(DeprecatedLinkedSupplier$inboundSchema).optional(), company_id: z.nullable(z.string()).optional(), reconciled: z.nullable(z.boolean()).optional(), status: PaymentStatus$inboundSchema.optional(), type: PaymentType$inboundSchema.optional(), allocations: z.array(Allocation$inboundSchema).optional(), note: z.nullable(z.string()).optional(), number: z.nullable(z.string()).optional(), tracking_categories: z.nullable( z.array(LinkedTrackingCategory$inboundSchema), ).optional(), custom_fields: z.array(CustomField$inboundSchema).optional(), row_version: z.nullable(z.string()).optional(), display_id: z.nullable(z.string()).optional(), custom_mappings: z.nullable(CustomMappings$inboundSchema).optional(), updated_by: z.nullable(z.string()).optional(), created_by: z.nullable(z.string()).optional(), created_at: z.nullable( z.string().datetime({ offset: true }).transform(v => new Date(v)), ).optional(), updated_at: z.nullable( z.string().datetime({ offset: true }).transform(v => new Date(v)), ).optional(), pass_through: z.array(PassThroughBody$inboundSchema).optional(), }).transform((v) => { return remap$(v, { "downstream_id": "downstreamId", "currency_rate": "currencyRate", "total_amount": "totalAmount", "payment_method": "paymentMethod", "payment_method_reference": "paymentMethodReference", "payment_method_id": "paymentMethodId", "accounts_receivable_account_type": "accountsReceivableAccountType", "accounts_receivable_account_id": "accountsReceivableAccountId", "transaction_date": "transactionDate", "company_id": "companyId", "tracking_categories": "trackingCategories", "custom_fields": "customFields", "row_version": "rowVersion", "display_id": "displayId", "custom_mappings": "customMappings", "updated_by": "updatedBy", "created_by": "createdBy", "created_at": "createdAt", "updated_at": "updatedAt", "pass_through": "passThrough", }); }); /** @internal */ export type Payment$Outbound = { id: string; downstream_id?: string | null | undefined; currency?: string | null | undefined; currency_rate?: number | null | undefined; total_amount: number | null; reference?: string | null | undefined; payment_method?: string | null | undefined; payment_method_reference?: string | null | undefined; payment_method_id?: string | null | undefined; accounts_receivable_account_type?: string | null | undefined; accounts_receivable_account_id?: string | null | undefined; account?: LinkedLedgerAccount$Outbound | null | undefined; transaction_date: string | null; customer?: LinkedCustomer$Outbound | null | undefined; supplier?: DeprecatedLinkedSupplier$Outbound | null | undefined; company_id?: string | null | undefined; reconciled?: boolean | null | undefined; status?: string | undefined; type?: string | undefined; allocations?: Array | undefined; note?: string | null | undefined; number?: string | null | undefined; tracking_categories?: | Array | null | undefined; custom_fields?: Array | undefined; row_version?: string | null | undefined; display_id?: string | null | undefined; custom_mappings?: CustomMappings$Outbound | null | undefined; updated_by?: string | null | undefined; created_by?: string | null | undefined; created_at?: string | null | undefined; updated_at?: string | null | undefined; pass_through?: Array | undefined; }; /** @internal */ export const Payment$outboundSchema: z.ZodType< Payment$Outbound, z.ZodTypeDef, Payment > = z.object({ id: z.string(), downstreamId: z.nullable(z.string()).optional(), currency: z.nullable(Currency$outboundSchema).optional(), currencyRate: z.nullable(z.number()).optional(), totalAmount: z.nullable(z.number()), reference: z.nullable(z.string()).optional(), paymentMethod: z.nullable(z.string()).optional(), paymentMethodReference: z.nullable(z.string()).optional(), paymentMethodId: z.nullable(z.string()).optional(), accountsReceivableAccountType: z.nullable(z.string()).optional(), accountsReceivableAccountId: z.nullable(z.string()).optional(), account: z.nullable(LinkedLedgerAccount$outboundSchema).optional(), transactionDate: z.nullable(z.date().transform(v => v.toISOString())), customer: z.nullable(LinkedCustomer$outboundSchema).optional(), supplier: z.nullable(DeprecatedLinkedSupplier$outboundSchema).optional(), companyId: z.nullable(z.string()).optional(), reconciled: z.nullable(z.boolean()).optional(), status: PaymentStatus$outboundSchema.optional(), type: PaymentType$outboundSchema.optional(), allocations: z.array(Allocation$outboundSchema).optional(), note: z.nullable(z.string()).optional(), number: z.nullable(z.string()).optional(), trackingCategories: z.nullable(z.array(LinkedTrackingCategory$outboundSchema)) .optional(), customFields: z.array(CustomField$outboundSchema).optional(), rowVersion: z.nullable(z.string()).optional(), displayId: z.nullable(z.string()).optional(), customMappings: z.nullable(CustomMappings$outboundSchema).optional(), updatedBy: z.nullable(z.string()).optional(), createdBy: z.nullable(z.string()).optional(), createdAt: z.nullable(z.date().transform(v => v.toISOString())).optional(), updatedAt: z.nullable(z.date().transform(v => v.toISOString())).optional(), passThrough: z.array(PassThroughBody$outboundSchema).optional(), }).transform((v) => { return remap$(v, { downstreamId: "downstream_id", currencyRate: "currency_rate", totalAmount: "total_amount", paymentMethod: "payment_method", paymentMethodReference: "payment_method_reference", paymentMethodId: "payment_method_id", accountsReceivableAccountType: "accounts_receivable_account_type", accountsReceivableAccountId: "accounts_receivable_account_id", transactionDate: "transaction_date", companyId: "company_id", trackingCategories: "tracking_categories", customFields: "custom_fields", rowVersion: "row_version", displayId: "display_id", customMappings: "custom_mappings", updatedBy: "updated_by", createdBy: "created_by", createdAt: "created_at", updatedAt: "updated_at", passThrough: "pass_through", }); }); /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ export namespace Payment$ { /** @deprecated use `Payment$inboundSchema` instead. */ export const inboundSchema = Payment$inboundSchema; /** @deprecated use `Payment$outboundSchema` instead. */ export const outboundSchema = Payment$outboundSchema; /** @deprecated use `Payment$Outbound` instead. */ export type Outbound = Payment$Outbound; } export function paymentToJSON(payment: Payment): string { return JSON.stringify(Payment$outboundSchema.parse(payment)); } export function paymentFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => Payment$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'Payment' from JSON`, ); }