docs
/
AppEngine API

Sales channels

Selling the same catalog on Amazon, eBay, Etsy and elsewhere — mappings, inventory sync, order aggregation and pricing.

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

GET/sales-channel/channelsJWT
GET/sales-channel/channels/configuredJWT
GET/sales-channel/channels/statusJWT
GET/sales-channel/channels/:channelId/statusJWT
POST/sales-channel/channels/:channelId/enableJWT
POST/sales-channel/channels/:channelId/disableJWT
GET/sales-channel/sync/historyJWT

Generic escape hatches for channel-specific behavior:

POST/sales-channel/channels/:channelId/executeJWT
POST/sales-channel/channels/bulk-executeJWT

Mappings

The translation layer between your catalog and each marketplace's taxonomy.

Categories

POST/sales-channel/mappings/categoriesJWT
GET/sales-channel/mappings/categoriesJWT
GET/sales-channel/mappings/categories/:sourceCategoryJWT
GET/sales-channel/mappings/categories/:sourceCategory/channel/:channelIdJWT

Attributes

POST/sales-channel/mappings/attributesJWT
GET/sales-channel/mappings/attributesJWT
GET/sales-channel/mappings/attributes/:sourceAttributeJWT

Templates

POST/sales-channel/mappings/templatesJWT
GET/sales-channel/mappings/templatesJWT
POST/sales-channel/mappings/apply-template/:templateIdJWT

Transform and validate

POST/sales-channel/mappings/transform/:channelIdJWT
POST/sales-channel/mappings/validate/:channelIdJWT
GET/sales-channel/mappings/validate/:channelId/bulkJWT

transform 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.

GET/sales-channel/inventory/:skuJWT
PUT/sales-channel/inventory/:skuJWT
PUT/sales-channel/inventory/bulk/updateJWT
GET/sales-channel/inventory/:sku/channelsJWT
GET/sales-channel/inventory/alerts/low-stockJWT

Reservations, so a checkout in progress on one channel is not sold from another:

POST/sales-channel/inventory/reserveJWT
POST/sales-channel/inventory/reservation/:reservationId/commitJWT
POST/sales-channel/inventory/reservation/:reservationId/releaseJWT

Push and pull:

POST/sales-channel/inventory/sync/:channelIdJWT
POST/sales-channel/inventory/syncJWT
POST/sales-channel/inventory/pull/:channelIdJWT
Reserve, then commit or release

A 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

POST/sales-channel/orders/sync/:channelIdJWT
POST/sales-channel/orders/syncJWT
GET/sales-channel/ordersJWT
GET/sales-channel/orders/:orderIdJWT
PUT/sales-channel/orders/:orderId/statusJWT
GET/sales-channel/orders/stats/summaryJWT

Orders from every marketplace land in one list, so fulfillment does not care where a sale came from.

Pricing

POST/sales-channel/pricing/rulesJWT
GET/sales-channel/pricing/rulesJWT
POST/sales-channel/pricing/calculate/:channelIdJWT
POST/sales-channel/pricing/calculate/allJWT
POST/sales-channel/pricing/sync/:channelIdJWT
GET/sales-channel/pricing/history/:skuJWT

Rules exist because marketplace fees differ — the same margin needs a different list price on each channel.

Competitor tracking:

POST/sales-channel/pricing/competitorJWT
GET/sales-channel/pricing/competitor/:skuJWT
GET/sales-channel/pricing/compare/:skuJWT

Listing optimization

POST/sales-channel/optimization/analyze/:channelIdJWT
POST/sales-channel/optimization/analyze/:channelId/bulkJWT
GET/sales-channel/optimization/scoresJWT
GET/sales-channel/optimization/suggestionsJWT
PUT/sales-channel/optimization/suggestions/:suggestionId/applyJWT
GET/sales-channel/optimization/summaryJWT

Scores a listing against the channel's own conventions — title length, image count, missing attributes — and suggests fixes.

Analytics

GET/sales-channel/analytics/dashboardJWT
GET/sales-channel/analytics/summaryJWT
GET/sales-channel/analytics/compareJWT
GET/sales-channel/analytics/metricsJWT
POST/sales-channel/analytics/metrics/sync/:channelIdJWT
GET/sales-channel/analytics/productsJWT
POST/sales-channel/analytics/products/:sku/:channelIdJWT

compare puts channels side by side — which is the question that decides where the next listing effort goes.