Seven controllers that keep one catalog consistent across external marketplaces. The problem it solves is the one every multi-channel seller has: the same SKU with different category taxonomies, different attribute names, different prices, and stock that must not be sold twice.
Supported channels include Amazon, eBay, Etsy, Walmart, Shopify, Facebook and Google Merchant Center.
Channels
/sales-channel/channelsJWT/sales-channel/channels/configuredJWT/sales-channel/channels/statusJWT/sales-channel/channels/:channelId/statusJWT/sales-channel/channels/:channelId/enableJWT/sales-channel/channels/:channelId/disableJWT/sales-channel/sync/historyJWTGeneric escape hatches for channel-specific behavior:
/sales-channel/channels/:channelId/executeJWT/sales-channel/channels/bulk-executeJWTMappings
The translation layer between your catalog and each marketplace's taxonomy.
Categories
/sales-channel/mappings/categoriesJWT/sales-channel/mappings/categoriesJWT/sales-channel/mappings/categories/:sourceCategoryJWT/sales-channel/mappings/categories/:sourceCategory/channel/:channelIdJWTAttributes
/sales-channel/mappings/attributesJWT/sales-channel/mappings/attributesJWT/sales-channel/mappings/attributes/:sourceAttributeJWTTemplates
/sales-channel/mappings/templatesJWT/sales-channel/mappings/templatesJWT/sales-channel/mappings/apply-template/:templateIdJWTTransform and validate
/sales-channel/mappings/transform/:channelIdJWT/sales-channel/mappings/validate/:channelIdJWT/sales-channel/mappings/validate/:channelId/bulkJWTtransform shows exactly what would be sent to a channel; validate checks a product against that channel's requirements before a rejected listing costs you a day. Validate in bulk before a large push.
Inventory sync
A master inventory record per SKU, projected out to each channel.
/sales-channel/inventory/:skuJWT/sales-channel/inventory/:skuJWT/sales-channel/inventory/bulk/updateJWT/sales-channel/inventory/:sku/channelsJWT/sales-channel/inventory/alerts/low-stockJWTReservations, so a checkout in progress on one channel is not sold from another:
/sales-channel/inventory/reserveJWT/sales-channel/inventory/reservation/:reservationId/commitJWT/sales-channel/inventory/reservation/:reservationId/releaseJWTPush and pull:
/sales-channel/inventory/sync/:channelIdJWT/sales-channel/inventory/syncJWT/sales-channel/inventory/pull/:channelIdJWTA reservation that is neither committed nor released holds stock. If a checkout can abandon, make sure something releases the reservation — nothing expires it for you.
Orders
/sales-channel/orders/sync/:channelIdJWT/sales-channel/orders/syncJWT/sales-channel/ordersJWT/sales-channel/orders/:orderIdJWT/sales-channel/orders/:orderId/statusJWT/sales-channel/orders/stats/summaryJWTOrders from every marketplace land in one list, so fulfillment does not care where a sale came from.
Pricing
/sales-channel/pricing/rulesJWT/sales-channel/pricing/rulesJWT/sales-channel/pricing/calculate/:channelIdJWT/sales-channel/pricing/calculate/allJWT/sales-channel/pricing/sync/:channelIdJWT/sales-channel/pricing/history/:skuJWTRules exist because marketplace fees differ — the same margin needs a different list price on each channel.
Competitor tracking:
/sales-channel/pricing/competitorJWT/sales-channel/pricing/competitor/:skuJWT/sales-channel/pricing/compare/:skuJWTListing optimization
/sales-channel/optimization/analyze/:channelIdJWT/sales-channel/optimization/analyze/:channelId/bulkJWT/sales-channel/optimization/scoresJWT/sales-channel/optimization/suggestionsJWT/sales-channel/optimization/suggestions/:suggestionId/applyJWT/sales-channel/optimization/summaryJWTScores a listing against the channel's own conventions — title length, image count, missing attributes — and suggests fixes.
Analytics
/sales-channel/analytics/dashboardJWT/sales-channel/analytics/summaryJWT/sales-channel/analytics/compareJWT/sales-channel/analytics/metricsJWT/sales-channel/analytics/metrics/sync/:channelIdJWT/sales-channel/analytics/productsJWT/sales-channel/analytics/products/:sku/:channelIdJWTcompare puts channels side by side — which is the question that decides where the next listing effort goes.