README
@nutriot/bandcamp-api
Library for the Bandcamp API, written in TypeScript
Installation
npm install --save @nutriot/bandcamp-api
Prerequisites
In order to make API calls, you need to register to get client ID and secret.
Note: It's probably a bad idea to use this library in the front end, as your credentials will be exposed to the world!
Usage
Import and initialize the Bandcamp module
import Bandcamp from '@nutriot/bandcamp-api';
// Alternatively, you can omit client ID and secret and set the
// environment variables BANDCAMP_CLIENT_ID and BANDCAMP_CLIENT_SECRET
const api = new Bandcamp({
id: '<YOUR_CLIENT_ID>',
secret: '<YOUR_CLIENT_SECRET>'
});
Methods
getClientCredentials()
Usage: getClientCredentials()
Returns access token and refresh token. Both expire after one hour.
Example
(async () => {
const credentials = await api.getClientCredentials();
})();
refreshToken()
Usage: refreshToken(refreshToken)
Access tokens expire after one hour. You can use the refresh token to get a new access token.
Example
(async () => {
const refreshToken = await api.refreshToken(credentials.refresh_token);
})();
getMyBands()
Usage: getMyBands(accessToken)
Returns a list of the bands you have access to (either through artist accounts, label accounts, or partnerships).
Example
(async () => {
const myBands = await api.getMyBands(credentials.access_token);
})();
getSalesReport()
Usage: getSalesReport(accessToken, requestBody)
Returns your sales reports for a label, band, or artist
Example
(async () => {
const salesReports = await api.getSalesReport(credentials.access_token, {
"band_id": 1633770804,
"member_band_id": 1925197437,
"start_time": "2015-12-31 23:59:59",
"end_time": "2016-01-31 00:00:00"
});
})();
getMerchDetails()
Usage: getMerchDetails(accessToken, requestBody)
Returns merchandise a label, band, or artist has available for purchase on Bandcamp
Example
(async () => {
const salesReports = await api.getMerchDetails(credentials.access_token, {
"band_id": 1633770804,
"start_time": "2015-12-31",
"end_time": "2016-01-01",
"member_band_id": 1925197437,
"package_ids": [175167691, 1154611570]
});
})();
getShippingOriginDetails()
Usage: getShippingOriginDetails(accessToken, requestBody)
Returns the shipping origins for artists and labels linked to your account on Bandcamp
Example
(async () => {
const salesReports = await api.getShippingOriginDetails(credentials.access_token);
})();
getOrders()
Usage: getOrders(accessToken, requestBody)
Returns merchandise orders placed with a band or label
Example
(async () => {
const orders = await api.getOrders(credentials.access_token, {
"band_id": 1633770804
});
})();
updateShipped()
Usage: updateShipped(accessToken, itemsArray)
Updates shipped/unshipped status of merchandise orders
Example
(async () => {
const response = await api.updateShipped(credentials.access_token, [
{
"id": 1925197437,
"id_type": "p",
"shipped": true,
"notification_message": "Your items have shipped!",
"ship_date": "2016-02-29 12:59:59",
"carrier": "UPS",
"tracking_code": "VM13243546US"
},
{
"id" : 4261657553,
"id_type": "s",
"shipped": false
}
]);
})();
markDateRangeAsShipped()
Usage: markDateRangeAsShipped(accessToken, requestBody)
Updates shipped/unshipped status of merchandise orders within given date range
Example
(async () => {
const response = await api.markDateRangeAsShipped(credentials.access_token, {
"band_id": 2293737955,
"member_band_id": 4261657553,
"start_time": "2015-12-31 23:59:59",
"end_time": "2016-01-31 00:00:00",
"email_notifications": true
});
})();
updateQuantities()
Usage: updateQuantities(accessToken, itemsArray)
Updates merch items' stock quantities (inventory levels)
Note: Because of the inherent race condition, this method requires you pass in a quantity_sold
parameter as well as quantity_available
.
Example
(async () => {
const response = await api.updateQuantities(credentials.access_token, [
{
"id_type" : "p",
"id" : 3387163565,
"quantity_available" : 365,
"quantity_sold": 57,
"origin_id": 12345698
},
{
"type" : "o",
"id" : 6789054322,
"quantity_available" : 45,
"quantity_sold": 12,
"origin_id": 12345678
}
]);
})();
updateSKU()
Usage: updateSKU(accessToken, itemsArray)
Updates merch item stock-keeping unit (SKU)
Example
(async () => {
const response = await api.updateSKU(credentials.access_token, [
{
"id": 175167691,
"id_type": "p",
"sku": "AFIB"
},
{
"id": 1154611570,
"id_type": "o",
"sku": "AFIB-XL"
}
]);
})();
License
This work is licensed under The MIT License