UNPKG

@simpleapps-com/augur-api

Version:

TypeScript client library for Augur microservices API endpoints

129 lines 5 kB
import { PathItemSearchParamsSchema, PathItemSearchResponseSchema, PathSearchAttributesParamsSchema, PathSearchAttributesResponseSchema, } from '../schemas'; /** * Creates the itemSearch resource methods * OpenAPI Path: /item-search → itemSearch.* * @description Advanced item search with filtering and facets */ export function createItemSearchResource(executeRequest) { return { /** * Perform comprehensive item search with advanced filtering * * @fullPath api.openSearch.itemSearch.list * @service open-search * @domain product-search * @dataMethod itemSearchData.list * @discoverable true * @searchTerms ["search", "items", "products", "query", "elasticsearch"] * @relatedEndpoints ["itemSearch.attributes.list", "items.list"] * @commonPatterns ["search products", "find items", "product search"] * * @param params Search parameters including query, filters, and options * @returns Promise<ItemSearchResponse> Complete response with search results * * @example * ```typescript * // Basic search * const response = await api.openSearch.itemSearch.list({ * q: 'electrical wire', * searchType: 'query', * size: 20 * }); * * // Advanced search with filtering * const filtered = await api.openSearch.itemSearch.list({ * q: 'tools', * searchType: 'query', * size: 50, * operator: 'AND', * filters: JSON.stringify([{attributeUid: 123, attributeValueUid: 456}]), * classId5List: '1,2,3', * from: 0 * }); * * console.log(`Found ${response.data.totalResults} items`); * response.data.items.forEach(item => { * console.log(`${item.itemId}: ${item.itemDesc} (score: ${item.score})`); * }); * ``` */ list: async (params) => { return executeRequest({ method: 'GET', path: '/item-search', paramsSchema: PathItemSearchParamsSchema, responseSchema: PathItemSearchResponseSchema, }, params); }, /** * Search attributes operations - mirrors OpenAPI path /item-search/attributes * * @fullPath api.openSearch.itemSearch.attributes.list * @service open-search * @domain product-search * @dataMethod itemSearchData.attributes.list * @discoverable true * @searchTerms ["attributes", "facets", "filters", "search facets"] * @relatedEndpoints ["itemSearch.list"] * @commonPatterns ["get search facets", "filter attributes"] */ attributes: { /** * Get search attributes for faceted navigation * @param params Search parameters to determine available attributes * @returns Promise<SearchAttributesResponse> Complete response with attribute data * * @example * ```typescript * const response = await api.openSearch.itemSearch.attributes.list({ * q: 'electrical components', * searchType: 'query' * }); * * response.data.attributes.forEach(attr => { * console.log(`${attr.attributeName}:`); * attr.values.forEach(value => { * console.log(` ${value.attributeValue} (${value.count})`); * }); * }); * ``` */ list: async (params) => { return executeRequest({ method: 'GET', path: '/item-search/attributes', paramsSchema: PathSearchAttributesParamsSchema, responseSchema: PathSearchAttributesResponseSchema, }, params); }, }, }; } /** * Creates the itemSearchData resource methods (data-only versions) */ export function createItemSearchDataResource(itemSearch) { return { /** * Get item search data without response metadata * @param params Search parameters * @returns Promise<ItemSearchData> Search results data directly */ list: async (params) => { const response = await itemSearch.list(params); return response.data; }, attributes: { /** * Get search attributes data without response metadata * @param params Search parameters * @returns Promise<SearchAttributesData> Attributes data directly */ list: async (params) => { const response = await itemSearch.attributes.list(params); return response.data; }, }, }; } //# sourceMappingURL=item-search.js.map