UNPKG

@simpleapps-com/augur-api

Version:

TypeScript client library for Augur microservices API endpoints

241 lines 9.44 kB
import { z } from 'zod'; import { BaseResponseSchema } from '../../../core/schemas'; import { mysqlDatetimeSchema } from '../../../core/schema-utils'; // Extended sort params for items service export const SortParamsSchema = z.object({ orderBy: z.string().optional(), sortBy: z.string().optional(), sortOrder: z.enum(['asc', 'desc']).optional(), }); // Core product schemas based on InvMast.json export const ProductSchema = z.object({ invMastUid: z.coerce.number(), itemId: z.string().max(40), itemDesc: z.string().max(255), upc: z.string().nullable().optional(), unitOfMeasure: z.string().max(10).optional(), listPrice: z.number().optional(), stdPrice: z.number().optional(), statusCd: z.number(), onlineCd: z.coerce.number().optional(), displayOnWebFlag: z.string().max(1).optional(), deleteFlag: z.string().max(1).optional(), dateCreated: mysqlDatetimeSchema().optional(), dateLastModified: mysqlDatetimeSchema().optional(), createdBy: z.string().max(255).optional(), lastMaintainedBy: z.string().max(255).optional(), updateCd: z.number().optional(), processCd: z.number().optional(), typeCd: z.number().optional(), brandName: z.string().max(255).nullable().optional(), brandId: z.string().max(255).nullable().optional(), brandsUid: z.number().nullable().optional(), weight: z.number().nullable().optional(), weightUnitOfMeasure: z.string().max(10).nullable().optional(), length: z.number().nullable().optional(), width: z.number().nullable().optional(), height: z.number().nullable().optional(), dimensionUnitOfMeasure: z.string().max(10).nullable().optional(), categories: z .array(z.object({ categoryUid: z.number(), categoryDesc: z.string(), })) .optional(), attributes: z .array(z.object({ attributeId: z.string(), value: z.string(), })) .optional(), images: z .array(z.object({ imageUid: z.number(), imagePath: z.string(), })) .optional(), accessories: z.array(z.unknown()).optional(), alternateCode: z.array(z.unknown()).optional(), }); // Product detail schema for detailed responses export const ProductDetailSchema = z.object({ invMastUid: z.coerce.number(), itemId: z.string().max(40), itemDesc: z.string().max(255), upc: z.string().nullable().optional(), unitOfMeasure: z.string().max(10).nullable().optional(), listPrice: z.number().nullable().optional(), stdPrice: z.number().nullable().optional(), statusCd: z.number(), onlineCd: z.number(), displayOnWebFlag: z.string().max(1), deleteFlag: z.string().max(1), dateCreated: mysqlDatetimeSchema(), dateLastModified: mysqlDatetimeSchema(), createdBy: z.string().max(255), lastMaintainedBy: z.string().max(255), updateCd: z.number(), processCd: z.number(), typeCd: z.number(), brandName: z.string().max(255).nullable().optional(), brandId: z.string().max(255).nullable().optional(), brandsUid: z.number().nullable().optional(), weight: z.number().nullable().optional(), weightUnitOfMeasure: z.string().max(10).nullable().optional(), length: z.number().nullable().optional(), width: z.number().nullable().optional(), height: z.number().nullable().optional(), dimensionUnitOfMeasure: z.string().max(10).nullable().optional(), itemType: z.string().max(50).nullable().optional(), lotControlled: z.string().max(1).nullable().optional(), serialControlled: z.string().max(1).nullable().optional(), shelfLife: z.number().nullable().optional(), shelfLifeUnitOfMeasure: z.string().max(10).nullable().optional(), hazardous: z.string().max(1).nullable().optional(), fragile: z.string().max(1).nullable().optional(), temperatureControlled: z.string().max(1).nullable().optional(), minOrderQuantity: z.number().nullable().optional(), maxOrderQuantity: z.number().nullable().optional(), orderMultiple: z.number().nullable().optional(), leadTime: z.number().nullable().optional(), leadTimeUnitOfMeasure: z.string().max(10).nullable().optional(), categories: z .array(z.object({ categoryUid: z.number(), categoryDesc: z.string(), })) .optional(), attributes: z .array(z.object({ attributeId: z.string(), value: z.string(), })) .optional(), images: z .array(z.object({ imageUid: z.number(), imagePath: z.string(), })) .optional(), accessories: z.array(z.unknown()).optional(), alternateCode: z.array(z.unknown()).optional(), }); // Product lookup schema for simple lookups export const ProductLookupSchema = z.object({ invMastUid: z.coerce.number(), itemId: z.string().max(40), itemDesc: z.string().max(255), upc: z.string().nullable().optional(), unitOfMeasure: z.string().max(10).nullable().optional(), listPrice: z.number().nullable().optional(), stdPrice: z.number().nullable().optional(), statusCd: z.number(), onlineCd: z.number(), displayOnWebFlag: z.string().max(1), deleteFlag: z.string().max(1), brandName: z.string().max(255).nullable().optional(), brandId: z.string().max(255).nullable().optional(), brandsUid: z.number().nullable().optional(), }); // Parameter schemas for product endpoints export const ProductSearchParamsSchema = z.object({ q: z.string(), limit: z.coerce.number().int().positive().optional(), offset: z.coerce.number().int().min(0).optional(), statusCd: z.coerce.number().optional(), onlineCd: z.coerce.number().optional(), orderBy: z.string().optional(), displayOnWebFlag: z.string().optional(), brandId: z.string().optional(), categoryPath: z.string().optional(), minPrice: z.coerce.number().optional(), maxPrice: z.coerce.number().optional(), inStock: z.boolean().optional(), }); export const ProductListParamsSchema = z.object({ limit: z.coerce.number().int().positive().optional(), offset: z.coerce.number().int().min(0).optional(), statusCd: z.coerce.number().optional(), onlineCd: z.coerce.number().optional(), orderBy: z.string().optional(), displayOnWebFlag: z.string().optional(), q: z.string().optional(), brandId: z.string().optional(), categoryPath: z.string().optional(), minPrice: z.coerce.number().optional(), maxPrice: z.coerce.number().optional(), inStock: z.boolean().optional(), }); export const ProductDetailParamsSchema = z.object({ invMastUid: z.coerce.number(), includeCategories: z.boolean().optional(), includeAttributes: z.boolean().optional(), includeImages: z.boolean().optional(), includeAccessories: z.boolean().optional(), includeAlternateCodes: z.boolean().optional(), includeStock: z.boolean().optional(), }); export const ProductLookupParamsSchema = z.object({ q: z.string().optional(), limit: z.coerce.number().int().positive().optional(), offset: z.coerce.number().int().min(0).optional(), statusCd: z.coerce.number().optional(), onlineCd: z.coerce.number().optional(), displayOnWebFlag: z.string().optional(), brandId: z.string().optional(), }); export const ProductPreCacheParamsSchema = z.object({ invMastUid: z.coerce.number(), }); // Alternate Code schemas export const AlternateCodeSchema = z.object({ alternateCodeUid: z.number(), codeType: z.string(), codeValue: z.string(), description: z.string().optional(), }); // Accessory schemas export const AccessorySchema = z.object({ accessoryUid: z.number(), invMastUid: z.coerce.number(), accessoryInvMastUid: z.number(), accessoryType: z.string().optional(), quantity: z.number().optional(), itemId: z.string(), itemDesc: z.string(), }); // Stock/Inventory schemas export const BinInfoSchema = z.object({ locationId: z.string(), bin: z.string(), qtyOnHand: z.number().optional(), qtyAllocated: z.number().optional(), qtyAvailable: z.number().optional(), }); export const StockLocationSchema = z.object({ locationId: z.string(), qtyOnHand: z.number(), qtyAllocated: z.number(), qtyAvailable: z.number(), qtyBackordered: z.number().optional(), qtyOnOrder: z.number().optional(), }); export const StockSummarySchema = z.object({ totalQtyOnHand: z.number(), totalQtyAvailable: z.number(), totalQtyAllocated: z.number(), }); export const StockDetailsSchema = z.object({ stocks: z.array(StockLocationSchema), companySummary: StockSummarySchema, }); // Response schemas using BaseResponseSchema (8-field format) export const ProductResponseSchema = BaseResponseSchema(ProductSchema); export const ProductDetailResponseSchema = BaseResponseSchema(ProductDetailSchema); export const ProductListResponseSchema = BaseResponseSchema(z.array(ProductSchema)); export const ProductLookupResponseSchema = BaseResponseSchema(z.array(ProductLookupSchema)); export const ProductPreCacheResponseSchema = BaseResponseSchema(z.boolean()); export const AccessoryListResponseSchema = BaseResponseSchema(z.array(AccessorySchema)); export const BinInfoListResponseSchema = BaseResponseSchema(z.array(BinInfoSchema)); export const StockDetailsResponseSchema = BaseResponseSchema(StockDetailsSchema); //# sourceMappingURL=products.js.map