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