-
Notifications
You must be signed in to change notification settings - Fork 102
/
products.js
162 lines (143 loc) · 5.28 KB
/
products.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/**
* Products API requests and definitions for Amazon's MWS web services.
* For information on using, please see examples folder.
*
* @author Robert Saunders
*/
var mws = require('./mws');
/**
* Construct a Products API request for using with mws.Client.invoke()
*
* @param {String} action Action parameter of request
* @param {Object} params Schemas for all supported parameters
*/
function ProductsRequest(action, params) {
var opts = {
name: 'Products',
group: 'Products',
path: '/Products/2011-10-01',
version: '2011-10-01',
legacy: false,
action: action,
params: params
};
return new mws.Request(opts);
}
/**
* Ojects to represent enum collections used by some request(s)
* @type {Object}
*/
var enums = exports.enums = {
ItemConditions: function() {
return new mws.Enum([ 'New', 'Used', 'Collectible', 'Refurbished', 'Club' ]);
}
};
/**
* Contains brief definitions for unique data type values.
* Can be used to explain input/output to users via tooltips, for example
* @type {Object}
*/
var types = exports.types = {
CompetitivePriceId: {
'1':'New Buy Box Price',
'2':'Used Buy Box Price' },
ServiceStatus: {
'GREEN':'The service is operating normally.',
'GREEN_I':'The service is operating normally + additional info provided',
'YELLOW':'The service is experiencing higher than normal error rates or degraded performance.',
'RED':'The service is unabailable or experiencing extremely high error rates.' },
};
/**
* A collection of currently supported request constructors. Once created and
* configured, the returned requests can be passed to an mws client `invoke` call
* @type {Object}
*/
var calls = exports.requests = {
/**
* Requests the operational status of the Products API section.
*/
GetServiceStatus: function() {
return new ProductsRequest('GetServiceStatus', {});
},
/**
* Returns a list of products and their attributes, ordered by relevancy,
* based on a search query that you specify
*/
ListMatchingProducts: function() {
return new ProductsRequest('ListMatchingProducts', {
MarketplaceId: { name: 'MarketplaceId', required: true},
Query: { name: 'Query', required: true},
QueryContextId: { name: 'QueryContextId'}
});
},
/**
* Returns a list of products and their attributes,
* based on a list of ASIN values that you specify
*/
GetMatchingProduct: function() {
return new ProductsRequest('GetMatchingProduct', {
MarketplaceId: { name: 'MarketplaceId', required: true},
ASINList: { name: 'ASINList.ASIN', list: true, required: true}
});
},
/**
* Returns the current competitive pricing of a product,
* based on the SellerSKU and MarketplaceId that you specify
*/
GetCompetitivePricingForSKU: function() {
return new ProductsRequest('GetCompetitivePricingForSKU', {
MarketplaceId: { name: 'MarketplaceId', required: true},
SellerSKUList: { name: 'SellerSKUList.SellerSKU', list: true, required: true}
});
},
/**
* Same as above, except that it uses a MarketplaceId and an ASIN to uniquely
* identify a product, and it does not return the SKUIdentifier element
*/
GetCompetitivePricingForASIN: function() {
return new ProductsRequest('GetCompetitivePricingForASIN', {
MarketplaceId: { name: 'MarketplaceId', required: true},
ASINList: { name: 'ASINList.ASIN', list: true, required: true}
});
},
/**
* Returns the lowest price offer listings for a specific product by item condition.
*/
GetLowestOfferListingsForSKU: function() {
return new ProductsRequest('GetLowestOfferListingsForSKU', {
MarketplaceId: { name: 'MarketplaceId', required: true},
ItemCondition: { name: 'ItemCondition'},
SellerSKUList: { name: 'SellerSKUList.SellerSKU', list: true, required: true }
});
},
/**
* Same as above but by a list of ASIN's you provide
*/
GetLowestOfferListingsForASIN: function() {
return new ProductsRequest('GetLowestOfferListingsForASIN', {
MarketplaceId: { name: 'MarketplaceId', required: true},
ItemCondition: { name: 'ItemCondition'},
ASINList: { name: 'ASINList.ASIN', list: true, required: true}
});
},
/**
* Returns the product categories that a product belongs to,
* including parent categories back to the root for the marketplace
*/
GetProductCategoriesForSKU: function() {
return new ProductsRequest('GetProductCategoriesForSKU', {
MarketplaceId: { name: 'MarketplaceId', required: true},
SellerSKU: { name: 'SellerSKU', required: true}
});
},
/**
* Same as above, except that it uses a MarketplaceId and an ASIN to
*uniquely identify a product.
*/
GetProductCategoriesForASIN: function() {
return new ProductsRequest('GetProductCategoriesForASIN', {
MarketplaceId: { name: 'MarketplaceId', required: true},
ASIN: { name: 'ASIN', required: true}
});
}
};