UNPKG

@simpleapps-com/augur-api

Version:

TypeScript client library for Augur microservices API endpoints

236 lines 9.38 kB
import { ItemsListParamsSchema, ItemsListResponseSchema, ItemDetailResponseSchema, ItemUpdateRequestSchema, ItemOperationResponseSchema, PathItemRefreshResponseSchema, BatchRefreshResponseSchema, } from '../schemas'; /** * Creates the items resource methods * OpenAPI Path: /items → items.* * @description Item index management operations */ export function createItemsResource(executeRequest) { return { /** * List items from the search index - mirrors GET /items * * @fullPath api.openSearch.items.list * @service open-search * @domain product-management * @dataMethod itemsData.list * @discoverable true * @searchTerms ["items", "products", "inventory", "index", "management"] * @relatedEndpoints ["itemSearch.list"] * @commonPatterns ["manage items", "item operations", "product index"] * * @param params Optional filtering parameters * @returns Promise<ItemsListResponse> Complete response with item list * * @example * ```typescript * // List all items (with default pagination) * const response = await api.openSearch.items.list(); * * // List items with filtering * const filtered = await api.openSearch.items.list({ * itemId: 'WIRE', // Prefix filter * online: 'Y', // Only online items * statusCd: 704, // Active items only * limit: 50, * offset: 0 * }); * * console.log(`Found ${response.data.total} total items`); * response.data.data.forEach(item => { * console.log(`${item.itemId}: ${item.itemDesc}`); * }); * ``` */ list: async (params) => { return executeRequest({ method: 'GET', path: '/items', paramsSchema: ItemsListParamsSchema, responseSchema: ItemsListResponseSchema, }, params); }, /** * Get a specific item document - mirrors GET /items/{invMastUid} * * @fullPath api.openSearch.items.get * @service open-search * @domain product-management * @dataMethod itemsData.get * @discoverable true * @searchTerms ["item", "product", "detail", "get"] * @relatedEndpoints ["items.list", "items.update"] * @commonPatterns ["get item details", "retrieve product"] * * @param invMastUid Inventory master unique identifier * @returns Promise<ItemDetailResponse> Complete response with item details * * @example * ```typescript * const response = await api.openSearch.items.get(123456); * console.log(`Item: ${response.data.itemId} - ${response.data.itemDesc}`); * console.log(`Online: ${response.data.online}, Status: ${response.data.statusCd}`); * * if (response.data.keywords) { * console.log(`Keywords: ${response.data.keywords}`); * } * ``` */ get: async (invMastUid) => { return executeRequest({ method: 'GET', path: '/items/{id}', responseSchema: ItemDetailResponseSchema, }, undefined, { id: String(invMastUid) }); }, /** * Update a specific item document - mirrors PUT /items/{invMastUid} * * @fullPath api.openSearch.items.update * @service open-search * @domain product-management * @dataMethod itemsData.update * @discoverable true * @searchTerms ["update", "item", "product", "modify"] * @relatedEndpoints ["items.get", "items.list"] * @commonPatterns ["update item", "modify product"] * * @param invMastUid Inventory master unique identifier * @param data Update data (statusCd and/or processCd) * @returns Promise<ItemOperationResponse> Complete response with update result * * @example * ```typescript * const response = await api.openSearch.items.update(123456, { * statusCd: 704, * processCd: 704 * }); * console.log(`Updated item: ${response.data.itemId}`); * ``` */ update: async (invMastUid, data) => { return executeRequest({ method: 'PUT', path: '/items/{id}', paramsSchema: ItemUpdateRequestSchema, responseSchema: ItemOperationResponseSchema, }, data, { id: String(invMastUid) }); }, /** * Item refresh operations - mirrors OpenAPI path /items/{invMastUid}/refresh and /items/refresh */ refresh: { /** * Refresh a specific item document - mirrors GET /items/{invMastUid}/refresh * * @fullPath api.openSearch.items.refresh.get * @service open-search * @domain product-management * @dataMethod itemsData.refresh.get * @discoverable true * @searchTerms ["refresh", "item", "update index"] * @relatedEndpoints ["items.get", "items.refresh.update"] * @commonPatterns ["refresh item", "update item index"] * * @param invMastUid Inventory master unique identifier * @returns Promise<ItemRefreshResponse> Complete response with refresh result * * @example * ```typescript * const response = await api.openSearch.items.refresh.get(123456); * console.log(`Refreshed item: ${response.data.itemId}`); * ``` */ get: async (invMastUid) => { return executeRequest({ method: 'GET', path: '/items/{id}/refresh', responseSchema: PathItemRefreshResponseSchema, }, undefined, { id: String(invMastUid) }); }, /** * Trigger batch refresh of items - mirrors PUT /items/refresh * * @fullPath api.openSearch.items.refresh.update * @service open-search * @domain product-management * @dataMethod itemsData.refresh.update * @discoverable true * @searchTerms ["refresh", "batch", "update index"] * @relatedEndpoints ["items.refresh.get"] * @commonPatterns ["batch refresh", "update all items"] * * @returns Promise<BatchRefreshResponse> Complete response with batch refresh result * * @example * ```typescript * const response = await api.openSearch.items.refresh.update(); * if (response.data.status === 'success') { * console.log('Batch refresh initiated'); * } * ``` */ update: async () => { return executeRequest({ method: 'PUT', path: '/items/refresh', responseSchema: BatchRefreshResponseSchema, }); }, }, }; } /** * Creates the itemsData resource methods (data-only versions) */ export function createItemsDataResource(items) { return { /** * Get items list data without response metadata * @param params Optional filtering parameters * @returns Promise<ItemsListData> Items data directly */ list: async (params) => { const response = await items.list(params); return response.data; }, /** * Get item data without response metadata * @param invMastUid Inventory master unique identifier * @returns Promise<ItemDetail> Item data directly */ get: async (invMastUid) => { const response = await items.get(invMastUid); return response.data; }, /** * Update item and get data without response metadata * @param invMastUid Inventory master unique identifier * @param data Update data * @returns Promise<unknown> Update result data directly */ update: async (invMastUid, data) => { const response = await items.update(invMastUid, data); return response.data; }, refresh: { /** * Refresh item and get data without response metadata * @param invMastUid Inventory master unique identifier * @returns Promise<unknown> Refresh result data directly */ get: async (invMastUid) => { const response = await items.refresh.get(invMastUid); return response.data; }, /** * Trigger batch refresh and get data without response metadata * @returns Promise<unknown> Batch refresh result data directly */ update: async () => { const response = await items.refresh.update(); return response.data; }, }, }; } //# sourceMappingURL=items.js.map