Zuora Request Service
Zuora Request Service is a promise based library that facilitates interaction with the zuora http API.
This service provides several conveniences for using the zuora api:
- Automatically append auth and content type headers to every out going request,
- Manages all the URL's for the zuora api.
- Intercepts errors returned from zuora as 200's and automatically rethrows them as proper errors.
- Configure requests to retry under specific conditions.
- Can handle logging your interactions out with zuora.
- Configurable time out feature on your requests to keep your processes from hanging if zuora becomes unresponsive.
API
The setup method should be invoked when your server is being initialized with these arguments:
- keyId: your zuora supplied apiAccessKeyId
- accessKey: your zuora supplied apiSecretAccessKey
- isProd: boolean - boolean indicating if the code is in production environment or not. Controls the base URL for zuora.
- logger: optional - an object with a .info function for logging.
const zuora = require('zuora-service');
zuora.setup('dummyUser', 'dummyPassword', false, yourLogger);
Every method accepts a request options object that can be used to configure the out going request to your needs.
request options object properties:
- body: object - required for requests that need to send a message body, PUT/POST calls.
- queryString: object - optional, pass key value pairs on this object to be added to your http requests
- timeout: number - optional, override timeout(ms). Default timeout is 25000 ms.
- maxTries: number - optional*, specify the maximum number of retry attempts.
- errCond: function - optional*, function that accepts an error object for evaluation and returns a boolean indicating if the request should be retried or not.
** maxTries and errCond cannot be used independently of each other. I.E if you set a max tries and do not pass a function to errCond no retries will be attempted.
const requestOptions = {
body: {
some: 'amazing payload'
},
queryString: {
description: 'some description',
associatedObjectType: 'Account',
associatedObjectKey: 'someKey'
},
timeout: 30000,
maxTries: 15,
errCond: error => error.status !== 200
};
- Accounting
- codes
- list:
zuora.api().accounting.codes.list(requestOptions)
- create:
zuora.api().accounting.codes.create(requestOptions)
- delete:
zuora.api().accounting.codes.delete(acId, requestOptions)
- query:
zuora.api().accounting.codes.query(acId, requestOptions)
- update:
zuora.api().accounting.codes.update(acId, requestOptions)
- activate:
zuora.api().accounting.codes.activate(acId, requestOptions)
- deactivate:
zuora.api().accounting.codes.deactivate(acId, requestOptions)
- periods
- list:
zuora.api().accounting.periods.list(requestOptions)
- create:
zuora.api().accounting.periods.create(requestOptions)
- delete:
zuora.api().accounting.periods.delete(apId, requestOptions)
- find:
zuora.api().accounting.periods.find(apId, requestOptions)
- update:
zuora.api().accounting.periods.update(apId, requestOptions)
- close:
zuora.api().accounting.periods.close(apId, requestOptions)
- pending:
zuora.api().accounting.periods.pending(apId, requestOptions)
- reopen:
zuora.api().accounting.periods.reopen(apId, requestOptions)
- runTrial:
zuora.api().accounting.periods.runTrial(apId, requestOptions)
- accounts
- create:
zuora.api().accounts.create(requestOptions)
- find:
zuora.api().accounts.find(accountKey, requestOptions)
- update:
zuora.api().accounts.update(accountKey, requestOptions)
- summary:
zuora.api().accounts.summary(accountKey, requestOptions)
- actions
- amend:
zuora.api().actions.amend(requestOptions)
- create:
zuora.api().actions.create(requestOptions)
- delete:
zuora.api().actions.delete(requestOptions)
- execute:
zuora.api().actions.execute(requestOptions)
- generate:
zuora.api().actions.generate(requestOptions)
- query:
zuora.api().actions.query(requestOptions)
- queryMore:
zuora.api().actions.queryMore(requestOptions)
- subscribe:
zuora.api().actions.subscribe(requestOptions)
- update:
zuora.api().actions.update(requestOptions)
- amendments
- bySubscriptionId:
zuora.api().amendments.bySubscriptionId(subscriptionId, requestOptions)
- byAmendmentKey:
zuora.api().amendments.byAmendmentKey(amendmentKey, requestOptions)
- attachments
- add:
zuora.api().attachments.add(requestOptions)
- delete:
zuora.api().attachments.delete(attachmentId, requestOptions)
- find:
zuora.api().attachments.find(attachmentId, requestOptions)
- update:
zuora.api().attachments.update(attachmentId, requestOptions)
- list:
zuora.api().attachments.list(type, key, requestOptions)
- catalog
- list:
zuora.api().catalog.list(requestOptions)
- chargeRevenueSummaries
- byChargeId:
zuora.zpi().chargeRevenueSummaries.byChargeId(chargeKey, requestOptions)
- byCrsNumber:
zuora.zpi().chargeRevenueSummaries.byCrsNumber(crsNumber, requestOptions)
- connections
- connect:
zuora.api().connections.connect(requestOptions)
- getFiles
- find:
zuora.api().getFiles.find(fileId, requestOptions)
- hmacSignatures
- create:
zuora.api().hmacSignatures.create(requestOptions)
- hostedPages
- list:
zuora.api().hostedPages.list(requestOptions)
- journal
- entries
- create:
zuora.api().journal.entries.create(requestOptions)
- findByJournalRun:
zuora.api().journal.entries.findByJournalRun(jrNumber, requestOptions)
- delete:
zuora.api().journal.entries.delete(jrNumber, requestOptions)
- find:
zuora.api().journal.entries.find(jeNumber, requestOptions)
- update:
zuora.api().journal.entries.update(jeNumber, requestOptions)
- cancel:
zuora.api().journal.entries.cancel(jeNumber, requestOptions)
- runs
- create:
zuora.api().journal.runs.create(requestOptions)
- delete:
zuora.api().journal.runs.delete(jrNumber, requestOptions)
- find:
zuora.api().journal.runs.find(jrNumber, requestOptions)
- cancel:
zuora.api().journal.runs.cancel(jrNumber, requestOptions)
- massUpdater
- bulk:
zuora.api().massUpdater.bulk(requestOptions)
- find:
zuora.api().massUpdater.find(bulkKey, requestOptions)
- stop:
zuora.api().massUpdater.stop(bulkKey, requestOptions)
- notificationHistory
- callout:
zuora.api().notificationHistory.callout(requestOptions)
- email:
zuora.api().notificationHistory.email(requestOptions)
- operations
- paymentMethods
- create:
zuora.api().paymentMethods.create(requestOptions)
- find:
zuora.api().paymentMethods.find(accountKey, requestOptions)
- update:
zuora.api().paymentMethods.update(paymentMethodId, requestOptions)
- delete:
zuora.api().paymentMethods.delete(paymentMethodId, requestOptions)
- quotesDocument
- document:
zuora.api().quotesDocument.document(requestOptions)
- revenue
- events
- find:
zuora.api().revenue.events.find(rsNumber, requestOptions)
- details:
zuora.api().revenue.events.details(eventNumber, requestOptions)
- items
- getBySummary:
zuora.api().revenue.items.getBySummary(crsNumber, requestOptions)
- getByEvent:
zuora.api().revenue.items.getByEvent(eventNumber, requestOptions)
- updateByEvent:
zuora.api().revenue.items.updateByEvent(eventNumber, requestOptions)
- getBySchedule:
zuora.api().revenue.items.getBySchedule(rsNumber, requestOptions)
- updateBySchedule:
zuora.api().revenue.items.updateBySchedule(rsNumber, requestOptions)
- rules
- find:
zuora.api().revenue.rules.find(chargeKey, requestOptions)
- schedules
- getByAdjustment:
zuora.api().revenue.schedules.getByAdjustment(invoiceItemAdjId, requestOptions)
- createAdjustment:
zuora.api().revenue.schedules.createAdjustment(invoiceItemAdjId, requestOptions)
- createAdjustmentByRange:
zuora.api().revenue.schedules.createAdjustmentByRange(invoiceItemAdjId, requestOptions)
- getByInvoiceItem:
zuora.api().revenue.schedules.getByInvoiceItem(invoiceItemId, requestOptions)
- createForInvoiceItem:
zuora.api().revenue.schedules.createForInvoiceItem(invoiceItemId, requestOptions)
- createForInvoiceItemByRange:
zuora.api().revenue.schedules.createForInvoiceItemByRange(invoiceItemId, requestOptions)
- getBySubscription:
zuora.api().revenue.schedules.getBySubscription(chargeKey, requestOptions)
- createBySubscription:
zuora.api().revenue.schedules.createBySubscription(chargeKey, requestOptions)
- delete:
zuora.api().revenue.schedules.delete(rsNumber, requestOptions)
- getDetails:
zuora.api().revenue.schedules.getDetails(rsNumber, requestOptions)
- update:
zuora.api().revenue.schedules.update(rsNumber, requestOptions)
- distributeByPeriods:
zuora.api().revenue.schedules.distributeByPeriods(rsNumber, requestOptions)
- distributeByDate:
zuora.api().revenue.schedules.distributeByDate(rsNumber, requestOptions)
- distributeByRange:
zuora.api().revenue.schedules.distributeByRange(rsNumber, requestOptions)
- rsaSignatures
- generate:
zuora.api().rsaSignatures.generate(requestOptions)
- decrypt:
zuora.api().rsaSignatures.decrypt(requestOptions)
- settings
- startDate:
zuora.api().settings.startDate(requestOptions)
- subscriptions
- create:
zuora.api().subscriptions.create(requestOptions)
- getByAccount:
zuora.api().subscriptions.getByAccount(accountKey, requestOptions)
- preview:
zuora.api().subscriptions.preview(requestOptions)
- getByKey:
zuora.api().subscriptions.getByKey(subscriptionKey, requestOptions)
- update:
zuora.api().subscriptions.update(subscriptionKey, requestOptions)
- cancel:
zuora.api().subscriptions.cancel(subscriptionKey, requestOptions)
- renew:
zuora.api().subscriptions.renew(subscriptionKey, requestOptions)
- resume:
zuora.api().subscriptions.resume(subscriptionKey, requestOptions)
- suspend:
zuora.api().subscriptions.suspend(subscriptionKey, requestOptions)
- transactions
- getInvoices:
zuora.api().transactions.getInvoices(accountKey, requestOptions)
- getPayments:
zuora.api().transactions.getPayments(accountKey, requestOptions)
- usage
- create:
zuora.api().usage.create(requestOptions)
- find:
zuora.api().usage.find(accountKey, requestOptions)
- object -- the 'object' portion of the service API allows you to perform common CRUD operations on zuora objects
- find:
zuora.api().object.find('accounting-code', id, requestOptions)
- create:
zuora.api().object.create('accounting-code', requestOptions)
- delete:
zuora.api().object.delete('accounting-code', id, requestOptions)
- update:
zuora.api().object.update('accounting-code', id, requestOptions)