Files
ebay_api/api/controllers/inventoryController.js

65 lines
4.6 KiB
JavaScript

import fetch from "node-fetch";
export const addItem = async (req, res) => {
const itemDetails = req.body;
// hardcoded user token - will be expired when we come back and we need to figure out to cache these while we make calls
const token = "v^1.1#i^1#r^0#I^3#f^0#p^3#t^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"
// Constructing the payload for the Inventory API
const offerPayload = {
sku: itemDetails.sku,
marketplaceId: itemDetails.marketplaceId,
format: itemDetails.format,
listingDescription: itemDetails.listingDescription,
availableQuantity: itemDetails.availableQuantity,
categoryId: itemDetails.categoryId,
listingPolicies: {
paymentPolicyId: itemDetails.listingPolicies.paymentPolicyId,
fulfillmentPolicyId: itemDetails.listingPolicies.fulfillmentPolicyId,
returnPolicyId: itemDetails.listingPolicies.returnPolicyId,
},
pricingSummary: {
price: {
currency: itemDetails.pricingSummary.price.currency,
value: itemDetails.pricingSummary.price.value,
},
},
merchantLocationKey: itemDetails.merchantLocationKey,
quantityLimitPerBuyer: itemDetails.quantityLimitPerBuyer,
};
try {
const response = await fetch(
"https://api.ebay.com/sell/inventory/v1/offer",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Language": "en-US",
"Authorization": `Bearer ${token}`,
},
body: JSON.stringify(offerPayload),
}
);
console.log(response)
if (!response.ok) {
const errorBody = await response.text(); // Get the response body as text
console.error(`eBay API responded with status ${response.status}: ${errorBody}`);
throw new Error(`eBay API responded with status ${response.status}: ${errorBody}`);
}
const responseData = await response.json();
res.json({ success: true, data: responseData });
} catch (error) {
console.error("Error adding item to eBay via Inventory API:", error);
console.log(error.message);
res.status(500).json({
success: false,
message: "Failed to add item to eBay via Inventory API",
error: error.message,
});
}
};