UNPKG

@ericblade/mws-advanced

Version:

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

504 lines (494 loc) 14.1 kB
const path = require('path'); const generateEndpoints = require('./endpoints-utils'); const constants = require('./constants.js'); const scriptName = path.basename(__filename, '.js'); const categoryName = `${scriptName.charAt(0).toUpperCase()}${scriptName.slice(1)}`; const apiVersion = '2009-01-01'; const endpointList = [ 'RequestReport', 'GetReportRequestList', 'GetReportRequestListByNextToken', 'GetReportRequestCount', 'CancelReportRequests', 'GetReportList', 'GetReportListByNextToken', 'GetReportCount', 'GetReport', 'ManageReportSchedule', 'GetReportScheduleList', 'GetReportScheduleListByNextToken', 'GetReportScheduleCount', 'UpdateReportAcknowledgements', ]; const newEndpointList = { RequestReport: { throttle: { maxInFlight: 15, restoreRate: 1, }, params: { ReportType: { type: 'xs:string', required: true, }, StartDate: { type: 'xs:dateTime', required: false, }, EndDate: { type: 'xs:dateTime', required: false, }, ReportOptions: { type: 'xs:string', required: false, }, MarketplaceIdList: { type: 'xs:string', list: 'MarketplaceIdList.Id', required: false, // TODO: only available in NA and EU regions }, }, returns: { ReportRequestInfo: { type: 'ReportRequestInfo', required: true, // TODO: Docs don't specifically state it's required. what if empty? }, }, }, GetReportRequestList: { throttle: { maxInFlight: 10, restoreRate: 0.75, // 1 request every 45 seconds = 3/4 of a request per minute }, params: { ReportRequestIdList: { type: 'xs:string', required: false, list: 'ReportRequestIdList.Id', }, ReportTypeList: { type: 'xs:string', required: false, list: 'ReportTypeList.Type', values: [ ...constants.REQUEST_REPORT_TYPES, ...constants.NOREQUEST_REPORT_TYPES, ...constants.SCHEDULED_REPORT_TYPES, ], }, ReportProcessingStatusList: { type: 'xs:string', required: false, list: 'ReportProcessingStatusList.Status', values: constants.REPORT_PROCESSING_STATUS_TYPES, }, MaxCount: { type: 'xs:positiveInteger', // Documentation page says 'xs:nonNegativeInteger', but the range starts at 1, which makes it a xs:positiveInteger required: false, maxValue: 100, }, RequestedFromDate: { type: 'xs:dateTime', required: false, }, RequestedToDate: { type: 'xs:dateTime', required: false, }, }, returns: { NextToken: { type: 'xs:string', required: false, }, HasNext: { type: 'xs:boolean', // TODO: need to add xs:boolean to the validate function.. does it come in as a string ("True"/"False") or a bool value? required: true, }, ReportRequestInfo: { type: 'ReportRequestInfo', required: true, }, }, }, GetReportRequestListByNextToken: { throttle: { maxInFlight: 30, restoreRate: 30, }, params: { NextToken: { type: 'xs:string', required: true, }, }, returns: { NextToken: { type: 'xs:string', required: false, }, HasNext: { type: 'xs:boolean', // TODO: need to add xs:boolean to the validate function.. does it come in as a string ("True"/"False") or a bool value? required: true, }, ReportRequestInfo: { type: 'ReportRequestInfo', required: true, }, }, }, GetReportRequestCount: { throttle: { maxInFlight: 10, restoreRate: 0.75, }, params: { ReportTypeList: { type: 'xs:string', required: false, values: constants.REQUEST_REPORT_TYPES, }, ReportProcessingStatusList: { type: 'xs:string', required: false, values: constants.REPORT_PROCESSING_STATUS_TYPES, }, RequestedFromDate: { type: 'xs:dateTime', required: false, }, RequestedToDate: { type: 'xs:dateTime', required: false, }, }, returns: { Count: { type: 'xs:nonNegativeInteger', required: true, }, }, }, CancelReportRequests: { throttle: { maxInFlight: 10, restoreRate: 0.75, }, params: { ReportRequestIdList: { type: 'xs:string', required: false, list: 'ReportRequestIdList.Id', }, ReportTypeList: { type: 'xs:string', required: false, values: constants.REQUEST_REPORT_TYPES, list: 'ReportTypeList.Type', }, ReportProcessingStatusList: { type: 'xs:string', required: false, values: constants.REPORT_PROCESSING_STATUS_TYPES, }, RequestedFromDate: { type: 'xs:dateTime', required: false, }, RequestedToDate: { type: 'xs:dateTime', required: false, }, }, returns: { Count: { type: 'xs:nonNegativeInteger', required: true, }, ReportRequestInfo: { type: 'ReportRequestInfo', required: true, }, }, }, GetReportList: { throttle: { maxInFlight: 10, restoreRate: 1, }, params: { MaxCount: { type: 'xs:positiveInteger', // docs say nonNegativeInteger, range 1-100 required: false, maxValue: 100, }, ReportTypeList: { type: 'xs:string', required: false, values: [ ...constants.REQUEST_REPORT_TYPES, ...constants.NOREQUEST_REPORT_TYPES, ...constants.SCHEDULED_REPORT_TYPES, ], list: 'ReportTypeList.Type', }, Acknowledged: { type: 'xs:boolean', required: false, }, ReportRequestIdList: { type: 'xs:string', required: false, list: 'ReportRequestIdList.Id', }, AvailableFromDate: { type: 'xs:dateTime', required: false, }, AvailableToDate: { type: 'xs:dateTime', required: false, }, }, returns: { NextToken: { type: 'xs:string', required: false, }, HasNext: { type: 'xs:boolean', required: true, }, ReportInfo: { type: 'ReportInfo', required: true, }, }, }, GetReportListByNextToken: { throttle: { maxInFlight: 30, restoreRate: 30, }, params: { NextToken: { type: 'xs:string', required: true, }, }, returns: { NextToken: { type: 'xs:string', required: false, }, HasNext: { type: 'xs:boolean', required: true, }, ReportInfo: { type: 'ReportInfo', required: true, }, }, }, GetReportCount: { throttle: { maxInFlight: 10, restoreRate: 0.75, }, params: { ReportTypeList: { type: 'xs:string', required: false, list: 'ReportTypeList.Type', values: [ ...constants.REQUEST_REPORT_TYPES, ...constants.NOREQUEST_REPORT_TYPES, ...constants.SCHEDULED_REPORT_TYPES, ], }, Acknowledged: { type: 'xs:boolean', required: false, }, AvailableFromDate: { type: 'xs:dateTime', required: false, }, AvailableToDate: { type: 'xs:dateTime', required: false, }, }, returns: { Count: { // Return types are not documented on this page! Assuming from example. type: 'xs:nonNegativeInteger', required: true, }, }, }, GetReport: { throttle: { maxInFlight: 15, restoreRate: 1, }, params: { ReportId: { type: 'xs:string', required: true, }, }, returns: { Report: { type: 'xs:string', required: true, }, }, }, ManageReportSchedule: { throttle: { maxInFlight: 10, restoreRate: 0.75, }, params: { ReportType: { type: 'xs:string', required: true, values: constants.SCHEDULED_REPORT_TYPES, }, Schedule: { type: 'xs:string', required: true, values: constants.SCHEDULE_TYPES, }, ScheduleDate: { type: 'xs:dateTime', required: false, }, }, returns: { Count: { type: 'xs:nonNegativeInteger', required: true, }, ReportSchedule: { type: 'ReportSchedule', required: true, }, }, }, GetReportScheduleList: { throttle: { maxInFlight: 10, restoreRate: 0.75, }, params: { ReportTypeList: { type: 'xs:string', required: false, values: constants.SCHEDULED_REPORT_TYPES, }, }, returns: { NextToken: { type: 'xs:string', required: false, }, HasNext: { type: 'xs:boolean', required: true, }, ReportSchedule: { type: 'ReportSchedule', required: true, }, }, }, GetReportScheduleListByNextToken: { // Doc says: "this operation can never be called ... it is included for future compatibility" throttle: { maxInFlight: 1, restoreRate: 1, }, params: { DO_NOT_USE_THIS: { type: 'DO NOT USE GETREPORTSCHEDULELISTBYNEXTTOKEN', required: true, }, }, returns: { // NextToken: { // type: 'xs:string', // required: false, // }, // HasNext: { // type: 'xs:boolean', // required: true, // }, // ReportSchedule: { // type: 'ReportSchedule', // required: true, // } }, }, GetReportScheduleCount: { throttle: { maxInFlight: 10, restoreRate: 0.75, }, params: { ReportTypeList: { type: 'xs:string', required: false, values: [ ...constants.SCHEDULED_REPORT_TYPES, ...constants.REQUEST_REPORT_TYPES, ], list: 'ReportTypeList.Type', }, }, returns: { Count: { type: 'xs:nonNegativeInteger', required: true, }, }, }, UpdateReportAcknowledgements: { throttle: { maxInFlight: 10, restoreRate: 0.75, }, params: { ReportIdList: { type: 'xs:string', required: true, list: 'ReportIdList.Id', }, Acknowledged: { type: 'xs:boolean', required: true, }, }, returns: { Count: { type: 'xs:nonNegativeInteger', required: true, }, ReportInfo: { type: 'ReportInfo', required: true, }, }, }, }; /** * @private */ const endpoints = generateEndpoints( categoryName, apiVersion, endpointList, newEndpointList, ); module.exports = endpoints;