UNPKG

@simpleapps-com/augur-api

Version:

TypeScript client library for Augur microservices API endpoints

153 lines 6.12 kB
import { z } from 'zod'; import { BaseResponseSchema } from '../../../core/schemas'; // Core category schemas based on ItemCategory.json export const ItemCategoryEntitySchema = z.object({ itemCategoryUid: z.number(), itemCategoryId: z.string().max(255), itemCategoryDesc: z.string().max(255), masterCategoryFlag: z.string().max(1), parentCategoryFlag: z.string().max(1), displayOnWebFlag: z.enum(['Y', 'N']), displayMasterProductFlag: z.string().max(1), catalogPage: z.string().max(255).nullable().optional(), deleteFlag: z.enum(['Y', 'N']), dateCreated: z.string(), createdBy: z.string().max(255), dateLastModified: z.string(), lastMaintainedBy: z.string().max(255), subCategoryImageFile: z.string().max(255).nullable().optional(), updateCd: z.number(), statusCd: z.number(), processCd: z.number(), itemCount: z.number(), }); // Lookup category schema for hierarchical operations export const LookupCategoryEntitySchema = z.object({ itemCategoryUid: z.number(), itemCategoryId: z.string(), itemCategoryDesc: z.string(), displayOnWebFlag: z.enum(['Y', 'N']), deleteFlag: z.enum(['Y', 'N']), itemCount: z.number(), fullPath: z.string().nullable(), }); // Sub-category schema for hierarchical display export const SubCategorySchema = z.object({ itemCategoryUid: z.number(), itemCategoryId: z.string(), itemCategoryDesc: z.string(), displayOnWebFlag: z.enum(['Y', 'N']), deleteFlag: z.enum(['Y', 'N']), itemCount: z.number(), fullPath: z.string().nullable(), }); // Lookup response data with subcategories export const LookupCategoryWithSubsSchema = LookupCategoryEntitySchema.extend({ subCategories: z.array(SubCategorySchema), }); // Legacy category schema for backward compatibility export const CategorySchema = z.lazy(() => z.object({ itemCategoryUid: z.number(), itemCategoryDesc: z.string(), path: z.string().optional(), parentItemCategoryUid: z.number().optional(), level: z.number().optional(), children: z.array(CategorySchema).optional(), attributes: z.array(z.unknown()).optional(), images: z.array(z.unknown()).optional(), itemCount: z.number().optional(), })); // Parameter schemas for category endpoints export const CategoryListParamsSchema = z.object({ limit: z.coerce.number().int().positive().optional(), offset: z.coerce.number().int().min(0).optional(), displayOnWebFlag: z.enum(['Y', 'N']).optional(), deleteFlag: z.enum(['Y', 'N']).optional(), masterCategoryFlag: z.string().optional(), parentCategoryFlag: z.string().optional(), orderBy: z.string().optional(), q: z.string().optional(), }); export const CategoryLookupParamsSchema = z.object({ itemCategoryUid: z.coerce.number().optional(), itemCategoryId: z.string().optional(), includeSubCategories: z.boolean().optional(), displayOnWebFlag: z.enum(['Y', 'N']).optional(), deleteFlag: z.enum(['Y', 'N']).optional(), }); export const CategoryPreCacheParamsSchema = z.object({ itemCategoryUid: z.coerce.number(), }); export const CategoryDetailsParamsSchema = z.object({ path: z.string().optional(), rootItemCategoryId: z.string().optional(), orderBy: z.string().optional(), classId5List: z.string().optional(), productCollection: z.string().optional(), filters: z.string().optional(), // JSON string childrenLimit: z.coerce.number().int().positive().optional(), childrenOffset: z.coerce.number().int().min(0).optional(), childrenFilter: z.string().optional(), }); export const CategoryItemsParamsSchema = z.object({ limit: z.coerce.number().int().positive().optional(), offset: z.coerce.number().int().min(0).optional(), sortBy: z.string().optional(), sortOrder: z.enum(['asc', 'desc']).optional(), filters: z.string().optional(), // JSON string fields: z.string().optional(), displayOnWebFlag: z.string().optional(), classId5List: z.string().optional(), classId5ExcludeList: z.string().optional(), tags: z.string().optional(), q: z.string().optional(), includeStock: z.enum(['Y', 'N']).optional(), cacheTtl: z.coerce.number().int().min(7200).optional(), // Minimum 2 hours }); export const CategoryItemSchema = z.object({ invMastUid: z.number(), itemId: z.string(), itemDesc: z.string(), listPrice: z.number().optional(), stdPrice: z.number().optional(), images: z.array(z.unknown()).optional(), attributes: z.array(z.unknown()).optional(), stock: z .object({ qtyOnHand: z.number(), qtyAvailable: z.number(), }) .optional(), }); export const CategoryAttributeSchema = z.object({ attributeUid: z.number(), attributeId: z.string(), attributeDesc: z.string(), dataType: z.string(), values: z.array(z.string()).optional(), }); export const CategoryFilterSchema = z.object({ attributeId: z.string(), attributeDesc: z.string(), filterType: z.string(), values: z.array(z.object({ value: z.string(), count: z.number(), })), }); export const CategoryImageSchema = z.object({ imageUid: z.number(), imagePath: z.string(), imageType: z.string(), altText: z.string().optional(), }); // Response schemas using BaseResponseSchema (8-field format) export const CategoryResponseSchema = BaseResponseSchema(CategorySchema); export const CategoryListResponseSchema = BaseResponseSchema(z.array(ItemCategoryEntitySchema)); export const CategoryLookupResponseSchema = BaseResponseSchema(LookupCategoryWithSubsSchema); export const CategoryPreCacheResponseSchema = BaseResponseSchema(z.boolean()); export const CategoryItemsResponseSchema = BaseResponseSchema(z.array(CategoryItemSchema)); export const CategoryAttributesResponseSchema = BaseResponseSchema(z.array(CategoryAttributeSchema)); export const CategoryFiltersResponseSchema = BaseResponseSchema(z.array(CategoryFilterSchema)); export const CategoryImagesResponseSchema = BaseResponseSchema(z.array(CategoryImageSchema)); //# sourceMappingURL=categories.js.map