UNPKG

@ericblade/mws-advanced

Version:

Modern, fully featured, very opinionated node javascript Amazon MWS API based on @ericblade/mws-simple

247 lines (238 loc) 7.46 kB
const path = require('path'); const generateEndpoints = require('./endpoints-utils'); const scriptName = path.basename(__filename, '.js'); const categoryName = `${scriptName.charAt(0).toUpperCase()}${scriptName.slice(1)}`; const apiVersion = '2013-09-01'; const endpointList = [ 'ListOrders', 'ListOrdersByNextToken', 'GetOrder', 'ListOrderItems', 'ListOrderItemsByNextToken', 'GetServiceStatus', ]; const newEndpointList = { ListOrders: { throttle: { maxInFlight: 6, restoreRate: 1, }, params: { CreatedAfter: { type: 'xs:dateTime', required: false, // TODO: Yes, if LastUpdatedAfter is not specified. Specifying both CreatedAfter and LastUpdatedAfter returns an error. }, CreatedBefore: { type: 'xs:dateTime', required: false, // TODO: Must be later than CreatedAfter }, LastUpdatedAfter: { type: 'xs:dateTime', required: false, // TODO: Yes, if CreatedAfter is not specified. Specifying both CreatedAfter and LastUpdatedAfter returns an error. If LastUpdatedAfter is specified, then BuyerEmail and SellerOrderId cannot be specified. }, LastUpdatedBefore: { type: 'xs:dateTime', required: false, // TODO: msut be later than LastUpdatedAfter }, OrderStatus: { type: 'xs:string', required: false, values: ['PendingAvailability', 'Pending', 'Unshipped', 'PartiallyShipped', 'Shipped', 'InvoiceUnconfirmed', 'Canceled', 'Unfulfillable'], list: 'OrderStatus.Status', }, MarketplaceId: { type: 'xs:string', required: true, list: 'MarketplaceId.Id', }, FulfillmentChannel: { type: 'xs:string', required: false, list: 'FulfillmentChannel.Channel', }, PaymentMethod: { type: 'xs:string', required: false, list: 'PaymentMethod.Method', }, BuyerEmail: { type: 'xs:string', required: false, // TODO: If BuyerEmail is specified, then FulfillmentChannel, OrderStatus, PaymentMethod, LastUpdatedAfter, LastUpdatedBefore, and SellerOrderId cannot be specified. }, SellerOrderId: { type: 'xs:string', required: false, // TODO: If SellerOrderId is specified, then FulfillmentChannel, OrderStatus, PaymentMethod, LastUpdatedAfter, LastUpdatedBefore, and BuyerEmail cannot be specified. }, MaxResultsPerPage: { type: 'xs:positiveInteger', required: false, }, TFMShipmentStatus: { // only available in China market type: 'xs:string', required: false, values: ['PendingPickUp', 'LabelCanceled', 'PickedUp', 'AtDestinationFC', 'Delivered', 'RejectedByBuyer', 'Undeliverable', 'ReturnedToSeller', 'Lost'], }, }, returns: { NextToken: { type: 'xs:string', required: false, }, LastUpdatedBefore: { type: 'xs:dateTime', required: false, // ONE OF: LastUpdatedBefore, CreatedBefore }, CreatedBefore: { type: 'xs:dateTime', required: false, // ONE OF: LastUpdatedBefore, CreatedBefore }, Orders: { type: 'Order', required: false, list: 'Orders', }, }, }, ListOrdersByNextToken: { throttle: { maxInFlight: 6, restoreRate: 1, }, params: { NextToken: { type: 'xs:string', required: true, }, }, returns: { NextToken: { type: 'xs:string', required: false, }, LastUpdatedBefore: { type: 'xs:dateTime', required: false, // ONE OF: LastUpdatedBefore, CreatedBefore }, CreatedBefore: { type: 'xs:dateTime', required: false, // ONE OF: LastUpdatedBefore, CreatedBefore }, Orders: { type: 'Order', required: false, list: 'Orders', }, }, }, GetOrder: { throttle: { maxInFlight: 6, restoreRate: 1, }, params: { AmazonOrderId: { type: 'xs:string', required: true, list: 'AmazonOrderId.Id', listMax: 50, }, }, returns: { Orders: { type: 'Order', required: true, }, }, }, ListOrderItems: { throttle: { maxInFlight: 30, restoreRate: 30, }, params: { AmazonOrderId: { type: 'xs:string', required: true, }, }, returns: { NextToken: { type: 'xs:string', required: false, }, AmazonOrderId: { // TODO: we could implement format-specifiers as well, this must be 3-7-7 .. type: 'xs:string', required: true, }, OrderItems: { type: 'OrderItem', required: true, }, }, }, ListOrderItemsByNextToken: { throttle: { maxInFlight: 30, restoreRate: 30, }, params: { NextToken: { type: 'xs:string', required: true, }, }, returns: { NextToken: { type: 'xs:string', required: false, }, AmazonOrderId: { // TODO: we could implement format-specifiers as well, this must be 3-7-7 .. type: 'xs:string', required: true, }, OrderItems: { type: 'OrderItem', required: true, }, }, }, GetServiceStatus: { throttle: { maxInFlight: 2, restoreRate: 0.20, }, params: { }, returns: { Status: { type: 'xs:string', required: true, // TODO: mws docs don't specify which items are required here, assume status would be? }, Timestamp: { type: 'xs:dateTime', required: true, }, MessageId: { type: 'xs:string', required: false, }, Messages: { type: 'Message', required: false, }, }, }, }; /** * @private */ const endpoints = generateEndpoints( categoryName, apiVersion, endpointList, newEndpointList, ); module.exports = endpoints;