UNPKG

amazon-seller-mcp

Version:

Model Context Protocol (MCP) client for Amazon Selling Partner API

280 lines (279 loc) 6.6 kB
/** * Inventory API client for Amazon Selling Partner API */ import { BaseApiClient } from './base-client.js'; import { AuthConfig } from '../types/auth.js'; /** * Parameters for retrieving inventory */ export interface GetInventoryParams { /** * List of seller SKUs to filter by (optional) */ sellerSkus?: string[]; /** * Marketplace ID (defaults to the one in config) */ marketplaceId?: string; /** * List of ASINs to filter by (optional) */ asins?: string[]; /** * List of fulfillment channels to filter by (optional) */ fulfillmentChannels?: Array<'AMAZON' | 'SELLER'>; /** * Date-time filter for items updated after this time */ startDateTime?: Date; /** * Date-time filter for items updated before this time */ endDateTime?: Date; /** * Page size (1-100) */ pageSize?: number; /** * Page token for pagination */ nextToken?: string; } /** * Parameters for updating inventory */ export interface UpdateInventoryParams { /** * Seller SKU */ sku: string; /** * Inventory quantity */ quantity: number; /** * Fulfillment channel ('AMAZON' or 'SELLER') */ fulfillmentChannel: 'AMAZON' | 'SELLER'; /** * Restock date (optional, for future inventory) */ restockDate?: Date; } /** * Parameters for setting inventory replenishment settings */ export interface SetInventoryReplenishmentParams { /** * Seller SKU */ sku: string; /** * Restock level (minimum quantity before reordering) */ restockLevel: number; /** * Target level (desired quantity after reordering) */ targetLevel: number; /** * Maximum inventory level */ maximumLevel?: number; /** * Lead time in days */ leadTimeDays?: number; } /** * Inventory item */ export interface InventoryItem { /** * Seller SKU */ sku: string; /** * ASIN */ asin?: string; /** * Condition of the item */ condition?: string; /** * Inventory details by fulfillment channel */ inventoryDetails: Array<{ /** * Fulfillment channel code ('AMAZON' or 'SELLER') */ fulfillmentChannelCode: 'AMAZON' | 'SELLER'; /** * Available quantity */ quantity: number; /** * Reserved quantity (e.g., for pending orders) */ reservedQuantity?: number; /** * Restock date (for future inventory) */ restockDate?: string; /** * Replenishment settings */ replenishmentSettings?: { /** * Restock level (minimum quantity before reordering) */ restockLevel?: number; /** * Target level (desired quantity after reordering) */ targetLevel?: number; /** * Maximum inventory level */ maximumLevel?: number; /** * Lead time in days */ leadTimeDays?: number; }; }>; /** * Last updated timestamp */ lastUpdatedTime: string; } /** * Inventory details */ export interface InventoryDetails { /** * Inventory items */ items: InventoryItem[]; /** * Next token for pagination */ nextToken?: string; } /** * Inventory update result */ export interface InventoryUpdateResult { /** * Seller SKU */ sku: string; /** * Fulfillment channel */ fulfillmentChannel: 'AMAZON' | 'SELLER'; /** * Update status */ status: 'SUCCESSFUL' | 'FAILED'; /** * Error message (if status is FAILED) */ errorMessage?: string; /** * Error code (if status is FAILED) */ errorCode?: string; } /** * Inventory replenishment update result */ export interface InventoryReplenishmentUpdateResult { /** * Seller SKU */ sku: string; /** * Update status */ status: 'SUCCESSFUL' | 'FAILED'; /** * Error message (if status is FAILED) */ errorMessage?: string; /** * Error code (if status is FAILED) */ errorCode?: string; } /** * Inventory API client for Amazon Selling Partner API */ export declare class InventoryClient extends BaseApiClient { /** * API version */ private readonly apiVersion; /** * Original authentication configuration */ private readonly authConfig; /** * Create a new InventoryClient instance * * @param authConfig Authentication configuration */ constructor(authConfig: AuthConfig); /** * Gets the client configuration * * @returns Authentication configuration */ getConfig(): AuthConfig; /** * Get inventory * * @param params Parameters for retrieving inventory * @returns Promise resolving to the inventory details */ getInventory(params?: GetInventoryParams): Promise<InventoryDetails>; /** * Get inventory for a specific SKU * * @param sku Seller SKU * @returns Promise resolving to the inventory item */ getInventoryBySku(sku: string): Promise<InventoryItem>; /** * Update inventory quantity * * @param params Parameters for updating inventory * @param emitNotification Whether to emit a notification event (default: true) * Note: This parameter is used by the notification system when it overrides this method * @returns Promise resolving to the update result */ updateInventory(params: UpdateInventoryParams, _emitNotification?: boolean): Promise<InventoryUpdateResult>; /** * Set inventory replenishment settings * * @param params Parameters for setting inventory replenishment settings * @returns Promise resolving to the update result */ setInventoryReplenishment(params: SetInventoryReplenishmentParams): Promise<InventoryReplenishmentUpdateResult>; /** * Validate inventory update data * * @param params Inventory update parameters to validate * @throws Error if validation fails */ private validateInventoryUpdateData; /** * Validate replenishment data * * @param params Replenishment parameters to validate * @throws Error if validation fails */ private validateReplenishmentData; }