This is a util developed to help generating a valid Json Web Token for the use case of requesting mercari v2 API.
The module has an indirect dependency to NodeJS v10 Crypto API, so please make sure your Node version is v10 or higher
npm install generate-mercari-jwt
import generateMercariJwt from "generate-mercari-jwt";
import axios from "axios";
generateMercariJwt("https://api.mercari.jp/v2/entities:search", "POST").then((jwt) => {
return axios.post("https://api.mercari.jp/v2/entities:search", {
// how many items you prefer to retrieve
"pageSize": 10,
// This field is required and should not be empty
"searchSessionId": "just_dont_let_it_be_empty",
// filter options, fieldNames below all speak for themselves
"searchCondition": {
"keyword": "",
"excludeKeyword": "",
"sort": "SORT_SCORE",
"order": "ORDER_DESC",
"status": [
"STATUS_ON_SALE"
],
"sizeId": [],
"categoryId": [],
"brandId": [],
"sellerId": [],
"priceMin": 10000,
"priceMax": 20000,
"itemConditionId": [
1
],
"shippingPayerId": [
2
],
"shippingFromArea": [],
"shippingMethod": [],
"colorId": [],
"hasCoupon": false,
"attributes": [],
"itemTypes": [],
"skuIds": []
},
// TODO what is the enum for this field?
"serviceFrom": "suruga",
"withItemBrand": true,
"withItemSize": false,
"withItemPromotions": true,
"withItemSizes": true,
"withShopname": false
}, {
headers: {
// this header is required
"X-Platform": "web",
"Content-Type": "application/json",
"Accept": "application/json",
"DPoP": jwt
}
})
}).then(res => {
console.log(res.data);
});