UNPKG

@simpleapps-com/augur-api

Version:

TypeScript client library for Augur microservices API endpoints

472 lines 17.9 kB
import { BaseServiceClient } from '../../core/base-client'; import type { HTTPClient } from '../../core/client'; import { type SearchAttributesParams, type SearchAttributesResponse, type ItemOperationResponse } from './schemas'; /** * OpenSearch service client for advanced product search capabilities * * Provides comprehensive search functionality including: * - Advanced item search with filtering and facets * - Search result attributes and faceted navigation * - Item index management and refresh operations * - Health monitoring and service status */ export declare class OpenSearchClient extends BaseServiceClient { private readonly _typeRefs; /** * Create a new OpenSearchClient instance * @param http Configured HTTPClient instance * @param baseUrl Base URL for the OpenSearch API (default: https://open-search.augur-api.com) */ constructor(http: HTTPClient, baseUrl?: string); /** * Health monitoring operations */ health: { /** * Simple ping endpoint * @returns Promise<"pong"> * * @example * ```typescript * const pong = await api.opensearch.health.ping(); * console.log(pong); // "pong" * ``` */ ping: () => Promise<{ params: Record<string, unknown> | unknown[]; data: "pong"; options: Record<string, unknown> | unknown[]; status: number; message: string; count: number; total: number; totalResults: number; }>; /** * Comprehensive health check * @returns Promise<HealthCheckData> * * @example * ```typescript * const health = await api.opensearch.health.check(); * console.log(`Site: ${health.siteId}, Hash: ${health.siteHash}`); * ``` */ check: () => Promise<{ params: Record<string, unknown> | unknown[]; data: { siteHash: string; siteId: string; }; options: Record<string, unknown> | unknown[]; status: number; message: string; count: number; total: number; totalResults: number; }>; }; /** * Health Data Operations * @description Direct access to health check data without response metadata */ healthData: { /** * Get health check data without response metadata * @returns Promise<unknown> Health status data directly */ check: () => Promise<{ siteHash: string; siteId: string; }>; /** * Get ping data without response metadata * @returns Promise<unknown> Ping response data directly */ ping: () => Promise<"pong">; }; /** * Advanced item search operations */ itemSearch: { /** * Perform comprehensive item search with advanced filtering * @param params Search parameters including query, filters, and options * @returns Promise<ItemSearchData> * * @example * ```typescript * // Basic search * const results = await api.opensearch.itemSearch.search({ * q: 'electrical wire', * searchType: 'query', * size: 20 * }); * * // Advanced search with filtering * const filtered = await api.opensearch.itemSearch.search({ * q: 'tools', * searchType: 'query', * size: 50, * operator: 'AND', * filters: JSON.stringify([{attributeUid: 123, attributeValueUid: 456}]), * classId5List: '1,2,3', * from: 0 * }); * * console.log(`Found ${results.totalResults} items`); * results.items.forEach(item => { * console.log(`${item.itemId}: ${item.itemDesc} (score: ${item.score})`); * }); * ``` */ search: (params: { q: string; edgeCache?: 3 | 2 | 4 | 1 | "1" | 5 | 8 | "2" | "3" | "4" | "5" | "8" | undefined; sort?: string | undefined; limit?: number | undefined; offset?: number | undefined; fields?: string | undefined; searchType?: "query" | "similarity" | undefined; cacheTtl?: number | undefined; cacheSiteId?: string | undefined; classId5ExcludeList?: string | undefined; classId5List?: string | undefined; filters?: string | undefined; from?: number | undefined; itemCategoryUidList?: string | undefined; operator?: "AND" | "OR" | undefined; parentCategoryUid?: number | undefined; size?: number | undefined; sourceFieldsList?: string | undefined; tags?: string | undefined; useBrandFolderDoc?: "Y" | "N" | undefined; }) => Promise<{ params: Record<string, unknown> | unknown[]; data: { totalResults: number; items: { invMastUid: number; scoreInt: number; itemId?: string | null | undefined; itemDesc?: string | null | undefined; score?: number | null | undefined; sourceFields?: Record<string, unknown> | unknown[] | undefined; brandFolder?: { assets?: { id?: string | number | undefined; name?: string | null | undefined; attachmentName?: string | null | undefined; cdnLink?: string | null | undefined; layout?: Record<string, unknown> | null | undefined; }[] | undefined; } | undefined; }[]; maxScore: number; took: number; queryStringUid?: number | null | undefined; queryStringRedirectLink?: string | boolean | undefined; }; options: Record<string, unknown> | unknown[]; status: number; message: string; count: number; total: number; totalResults: number; }>; /** * Get search attributes for faceted navigation * @param params Search parameters to determine available attributes * @returns Promise<SearchAttributesData> * * @example * ```typescript * const attributes = await api.opensearch.itemSearch.getAttributes({ * q: 'electrical components', * searchType: 'query' * }); * * attributes.attributes.forEach(attr => { * console.log(`${attr.attributeName}:`); * attr.values.forEach(value => { * console.log(` ${value.attributeValue} (${value.count})`); * }); * }); * ``` */ getAttributes: (params: SearchAttributesParams) => Promise<SearchAttributesResponse>; }; /** * Item index management operations */ items: { /** * List items from the search index * @param params Optional filtering parameters * @returns Promise<ItemsListResponse> * * @example * ```typescript * // List all items (with default pagination) * const items = await api.opensearch.items.list(); * * // List items with filtering * const filteredItems = 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 ${filteredItems.total} total items`); * filteredItems.data.forEach(item => { * console.log(`${item.itemId}: ${item.itemDesc}`); * }); * ``` */ list: (params?: { edgeCache?: 3 | 2 | 4 | 1 | "1" | 5 | 8 | "2" | "3" | "4" | "5" | "8" | undefined; limit?: number | undefined; offset?: number | undefined; statusCd?: 704 | 700 | 705 | undefined; itemId?: string | undefined; online?: "Y" | "N" | undefined; } | undefined) => Promise<{ params: Record<string, unknown> | unknown[]; data: { inv_mast_uid: number; online: "Y" | "N"; stock_status: "in_stock" | "out_of_stock"; combo: string; combo_hash: string; class_id1?: string | null | undefined; class_id2?: string | null | undefined; class_id3?: string | null | undefined; class_id4?: string | null | undefined; class_id5?: string | null | undefined; attributes?: { name_string: string; value_string: string; value_original?: string | null | undefined; }[] | undefined; item_id?: string | null | undefined; tags?: string[] | undefined; item_desc?: string | null | undefined; extended_desc?: string | null | undefined; display_desc?: string | null | undefined; price1?: number | null | undefined; price2?: number | null | undefined; price3?: number | null | undefined; price4?: number | null | undefined; price5?: number | null | undefined; price6?: number | null | undefined; price7?: number | null | undefined; price8?: number | null | undefined; price9?: number | null | undefined; price10?: number | null | undefined; keywords?: string | null | undefined; brand_name?: string | null | undefined; manufacturer_name?: string | null | undefined; part_number?: string | null | undefined; unspsc_code?: string | null | undefined; upc_or_ean_id?: string | null | undefined; supplier_name?: string | null | undefined; qty_shipped_in_past_12_months?: number | null | undefined; order_in_past_12_months?: number | null | undefined; customer_part_numbers?: string | string[] | undefined; supplier_part_numbers?: string | null | undefined; alternate_codes?: string | null | undefined; item_categories?: number[] | undefined; item_category_tree?: string[] | undefined; category_score?: number | undefined; user_defined_fields?: { name_string: string; value_string: string; }[] | undefined; names?: string[] | undefined; }[]; options: Record<string, unknown> | unknown[]; status: number; message: string; count: number; total: number; totalResults: number; }>; /** * Get a specific item document from the search index * @param invMastUid Inventory master unique identifier * @returns Promise<ItemDetail> * * @example * ```typescript * const item = await api.opensearch.items.get(123456); * console.log(`Item: ${item.itemId} - ${item.itemDesc}`); * console.log(`Online: ${item.online}, Status: ${item.statusCd}`); * * if (item.keywords) { * console.log(`Keywords: ${item.keywords}`); * } * ``` */ get: (id: string | number, params?: import("../../core/base-client").CacheParams | undefined) => Promise<{ params: Record<string, unknown> | unknown[]; data: { dateCreated: string; dateLastModified: string; statusCd: number; updateCd: number; processCd: number; invMastUid: number; online: "Y" | "N"; indexCd: number; indexStatusCd: number; dateLastChecked: string; embeddingCd: number; itemId?: string | null | undefined; classId5?: string | null | undefined; doc?: string | null | undefined; docHash?: string | null | undefined; indexHash?: string | null | undefined; location?: string | null | undefined; uuid?: string | null | undefined; }; options: Record<string, unknown> | unknown[]; status: number; message: string; count: number; total: number; totalResults: number; }>; /** * Update a specific item document in the search index * @param invMastUid Inventory master unique identifier * @param data Update data (statusCd and/or processCd) * @returns Promise<ItemOperationResponse> * * @example * ```typescript * const result = await api.opensearch.items.update(123456, { * statusCd: 704, * processCd: 704 * }); * console.log(`Updated item: ${result.data.itemId}`); * ``` */ update: (id: string | number, data: { statusCd?: 704 | 700 | 705 | undefined; processCd?: 704 | 700 | 705 | 1185 | undefined; }) => Promise<{ params: Record<string, unknown> | unknown[]; data: { dateCreated: string; dateLastModified: string; statusCd: number; updateCd: number; processCd: number; invMastUid: number; online: "Y" | "N"; indexCd: number; indexStatusCd: number; dateLastChecked: string; embeddingCd: number; itemId?: string | null | undefined; classId5?: string | null | undefined; doc?: string | null | undefined; docHash?: string | null | undefined; indexHash?: string | null | undefined; location?: string | null | undefined; uuid?: string | null | undefined; }; options: Record<string, unknown> | unknown[]; status: number; message: string; count: number; total: number; totalResults: number; }>; /** * Refresh a specific item document from the source database * @param invMastUid Inventory master unique identifier * @returns Promise<ItemRefreshResponse> * * @example * ```typescript * const result = await api.opensearch.items.refresh(123456); * console.log(`Refreshed item: ${result.data.itemId}`); * ``` */ refresh: (id: string | number, params?: import("../../core/base-client").CacheParams | undefined) => Promise<{ params: Record<string, unknown> | unknown[]; data: { dateCreated: string; dateLastModified: string; statusCd: number; updateCd: number; processCd: number; invMastUid: number; online: "Y" | "N"; indexCd: number; indexStatusCd: number; dateLastChecked: string; embeddingCd: number; itemId?: string | null | undefined; classId5?: string | null | undefined; doc?: string | null | undefined; docHash?: string | null | undefined; indexHash?: string | null | undefined; location?: string | null | undefined; uuid?: string | null | undefined; }; options: Record<string, unknown> | unknown[]; status: number; message: string; count: number; total: number; totalResults: number; }>; /** * Trigger batch refresh of items in the search index * @returns Promise<ItemOperationResult> * * @example * ```typescript * const result = await api.opensearch.items.refreshAll(); * if (result.success) { * console.log('Batch refresh initiated'); * } * ``` */ refreshAll: () => Promise<ItemOperationResponse>; }; /** * @deprecated Use health.check() instead */ getHealthCheck: () => Promise<{ params: Record<string, unknown> | unknown[]; data: { siteHash: string; siteId: string; }; options: Record<string, unknown> | unknown[]; status: number; message: string; count: number; total: number; totalResults: number; }>; /** * @deprecated Use health.ping() instead */ ping: () => Promise<{ params: Record<string, unknown> | unknown[]; data: "pong"; options: Record<string, unknown> | unknown[]; status: number; message: string; count: number; total: number; totalResults: number; }>; } //# sourceMappingURL=client.d.ts.map