npm.io
0.0.42 • Published 15h ago

@86d-app/amazon

Licence
MIT
Version
0.0.42
Deps
1
Size
149 kB
Vulns
0
Weekly
0
Stars
5

86d

The Modern Foundation for Commerce

X · LinkedIn


This project is under active development and is not ready for production use. Please proceed with caution. Use at your own risk.

Documentation: 86d.app/docs/modules/amazon

Amazon Module

Amazon Seller Central integration for managing product listings, order fulfillment, and inventory synchronization across FBA and FBM channels.

Installation

npm install @86d-app/amazon

Usage

import amazon from "@86d-app/amazon";

const module = amazon({
  sellerId: "A1B2C3D4E5F6G7",
  mwsAuthToken: "amzn.mws.xxx",
  marketplaceId: "ATVPDKIKX0DER",
  region: "NA",
});

Configuration

Option Type Default Description
sellerId string - Amazon Seller ID
mwsAuthToken string - MWS Auth Token
marketplaceId string - Amazon Marketplace ID
region string "NA" Amazon region

Store Endpoints

Method Path Description
POST /amazon/webhooks Receive Amazon webhook notifications

Admin Endpoints

Method Path Description
GET /admin/amazon/listings List all listings
POST /admin/amazon/listings/create Create a new listing
GET /admin/amazon/listings/:id Get listing by ID
POST /admin/amazon/listings/:id/update Update a listing
POST /admin/amazon/listings/:id/delete Delete a listing
GET /admin/amazon/orders List all orders
POST /admin/amazon/orders/:id/ship Ship an order
POST /admin/amazon/orders/:id/cancel Cancel an order
POST /admin/amazon/inventory/sync Trigger inventory sync
GET /admin/amazon/inventory/health Get inventory health report
GET /admin/amazon/stats Get channel statistics

Controller API

interface AmazonController extends ModuleController {
  createListing(params: { localProductId: string; asin?: string; sku: string; title: string; price: number; ... }): Promise<Listing>;
  updateListing(id: string, params: Partial<Listing>): Promise<Listing | null>;
  deleteListing(id: string): Promise<boolean>;
  getListing(id: string): Promise<Listing | null>;
  getListingByProduct(productId: string): Promise<Listing | null>;
  getListingByAsin(asin: string): Promise<Listing | null>;
  listListings(params?: { status?: ListingStatus; fulfillmentChannel?: FulfillmentChannel; take?: number; skip?: number }): Promise<Listing[]>;
  syncInventory(): Promise<InventorySync>;
  getLastInventorySync(): Promise<InventorySync | null>;
  receiveOrder(params: { amazonOrderId: string; items: unknown[]; orderTotal: number; ... }): Promise<AmazonOrder>;
  getOrder(id: string): Promise<AmazonOrder | null>;
  shipOrder(id: string, trackingNumber: string, carrier: string): Promise<AmazonOrder | null>;
  cancelOrder(id: string): Promise<AmazonOrder | null>;
  listOrders(params?: { status?: AmazonOrderStatus; fulfillmentChannel?: FulfillmentChannel; take?: number; skip?: number }): Promise<AmazonOrder[]>;
  getChannelStats(): Promise<ChannelStats>;
  getInventoryHealth(): Promise<InventoryHealth>;
}

Types

type ListingStatus = "active" | "inactive" | "suppressed" | "incomplete";
type FulfillmentChannel = "FBA" | "FBM";
type ListingCondition = "new" | "used-like-new" | "used-very-good" | "used-good" | "used-acceptable" | "refurbished";
type AmazonOrderStatus = "pending" | "unshipped" | "shipped" | "cancelled" | "returned";
type InventorySyncStatus = "pending" | "syncing" | "synced" | "failed";

Notes

  • Supports both FBA (Fulfilled by Amazon) and FBM (Fulfilled by Merchant) channels.
  • Inventory health tracks low stock (quantity 1-5) and out-of-stock items.
  • The syncInventory() method creates a sync record; connect to Amazon SP-API for actual sync.
  • Buy Box ownership is tracked per listing via the buyBoxOwned field.
  • Net proceeds are calculated as orderTotal minus marketplaceFee.

Keywords