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