recurly-js
Version:
Library for accessing the api for the Recurly recurring billing service.
406 lines (390 loc) • 13.8 kB
JavaScript
;
var js2xmlparser = require('js2xmlparser');
var Client = require('./client');
var utils = require('./utils');
var router = require('./routes/');
module.exports = function(config) {
var routes = router.routes(config.API_VERSION ? config.API_VERSION : '2');
var t = Client.create(config);
this.accounts = {
list: function(callback, filter) {
t.request(utils.addQueryParams(routes.accounts.list, filter), callback);
},
get: function(accountcode, callback) {
t.request(utils.addParams(routes.accounts.get, {
account_code: accountcode
}), callback);
},
create: function(details, callback) {
t.request(routes.accounts.create, callback, js2xmlparser('account', details));
},
update: function(accountcode, details, callback) {
t.request(utils.addParams(routes.accounts.update, {
account_code: accountcode
}), callback, js2xmlparser('account', details));
},
close: function(accountcode, callback) {
t.request(utils.addParams(routes.accounts.close, {
account_code: accountcode
}), callback);
},
reopen: function(accountcode, callback) {
t.request(utils.addParams(routes.accounts.reopen, {
account_code: accountcode
}), callback);
},
notes: function(accountcode, callback) {
t.request(utils.addParams(routes.accounts.notes, {
account_code: accountcode
}), callback);
}
};
this.adjustments = {
list: function(accountcode, callback) {
t.request(utils.addParams(routes.adjustments.list, {
account_code: accountcode
}), callback);
},
get: function(uuid, callback) {
t.request(utils.addParams(routes.adjustments.get, {
uuid: uuid
}), callback);
},
create: function(accountcode, details, callback) {
t.request(utils.addParams(routes.adjustments.create, {
account_code: accountcode
}), callback, js2xmlparser('adjustment', details));
},
remove: function(uuid, callback) {
t.request(utils.addParams(routes.adjustments.remove, {
uuid: uuid
}), callback);
}
};
this.billingInfo = {
update: function(accountcode, details, callback) {
t.request(utils.addParams(routes.billingInfo.update, {
account_code: accountcode
}), callback, js2xmlparser('billing_info', details));
},
get: function(accountcode, callback) {
t.request(utils.addParams(routes.billingInfo.get, {
account_code: accountcode
}), callback);
},
remove: function(accountcode, callback) {
t.request(utils.addParams(routes.billingInfo.remove, {
account_code: accountcode
}), callback);
}
};
this.coupons = {
list: function(callback, filter) {
t.request(utils.addQueryParams(routes.coupons.list, filter), callback);
},
get: function(couponcode, callback) {
t.request(utils.addParams(routes.coupons.get, {
coupon_code: couponcode
}), callback);
},
create: function(details, callback) {
t.request(routes.coupons.create, callback, js2xmlparser('coupon', details));
},
deactivate: function(couponcode, callback) {
t.request(utils.addParams(routes.coupons.deactivate, {
coupon_code: couponcode
}), callback);
}
};
this.couponRedemption = {
redeem: function(couponcode, details, callback) {
t.request(utils.addParams(routes.couponRedemption.redeem, {
coupon_code: couponcode
}), callback, js2xmlparser('redemption', details));
},
get: function(accountcode, callback) {
t.request(utils.addParams(routes.couponRedemption.get, {
account_code: accountcode
}), callback);
},
getAll: function(accountcode, callback) {
t.request(utils.addParams(routes.couponRedemption.getAll, {
account_code: accountcode
}), callback);
},
remove: function(accountcode, callback) {
t.request(utils.addParams(routes.couponRedemption.remove, {
account_code: accountcode
}), callback);
},
getByInvoice: function(invoicenumber, callback) {
t.request(utils.addParams(routes.couponRedemption.getByInvoice, {
invoice_number: invoicenumber
}), callback);
},
getAllByInvoice: function(invoicenumber, callback) {
t.request(utils.addParams(routes.couponRedemption.getAllByInvoice, {
invoice_number: invoicenumber
}), callback);
}
};
this.invoices = {
list: function(callback, filter) {
t.request(utils.addQueryParams(routes.invoices.list, filter), callback);
},
listByAccount: function(accountcode, callback, filter) {
t.request(
utils.addParams(
utils.addQueryParams(routes.invoices.listByAccount, filter), {
account_code: accountcode
}), callback)
},
get: function(invoicenumber, callback) {
t.request(utils.addParams(routes.invoices.get, {
invoice_number: invoicenumber
}), callback);
},
create: function(accountcode, details, callback) {
t.request(utils.addParams(routes.invoices.create, {
account_code: accountcode
}), callback, js2xmlparser('invoice', details));
},
preview: function(accountcode, callback) {
t.request(utils.addParams(routes.invoices.preview, {
account_code: accountcode
}), callback);
},
refundLineItems: function(invoicenumber, details, callback) {
t.request(utils.addParams(routes.invoices.refundLineItems, {
invoice_number: invoicenumber
}), callback, js2xmlparser('invoice', details));
},
refundOpenAmount: function(invoicenumber, details, callback) {
t.request(utils.addParams(routes.invoices.refundOpenAmount, {
invoice_number: invoicenumber
}), callback, js2xmlparser('invoice', details));
},
markSuccessful: function(invoicenumber, callback) {
t.request(utils.addParams(routes.invoices.markSuccessful, {
invoice_number: invoicenumber
}), callback);
},
markFailed: function(invoicenumber, callback) {
t.request(utils.addParams(routes.invoices.markFailed, {
invoice_number: invoicenumber
}), callback);
},
enterOfflinePayment: function(invoicenumber, details, callback) {
t.request(utils.addParams(routes.invoices.enterOfflinePayment, {
invoice_number: invoicenumber
}), callback, js2xmlparser('transaction', details));
},
exportPdf: function(invoicenumber, callback) {
// TOOO: Remove this function after introducing deprecated notice
t.request(utils.addParams(routes.invoices.retrievePdf, {
invoice_number: invoicenumber
}), callback);
},
retrievePdf: function(invoicenumber, callback) {
t.request(utils.addParams(routes.invoices.retrievePdf, {
invoice_number: invoicenumber
}), callback);
}
};
this.plans = {
list: function(callback, filter) {
t.request(utils.addQueryParams(routes.plans.list, filter), callback);
},
get: function(plancode, callback) {
t.request(utils.addParams(routes.plans.get, {
plan_code: plancode
}), callback);
},
create: function(details, callback) {
t.request(routes.plans.create, callback, js2xmlparser('plan', details));
},
update: function(plancode, details, callback) {
t.request(utils.addParams(routes.plans.update, {
plan_code: plancode
}), callback, js2xmlparser('plan', details));
},
remove: function(plancode, callback) {
t.request(utils.addParams(routes.plans.remove, {
plan_code: plancode
}), callback);
}
};
this.planAddons = {
list: function(plancode, callback, filter) {
t.request(utils.addParams(utils.addQueryParams(routes.planAddons.list, filter), {
plan_code: plancode
}), callback);
},
get: function(plancode, addoncode, callback) {
t.request(utils.addParams(routes.planAddons.get, {
plan_code: plancode,
addon_code: addoncode
}), callback);
},
create: function(plancode, details, callback) {
t.request(utils.addParams(routes.planAddons.create, {
plan_code: plancode
}), callback, js2xmlparser('add_on', details));
},
update: function(plancode, addoncode, details, callback) {
t.request(utils.addParams(
routes.planAddons.update, {
plan_code: plancode,
add_on_code: addoncode
}),
callback, js2xmlparser('add_on', details));
},
remove: function(plancode, addoncode, callback) {
t.request(utils.addParams(routes.planAddons.remove, {
plan_code: plancode,
add_on_code: addoncode
}), callback);
}
};
this.purchases = {
create: function(details, callback) {
t.request(routes.purchases.create, callback, js2xmlparser('purchase', details));
}
};
this.subscriptions = {
list: function(callback, filter) {
t.request(utils.addQueryParams(routes.subscriptions.list, filter), callback);
},
listByAccount: function(accountCode, callback, filter) {
t.request(
utils.addParams(
utils.addQueryParams(routes.subscriptions.listByAccount, filter), {
account_code: accountCode
}),
callback);
},
get: function(uuid, callback) {
t.request(utils.addParams(routes.subscriptions.get, {
uuid: uuid
}), callback);
},
create: function(details, callback) {
t.request(routes.subscriptions.create, callback, js2xmlparser('subscription', details));
},
preview: function(details, callback) {
t.request(routes.subscriptions.preview, callback, js2xmlparser('subscription', details));
},
update: function(uuid, details, callback) {
t.request(utils.addParams(routes.subscriptions.update, {
uuid: uuid
}), callback, js2xmlparser('subscription', details));
},
updateNotes: function(uuid, details, callback) {
t.request(utils.addParams(routes.subscriptions.updateNotes, {
uuid: uuid
}), callback, js2xmlparser('subscription', details));
},
updatePreview: function(uuid, details, callback) {
t.request(utils.addParams(routes.subscriptions.updatePreview, {
uuid: uuid
}), callback, js2xmlparser('subscription', details));
},
cancel: function(uuid, callback) {
t.request(utils.addParams(routes.subscriptions.cancel, {
uuid: uuid
}), callback);
},
reactivate: function(uuid, callback) {
t.request(utils.addParams(routes.subscriptions.reactivate, {
uuid: uuid
}), callback);
},
terminate: function(uuid, refundType, callback) {
t.request(utils.addParams(routes.subscriptions.terminate, {
uuid: uuid,
refund_type: refundType
}), callback);
},
postpone: function(uuid, nextRenewalDate, callback) {
t.request(utils.addParams(routes.subscriptions.postpone, {
uuid: uuid,
next_renewal_date: nextRenewalDate
}), callback);
}
};
this.transactions = {
list: function(callback, filter) {
t.request(utils.addQueryParams(routes.transactions.list, filter), callback);
},
listByAccount: function(accountCode, callback, filter) {
t.request(
utils.addParams(
utils.addQueryParams(routes.transactions.listByAccount, filter), {
account_code: accountCode
}),
callback);
},
get: function(id, callback) {
t.request(utils.addParams(routes.transactions.get, {
'id': id
}), callback);
},
create: function(details, callback) {
t.request(routes.transactions.create, callback, js2xmlparser('transaction', details));
},
refund: function(id, callback, amount) {
var route = utils.addParams(routes.transactions.refund, {
id: id
});
if (amount) {
route = utils.addQueryParams(route, {
amount_in_cents: amount
});
}
t.request(route, callback);
}
};
this.usageRecords = {
list: function(subscription_uuid, add_on_code, callback, filter) {
t.request(utils.addParams(utils.addQueryParams(routes.usageRecords.list, filter), {
subscription_uuid: subscription_uuid,
add_on_code: add_on_code
}), callback);
},
lookup: function(subscription_uuid, add_on_code, usage_id, callback) {
t.request(utils.addParams(routes.usageRecords.lookup, {
subscription_uuid: subscription_uuid,
add_on_code: add_on_code,
usage_id: usage_id
}), callback);
},
log: function(subscription_uuid, add_on_code, details, callback) {
t.request(utils.addParams(routes.usageRecords.log, {
subscription_uuid: subscription_uuid,
add_on_code: add_on_code
}), callback, js2xmlparser('usage', details));
},
update: function(subscription_uuid, add_on_code, usage_id, details, callback) {
t.request(utils.addParams(routes.usageRecords.update, {
subscription_uuid: subscription_uuid,
add_on_code: add_on_code,
usage_id: usage_id
}), callback, js2xmlparser('usage', details));
},
delete: function(subscription_uuid, add_on_code, usage_id, callback) {
t.request(utils.addParams(routes.usageRecords.delete, {
subscription_uuid: subscription_uuid,
add_on_code: add_on_code,
usage_id: usage_id
}), callback);
}
};
this.api = function(options, callback) {
var route = [options.url, options.method || 'GET', options.headers];
var body;
if (options.bodyRoot && options.body) {
body = js2xmlparser(options.bodyRoot, options.body)
}
t.request(route, callback, body);
}
};