@simpleapps-com/augur-api
Version:
TypeScript client library for Augur microservices API endpoints
265 lines • 10.2 kB
JavaScript
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