amazon-seller-mcp
Version:
Model Context Protocol (MCP) client for Amazon Selling Partner API
280 lines (279 loc) • 6.6 kB
TypeScript
/**
* 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;
}