UNPKG

@simpleapps-com/augur-api

Version:

TypeScript client library for Augur microservices API endpoints

265 lines 10.2 kB
import { z } from 'zod'; import { BaseResponseSchema, BaseGetParamsSchema } from '../../../core/schemas'; // Checkout schemas - per Checkout.json specification with multiple field name support // Order header schema with alternative field names export const OrderHeaderSchema = z.object({ customerId: z.number().optional(), customer_id: z.number().optional(), shipToZipCode: z.string().optional(), ship_to_zip: z.string().optional(), ship_to_postal_code: z.string().optional(), shipToEmailAddress: z.string().optional(), ship_to_email: z.string().optional(), customerPoNo: z.string().optional(), customer_po_no: z.string().optional(), customer_po_number: z.string().optional(), class1: z.string().nullable().optional(), class_id1: z.string().nullable().optional(), class2: z.string().nullable().optional(), class_id2: z.string().nullable().optional(), class3: z.string().nullable().optional(), class_id3: z.string().nullable().optional(), class4: z.string().nullable().optional(), class_id4: z.string().nullable().optional(), class5: z.string().nullable().optional(), class_id5: z.string().nullable().optional(), taker: z.string().optional(), shippingEstimate: z.number().optional(), shipping_estimate: z.number().optional(), cartTax: z .object({ taxAmount: z.number().optional(), tax_amount: z.number().optional(), }) .optional(), cart_tax: z .object({ taxAmount: z.number().optional(), tax_amount: z.number().optional(), }) .optional(), userEmail: z.string().optional(), user_email: z.string().optional(), userId: z.union([z.string(), z.number()]).optional(), user_id: z.union([z.string(), z.number()]).optional(), }); // Legacy checkout customer schema for backward compatibility export const CheckoutCustomerSchema = z.object({ customerId: z.number(), contactId: z.number(), billToName: z.string(), billToAddress1: z.string(), billToCity: z.string(), billToState: z.string(), billToZip: z.string(), billToCountry: z.string(), shipToName: z.string(), shipToAddress1: z.string(), shipToCity: z.string(), shipToState: z.string(), shipToZip: z.string(), shipToCountry: z.string(), }); // Order line schema with alternative field names export const OrderLineSchema = z.object({ lineNo: z.number().optional(), itemId: z.string().optional(), unitQuantity: z.number().optional(), unit_quantity: z.number().optional(), qty: z.number().optional(), unitPrice: z.number().optional(), unit_price: z.number().optional(), unitOfMeasure: z.string().optional(), unit_of_measure: z.string().optional(), uom: z.string().optional(), manualPriceOverride: z.enum(['Y', 'N']).optional(), manual_price_override: z.enum(['Y', 'N']).optional(), willCall: z.enum(['Y', 'N']).optional(), will_call: z.enum(['Y', 'N']).optional(), invMastUid: z.number().optional(), lineNote: z.string().optional(), line_note: z.string().optional(), note: z.string().optional(), }); // Payment schema with alternative field names export const PaymentSchema = z.object({ paymentAccountId: z.string().optional(), payment_account_id: z.string().optional(), PaymentAccountID: z.string().optional(), processor: z.string().optional(), lastFour: z.union([z.string(), z.number()]).optional(), last_four: z.union([z.string(), z.number()]).optional(), LastFour: z.union([z.string(), z.number()]).optional(), paymentBrand: z.string().optional(), payment_brand: z.string().optional(), PaymentBrand: z.string().optional(), expirationMonth: z.union([z.string(), z.number()]).optional(), expiration_month: z.union([z.string(), z.number()]).optional(), ExpirationMonth: z.union([z.string(), z.number()]).optional(), expirationYear: z.union([z.string(), z.number()]).optional(), expiration_year: z.union([z.string(), z.number()]).optional(), ExpirationYear: z.union([z.string(), z.number()]).optional(), firstName: z.string().optional(), first_name: z.string().optional(), lastName: z.string().optional(), last_name: z.string().optional(), streetAddress1: z.string().optional(), street_address1: z.string().optional(), streetAddress2: z.string().optional(), street_address2: z.string().optional(), city: z.string().optional(), state: z.string().optional(), zipCode: z.string().optional(), zip_code: z.string().optional(), country: z.string().optional(), }); // Notes schema export const NotesSchema = z.object({ note: z.string().optional(), topic: z.string().optional(), }); // Web information schema export const WebInfoSchema = z.object({ webShopperEmail: z.string().optional(), webShopperId: z.number().optional(), }); // Legacy payment schema for backward compatibility export const CheckoutPaymentSchema = z.object({ paymentType: z.string(), cardNumber: z.string(), expirationDate: z.string(), cvv: z.string(), cardHolderName: z.string(), }); export const CheckoutShippingSchema = z.object({ shippingMethod: z.string(), shippingInstructions: z.string().optional(), }); export const CheckoutLineItemSchema = z.object({ invMastUid: z.number(), quantity: z.number(), unitOfMeasure: z.string(), unitPrice: z.number(), }); // Comprehensive checkout create request schema per Checkout.json export const CheckoutCreateRequestSchema = z .object({ oeHdr: OrderHeaderSchema.optional(), oe_hdr: OrderHeaderSchema.optional(), header: OrderHeaderSchema.optional(), oeLine: z.array(OrderLineSchema).optional(), oe_line: z.array(OrderLineSchema).optional(), lines: z.array(OrderLineSchema).optional(), notes: NotesSchema.optional(), payments: PaymentSchema.optional(), web: WebInfoSchema.optional(), // Legacy fields for backward compatibility customer: CheckoutCustomerSchema.optional(), payment: CheckoutPaymentSchema.optional(), shipping: CheckoutShippingSchema.optional(), lineItems: z.array(CheckoutLineItemSchema).optional(), }) .refine(data => { // At least one header format must be provided return !!(data.oeHdr || data.oe_hdr || data.header || data.customer); }, { message: 'At least one header format (oeHdr, oe_hdr, header, or customer) must be provided', }); export const CheckoutCreateParamsSchema = z.object({ cartHdrUid: z.coerce.number().optional(), }); export const CheckoutSchema = z.object({ checkoutUid: z.number(), checkoutUuid: z.string(), statusCd: z.number(), checkoutType: z.string().optional(), dateCreated: z.string(), dateLastModified: z.string(), properties: z.string().optional(), checkoutProcessor: z.string().optional(), jsonData: z.string().optional(), sourceName: z.string().optional(), sourceId: z.string().optional(), cartHdrUid: z.number(), body: z.unknown().optional(), // For create response }); // Checkout create response data schema per Checkout.json export const CheckoutCreateDataSchema = z.object({ checkoutUid: z.number(), checkoutUuid: z.string(), statusCd: z.number().default(704), body: z.union([z.record(z.unknown()), z.string()]), }); export const CheckoutCreateResponseSchema = BaseResponseSchema(CheckoutCreateDataSchema); export const CheckoutGetResponseSchema = BaseResponseSchema(CheckoutSchema); export const CheckoutDocParamsSchema = BaseGetParamsSchema.extend({ cartHdrUid: z.coerce.number().optional(), }); export const CheckoutValidateDataSchema = z.object({ checkoutUid: z.number(), checkoutUuid: z.string(), statusCd: z.number(), validationResults: z .object({ isValid: z.boolean(), errors: z.array(z.string()), warnings: z.array(z.string()), }) .optional(), }); export const CheckoutValidateResponseSchema = BaseResponseSchema(CheckoutValidateDataSchema); // Checkout activate response schema per Checkout.json export const CheckoutActivateDataSchema = z.object({ checkoutUid: z.number(), checkoutUuid: z.string().max(255), statusCd: z.number(), }); export const CheckoutActivateResponseSchema = BaseResponseSchema(CheckoutActivateDataSchema); // The CheckoutValidateDataSchema and CheckoutValidateResponseSchema are already defined above // Checkout document response schema per Checkout.json export const CheckoutDocDataSchema = z.object({ checkoutUid: z.number(), checkoutUuid: z.string().max(255), statusCd: z.number(), checkoutType: z.string().max(255).nullable().optional(), dateCreated: z.string(), dateLastModified: z.string(), properties: z.object({}).nullable().optional(), checkoutProcessor: z.string().max(255).nullable().optional(), jsonData: z.string().max(16777215).nullable().optional(), sourceName: z.string().max(255).nullable().optional(), sourceId: z.string().max(255).nullable().optional(), cartHdrUid: z.number(), }); export const CheckoutDocResponseSchema = BaseResponseSchema(CheckoutDocDataSchema); // Prophet21 schemas per CheckoutProphet21Hdr.json and CheckoutProphet21Line.json export const CheckoutProphet21HdrCreateRequestSchema = z .object({ checkoutUid: z.coerce.number().min(1).optional(), }) .passthrough(); export const CheckoutProphet21HdrDataSchema = z .object({ checkoutUid: z.number().min(1), }) .passthrough(); export const CheckoutProphet21HdrResponseSchema = BaseResponseSchema(CheckoutProphet21HdrDataSchema); // Prophet21 line schema export const CheckoutProphet21LineAddRequestSchema = z .array(z.object({ itemId: z.string(), invMastUid: z.number(), quantity: z.number(), unitOfMeasure: z.string(), })) .min(1); export const CheckoutProphet21LineItemSchema = z .object({ lineNo: z.number(), itemId: z.string(), unitQuantity: z.number(), unitOfMeasure: z.string(), }) .passthrough(); export const CheckoutProphet21LineResponseSchema = BaseResponseSchema(z.array(CheckoutProphet21LineItemSchema)); //# sourceMappingURL=checkout.js.map